Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2004
Saul Saul is offline
Registrado
 
Registrado: ago 2004
Posts: 5
Poder: 0
Saul Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 13-08-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
Hola Saul!

Código Delphi [-]
  Query1.SQL.Add('Where Fecha = :Fec ') ;
  Query1.ParamByName('Fec').AsDate := StrToDate(Edit1.Text);
  Query1.Active := True;

Espero que te sirva .

Saludos.
Responder Con Cita
  #3  
Antiguo 13-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 13-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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

Código Delphi [-]
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í
Código Delphi [-]
 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
Responder Con Cita
  #5  
Antiguo 05-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
problemas delphi y datapiker

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;
Responder Con Cita
  #6  
Antiguo 05-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
que base de datos usas?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 05-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
prueba asi

Código Delphi [-]
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between '+
quotedstr(FormatDateTime('DDMMYYYY',DateTimePicker1.Date))+' And '+
quotedstr(FormatDateTime('DDMMYYYY',DateTimePicker2.Date)));
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 05-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
que base de datos usas?
ESTOY USANDO POR AHORA Y POR SU PORTABILIDAD ACCES PERO SIEMPRE USO SQL 2008
Responder Con Cita
  #9  
Antiguo 05-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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

Código Delphi [-]
 
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
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 05-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
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

Código Delphi [-]
 
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......
Responder Con Cita
  #11  
Antiguo 12-12-2011
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Simplifica la consulta usando parámetros con las fechas
Código Delphi [-]
adoQuery2.SQL.Add('select * from viatico where fecha_ida Between  :fcdesde and :fchasta'
Código Delphi [-]
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.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:11:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi