Ver la Versión Completa : Consulta en un campo tipo fecha
Hola!
Me estoy iniciando en el uso de SQL y necesito saber como puedo hacer una consulta con un campo tipo fecha por ejemplo se que cuando tengo un campo tipo numerico y haga lo siguiente usando tablas en paradoz 7 uso el siguiente codigo para hacer un filtrado:
Query1.SQL.Add('Where Num_Client=' +Edit1.Text);
Pero si en la etiqueta quiero introducir un campo tipo fecha me manda un error
el codigo que pretendo poner es:
Query1.SQL.Add(Where Fecha Like' + Edit1.Text);
De antemano muchas gracias y espero sus repuestas
Nuria
13-08-2004, 10:09:01
Hola Saul!
Query1.SQL.Add('Where Fecha = :Fec ') ;
Query1.ParamByName('Fec').AsDate := StrToDate(Edit1.Text);
Query1.Active := True;
Espero que te sirva ;).
Saludos.
jachguate
13-08-2004, 10:46:03
Solo aclaro:
No creo que haya motor que soporte el uso del operador like contra fechas, puesto que no tendria sentido (al menos no para mi).
Como ves, Nuria ha usado un operador de igualdad (=) que supongo será lo que buscabas.
Hasta luego.
;)
Si no quieres usar parámetros, (aunque deberías, ya que es más cómodo y elegante), puedes hacer esto otro, claro que debes dar 2 parametros fecha inicial y fecha final
Query1.SQL.Add('Where Fecha between ' + quotedstr(Edit1.Text) +' and ' + quotedstr(Edit2.text);
Uniendo la técnica de Nuria con esta, te podría quedar algo así
Query1.SQL.Add('Where Fecha between :FecIni and FecFin ') ;
Query1.ParamByName('FecIni').AsDate := StrToDate(Edit1.Text);
Query1.ParamByName('FecFin').AsDate := StrToDate(Edit2.Text);
Query1.Active := True;
Como sugerencia, te diría que para introducir fechas uses un TdateTimePicker o bien el que trae las RxLibs (es un control para bases de datos), así te quitarás los problemas de fechas incorrectas.
El siguiente paso es verificar que tu motor de bases de datos recibe la fecha en el mismo formato de fechas que tu quieres dd/mm/yyyy o bien mm/dd/yyyy. La función FormatDateTime te puede ayudar, modificando los parámetros del SQL a .AsString para más comodidad.
Espero te ayude.
Saludos
adan12
05-12-2011, 06:00:00
yo tengo este codigo quiero hacer una consulta de tal fecha a tal fecha pero tengo este codigo y no me sale nada marco las fechas y sale q no hay registro y si hay registros
adoQuery2.Close;
adoQuery2.SQL.Clear;
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between '+
FormatDateTime('DDMMYYYY',DateTimePicker1.Date)+' And '+
FormatDateTime('DDMMYYYY',DateTimePicker2.Date));
adoQuery2.Open;
if ADOQuery2.IsEmpty then
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
MessageBox(Handle, 'No hay entradas.', 'Warnning', Mb_Ok + MB_ICONHAND + Mb_DefButton1)
end
end;
oscarac
05-12-2011, 06:54:55
que base de datos usas?
oscarac
05-12-2011, 06:56:50
prueba asi
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between '+
quotedstr(FormatDateTime('DDMMYYYY',DateTimePicker1.Date))+' And '+
quotedstr(FormatDateTime('DDMMYYYY',DateTimePicker2.Date)));
adan12
05-12-2011, 17:46:17
que base de datos usas?
ESTOY USANDO POR AHORA Y POR SU PORTABILIDAD ACCES PERO SIEMPRE USO SQL 2008
oscarac
05-12-2011, 17:50:17
oh ya
el tema es que en access el tema de las fechas es complicadito
tienes que usar el caracter # entre las fechas algo asi
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between #'+
FormatDateTime('DDMMYYYY',DateTimePicker1.Date)+'# And #'+
FormatDateTime('DDMMYYYY',DateTimePicker2.Date) + '#');
y en SqlServer como te dije en el post anterior
adan12
05-12-2011, 17:51:08
oh ya
el tema es que en access el tema de las fechas es complicadito
tienes que usar el caracter # entre las fechas algo asi
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between #'+
FormatDateTime('DDMMYYYY',DateTimePicker1.Date)+'# And #'+
FormatDateTime('DDMMYYYY',DateTimePicker2.Date) + '#');
y en SqlServer como te dije en el post anterior
dejame provar a ver q onda ok......
PepeLolo
12-12-2011, 02:39:44
Simplifica la consulta usando parámetros con las fechas adoQuery2.SQL.Add('select * from viatico where fecha_ida Between :fcdesde and :fchasta'
adoQuery2.paramByName('fcdesde').AsDate := DateTimePicker1.Date
adoQuery2.paramByName('fcHasta').AsDate := DateTimePicker2.Date;
Si no quieres problemas con ellas es la mejor solución, los componentes se encargan de realizar las transformaciones necesarias según el motor de bbdd.:cool:
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.