Cita:
Empezado por gorsan
El siguiente codigo (retocado minimamente respecto al que me has pasado) arroja cero registros y deberia haber alguno:
Código SQL [-]procedure TForm1.FormShow(Sender: TObject);
var
Dia: String;
begin Dia:=DateTimeToStr(Now); with DM.IBQuery1 do begin if Active=True then Active:=False;
UnPrepare;
SQL.Clear;
SQL.Add('SELECT DNI1, LETRA_NIF, APELLIDO_1, APELLIDO_2, NOMBRE, MATRICULA, CENTRO, OBJETO, DNI2, DIA_SALIDA, DIA_ENTRADA');
SQL.Add('FROM EXTERNOS_DNI, MOV_EXTERNOS_DNI');
SQL.Add('WHERE DNI1=DNI2 AND DIA_ENTRADA=?DIA_ENTRADA'); {en lugar de ? debe haber dos puntos}
SQL.Add('ORDER BY DNI1');
Params[0].AsString:=Dia;
Prepare;
if Active=False then Active:=True;
Open;
end;
end;
Creo que saber lo que pasa pero no como arreglarlo. La variable dia es un TDateTime convertido a cadena. Por tanto tiene el siguiente formato:
"01/01/2001 10:00:00" y claro, no coincide por el añadido de la hora. Lo suyo seria eliminar de alguna manera (?) el campo hora de la cadena. ¿Pero como?
Gracias de antemano.
|
Yo de ti lo almacenaría como un campo Date, pero para el caso que nos ocupa podría valerte los siguiente :
Código Delphi
[-]Dia := 'La_Fecha_Que_Sea%'
UnPrepare;
SQL.Clear;SQL.Add('SELECT DNI1, LETRA_NIF, APELLIDO_1, APELLIDO_2, NOMBRE, MATRICULA, CENTRO, OBJETO, DNI2, DIA_SALIDA, DIA_ENTRADA');
SQL.Add('FROM EXTERNOS_DNI, MOV_EXTERNOS_DNI');
SQL.Add('WHERE DNI1=DNI2 AND DIA_ENTRADA like :DIA_ENTRADA');
SQL.Add('ORDER BY DNI1');
Params[0].AsString:=Dia;
Prepare;
if Active=False then
Active:=True;
Open;
Un saúdo