Ver Mensaje Individual
  #1  
Antiguo 26-09-2006
Avatar de Goyo
Goyo Goyo is offline
Miembro
 
Registrado: feb 2006
Posts: 89
Reputación: 19
Goyo Va por buen camino
Red face filtro entre dos tablas en tiempo de ejecucion

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...

Última edición por Goyo fecha: 26-09-2006 a las 17:32:44.
Responder Con Cita