tengo dos tablas: Vehiculos (catalogo de vehiculos) y Bitacora (control de gastos de los vehiculos)
En la tabla vehiculos tengo un campo que es la llave principal: NumeroVehiculo y este tambien lo grabo en un campo NumeroVehiculo (tipo cadenas de 3) de la tabla Bitacora (que es donde llevo todos los servicios y reparaciones que se hacen a los vehiculos), en la tabla bitacora tengo un indice con los campos: NumeroVehiculo y Fecha, esto para que me ordene todos los vehiculos de acuerdo a la fecha.
cuando trato de imprimir en Quickreport, llamo a un formulario llamado FrmImprimirVehiculos donde tengo un componente DBLookupComboBox donde enlazo la tabla vehiculos, en su propiedad ListSource=DM.DSVehiculos, ListField=NumeroVehiculo y KeyField=NumeroVehiculo, ademas tengo otro componente TEdit, con la finalidad de que tenga la opcion de seleccionar el vehiculo directamente desde DBLookupComboBox o desde el TEdit (aqui escribiria el numero del vehiculo).
Bueno mi problema es que cuando ejecuto el programa y selecciono algun vehiculo, siempre me toma el primer vehiculo, por ejemplo si quiero imprimir el vehiculo='020' me toma el '017' o si quiero imprimir el '099', me toma el '017' , tengo que seleccionar dos veces (y cargar el Quickreport) antes de que me acepte el vehiculo que quiero. En el QuickReport imprimo datos de la tabla Vehiculos en la cabecera del reporte y el cuerpo corresponde a la tabla Bitacora. de esta forma ejecuto el filtro..
Código Delphi
[-]
procedure TFrmImprimirVehiculo.SpeedButton1Click(Sender: TObject);
var Filtro:string;
begin
dm.TbBitacora.Active:=True;
dm.TbBitacora.Filter := '';
dm.TbBitacora.Filtered := False;
If (DBNumeroVehiculo.Text <> 'Todos')
then
Begin
If Filtro > '' then
Filtro := Filtro + ' And ' ;
Filtro := Filtro + ' NumeroVehiculo = ' + dm.TbVehiculos.FieldByname('NumeroVehiculo').AsString;
End;
dm.TbBitacora.Filter := Filtro;
dm.TbBitacora.Filtered := True;
FrmReporte1.QuickRep1.Preview;
end;
si hay alguna otra forma de mejorar los filtros les agradecere...
