Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
Consulta con SQL por fecha

Buenas compañeros,
uso tablas paradox y deseo hacer una consulta con tquery sobre unas tablas. En la consulta quiero filtrar el resultado por una fecha que la quiero coger de un TDateTimePicker. ¿Cómo puedo hacerlo en tiempo de ejecución? puesto que no me deja coger directamente en la query el valor del DateTimePicker1.Date. yo pensaba hacerlo así

Cita:
Select *
from x, ...
where tabla.fecha=DateTimePicker1.Date;
pero claro me da error

Muchas gracias

P.D. Si alguien me puede decir que función tengo que usar en el Select para poder sacar de la fecha de nacimiento la edad, directamente, se lo agradecería :-)
Responder Con Cita
  #2  
Antiguo 11-08-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!


Lo que tienes que poner en la select es un parámetro:

select * from table where fecha = aram

y después en el código le pasas el parámetro antes de ejecutrar la select:

(el ejemplo está preparado para componentes ADO)

Query.parameters.paramByName('param').Value := DateTimePicker1.date;
Query.open;

Un saludo


Edu
Responder Con Cita
  #3  
Antiguo 11-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
¿pero el parámetro tengo que crearlo antes, da igual el nombre que ponga?
Responder Con Cita
  #4  
Antiguo 11-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Ha salido la carita esa y puede que no se entienda bien, así que lo pongo de nuevo:
Código SQL [-]
 select * from x where  campoFecha >= :laFecha

En un SQL se puede poner los dos puntos y despues cualquier nombre, esto se interpreta como un parámetro, y como bien dice epuigdef hay que pasarle el parámetro antes de abrir la consulta:

Código Delphi [-]
Query.paramByName('laFecha').AsDate := DateTimePicker1.date;
query.Open;

SALUDOS
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 11-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
Cita:
Empezado por Lepe
Código SQL [-]
select * from x where campoFecha >= :laFecha
Al poner esto en la propiedad SQL del TQuery, me dice que el parametro "laFecha" no existe

¿tengo que añadirlo antes a algún sitio? por que esto otro:

Código Delphi [-]
Query.paramByName('laFecha').AsDate := DateTimePicker1.date;
query.Open;

lo pongo en el evento onchange del DateTimePicker1.

Muchas gracias
Responder Con Cita
  #6  
Antiguo 11-08-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola

Yo tambien estoy empezando con esto de los parametros, me funciono bien hasta ahora. tal vez lo que te falte es ponerle tipos a tus parametros.
Esto se lo coloca en la propiedad parameters, seleccionas el parametro que añadiste y en sus propiedades indicar lo siguiente:

Datype->ftDate
Value->Type->Date

Supongo que el primero es el tipo de dato de tu base de datos, y el segundo el tipo del parametro que le pasaras.

En resumen:
1. Colocas tu sentencia sql como te indicaron
2. Defines el tipo de tu parametro
3. llamas con parambyname como te indicaron

Lo hice funcionar con BDE, ahora con ADO, me funciono perfectamente

Que todos tengan un Buen Dia
Responder Con Cita
  #7  
Antiguo 11-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Sayuri
Al poner esto en la propiedad SQL del TQuery, me dice que el parametro "laFecha" no existe
Tendrás la consulta abierta en modo diseño, porque se puede modificar la propiedad SQL sin tener los parámetros creados.

Se añade el Sql, y despues si accedes a la propiedad query.Params, verás que estan creados ya (delphi se encarga de analizar el SQL y crear los parámetros.

Yo en algunos casos ni siquiera le indico el Datatype ni VAlue --> Type, porque en ejecución uso:
Código Delphi [-]
Query.paramByName('laFecha').AsDate :=
Por tanto, ya sabe de que tipo son los parámetros.

Por cierto, deberás cerrar la consulta al cambiar el parámetro:
Código Delphi [-]
query.Close;
Query.paramByName('laFecha').AsDate := DateTimePicker1.date;
query.Open;

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 12-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
No me da error al hacer lo que me habeis dicho, pero no me coge ningún registro de la tabla, cómo si no existieran... y en esa fecha hay datos
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 12:00:14.


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