PDA

Ver la Versión Completa : Consulta para un reporte


jeysi
02-01-2007, 02:27:36
hola a todos!!!

Estoy un pequeño problema y ojala me pudieran dar algún consejo para solucionarlo, describiré cual es mi situación.....
Tengo una base de datos en Access, la cual contiene las siguientes tablas

prestamos: con los campos folioPrestamo, claveAlumno, folioEquipo, claveMaestro y fecha

la otra tabla se llama equipo: con los campos id_equipo, nombre y marca

Tengo que hacer un reporte que me muestre el nombre del equipo, y la fecha en que se realizó el préstamo, esto es de acuerdo a las fechas que introduce el usurio (fecha de inicio y fecha final).

En si mi problema es que no se como hacer la consulta para que me pueda mostrar esos datos ya que necesito relacionar las dos tablas

Intente hacer lo siguiente, pero no me funcionó


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
procedure TrepPres.consultas();
begin
moduloDatos.ADOQuery1.Close;
moduloDatos.ADOQuery1.Parameters.AddParameter.Name:='f1';
moduloDatos.ADOQuery1.Parameters.AddParameter.Name:='f2';
moduloDatos.ADOQuery1.Parameters.ParamByName('f1').Value:=fi;
moduloDatos.ADOQuery1.Parameters.ParamByName('f2').Value :=ff;
moduloDatos.ADOQuery1.SQL.Text:='Select equipo.nombre from (select * from prestamos where (fecha >=:f1)AND (fecha<=:f2)) equipo where equipo.id=Id_equipo order by nombre';
moduloDatos.ADOQuery1.Active:=true;
moduloDatos.ADOQuery1.ExecSQL;
moduloDatos.ADOQuery1.Open;
reporPrestamos.QRDBText1.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText2.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText3.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText1.DataField:='folioe';
reporPrestamos.QRDBText2.DataField:='fecha';
reporPrestamos.QRDBText3.DataField:='hdevolucion';
reporPrestamos.Preview;
end;





Les agradeceré mucho su ayuda... Gracias:)

Lepe
02-01-2007, 13:12:34
Está un poco liado el código, seguro que por las pruebas que has hecho, inténtalo así:


procedure TrepPres.consultas();
begin
moduloDatos.ADOQuery1.Close;
moduloDatos.ADOQuery1.SQL.Text:='Select equipo.nombre, pestamos.fecha from prestamos inner join equipo on equipo.idequipo = prestamos.folioequipo where (prestamos.fecha between f1 AND :f2) order by nombre';
moduloDatos.ADOQuery1.Parameters.ParamByName('f1').Value:=fi;
moduloDatos.ADOQuery1.Parameters.ParamByName('f2').Value :=ff;

moduloDatos.ADOQuery1.Open;
reporPrestamos.QRDBText1.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText2.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText3.DataSet:=moduloDatos.ADOQuery1;
reporPrestamos.QRDBText1.DataField:='folioe';
reporPrestamos.QRDBText2.DataField:='fecha';
reporPrestamos.QRDBText3.DataField:='hdevolucion';
reporPrestamos.Preview;
end;

No sé bien la relación entre equipo y prestamos, lo he hecho por los campos folioequipo e idequipo, modifícalo si no es así.

Saludos

jeysi
02-01-2007, 20:53:38
hola
Gracias Lepe. Le hice algunas modificaciones a tu respuesta y ya quedó lista la consulta.

Saludos