FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta entre 2 fechas.
Buenas, disculpen amigos se que este tema ya se ha tratado antes y lo he intentado de muchas maneras de las expuestas aki en el clubdelphi y nose cual es el problema. Necesito hacer una consulta entre dos fechas que ingreso mediante dos DateTimePicker utilizo Delphi 7 y MySql. Utilizo los componente, TTable,Tquery, TdataSource. Y si sirve de dato, el campo FechaIngreso es de tipo TimeStamp (YYMMDDHHMMSS). El codigo sql es el siguiente:
Pero resulta que el error que me arroja es el siguiente: Check the manual that correponds to your MySQL server version for the right syntax to user near 'Between01/09/2010And1( esa fecha que aparece ahi es la fecha de incio que ingreso. Desde ya gracias. Última edición por DeLiRioS fecha: 21-10-2010 a las 00:33:26. |
#2
|
||||
|
||||
Bueno segun veo, tu código tiene dos errores principales, el primero es que no has dejado un espacio despues de la clausula 'Between' y tambien debe haber un espacio antes y despues de el "And".
El segundo error es que MySQL guarda las fechas en éste formato > YYYY-MM-D , es decir : Año-Mes-Día , lo que significa que al utilizar la funcion DateToStr no le estas mandando el formato adecuado para la consulta. Solucion: Para estos menesteres es bueno hacer uso de lo que se llama Parámetros que son una especie de variables alas que se les puede asignar valores y utilizarlas en la consulta SQL, mas o menos de éste forma: Nota:Como podrán observar el código anterior ,no me he preocupado por enviar la consulta con el formato adecuado tal como lo guarda MySQL, ésto se debe a que el propio DataSet que ejecuta la consulta ya sabe como hacerlo.. Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 21-10-2010 a las 00:58:35. |
#3
|
||||
|
||||
Hola
Es un error frecuente pensar que delphi entiende todo. Veamos esto: Delphi entiende el texto asi: Select Empleado, DepartamentoFrom EmpleadosWhere FechaIngreso Between'+DateToStr(FechaIni.Date)+'And'+DateToStr(FechaFin.Date)); Esto es logico ya que es texto lo que se ejecuta dentro del add. Escomo siquisieraque meentendieradelphi que esloquequiero decir. Se entiende lo anterior?, no lo creo o por lo menos cuesta. Solucion: espacio entre todo esto: Por eso prefiero usar text y parametros ya que se entiende mejor: Saludos
__________________
Siempre Novato |
#4
|
|||
|
|||
Hola gracias amigos por su atención, hice como me explicaron, con los parametros y respetando los espacios pero ahora me da un nuevo error. Me dice: "Operation not applicable" intente cambiando en el ParamByName().AsDate por Value y el error ya no da pero no arroja nada la consulta, uso este código:
La consulta la hice correr en el MySql-Front donde está la BD y funciona a la perfección, teniendo en cuenta que alli inserto la fecha de incio y de fin. Pero en delphi me da ese error y es con las fechas probe haciendo otro tipo de consulta y tmb funciona perfecto, parece que es la manera en que paso los parametro o algo asi, tendra algo que ver que es un campo Timestamp? alli guardo fecha y hora. Usando SQL.Text me da el mismito error, disculpen quiizas es algo siemple pero no puedo resolverlo. Gracias de ante mano amigos. Última edición por DeLiRioS fecha: 21-10-2010 a las 05:39:16. |
#5
|
|||
|
|||
Consulta entre 2 Fechas
Hola amigos, estoy tartando de hacer lo arriba indicado, en mi caso tengo una tabla Mysql, cuya estructura es la siguiente:
Tabla entregas identrega, idbeneficiarios, idmercaderia, fecha beneficiariosidbeneficiarios, apellido, nombre, dni mercaderiaidmercaderia,detalle En el formulario FrmBenefxFecha tengo un Zquery ZQryFecha, dos DateTimePicker, en los cuales ingreso la fecha de inicio y la fecha final y un boton para iniciar la busqueda y un Dbgrid donde muestro el resultado, el código es el siguiente: with FrmBenefxFec.ZQryFecha do begin Close; Sql.Text:= 'select * ' + 'from entregas ' + 'where Fecha Between :finicio and :ffinal '; ParamByName('finicio').AsDate:=DateTPDesde.Date; ParamByName('ffinal').AsDate:=DateTPHasta.Date; Sql.Add('Order By Fecha'); //Open; ExecSQL; end El código en las propiedades sql del Zquery es el siguiente: select * from entregas inner join beneficiarios on (entregas.idbeneficiarios=beneficiarios.idbeneficiarios) inner join mercaderia on (entregas.idmercaderia=mercaderia.idmercaderia); y al ejecutarlo me sale el siguiente error: ZQryFecha: Parameter 'finicio' not found trate de incluir los parametros en las propiedades params de la zquery y tampoco. Desde ya les agradezco vuestra ayuda.- |
#6
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Recuerda poner los tags al código fuente, ejemplo: Gracias |
#7
|
|||
|
|||
Consulta entre 2 Fechas
Hola Casimiro, si bien había visto la guía de estilo, no había visto lo que me indicas, lo tendré en cuenta para futuras preguntas y/o respuestas.
Gracias por tu atención ¿será necesario que reformule mi consulta?? |
#8
|
|||
|
|||
Aquí voy de nuevo,(a ver si ahora lo hago bien),
Hola amigos, estoy tartando de hacer lo arriba indicado, en mi caso tengo una tabla Mysql, cuya estructura es la siguiente: Tabla entregas identrega, idbeneficiarios, idmercaderia, fecha beneficiariosidbeneficiarios, apellido, nombre, dni mercaderiaidmercaderia,detalle En el formulario FrmBenefxFecha tengo un Zquery ZQryFecha, dos DateTimePicker, en los cuales ingreso la fecha de inicio y la fecha final y un boton para iniciar la busqueda y un Dbgrid donde muestro el resultado, el código es el siguiente:
El código en las propiedades sql del Zquery es el siguiente:
y al ejecutarlo me sale el siguiente error: ZQryFecha: Parameter 'finicio' not found trate de incluir los parametros en las propiedades params de la zquery y tampoco. Desde ya les agradezco vuestra ayuda.- |
#9
|
|||
|
|||
hola mira yo tengo un codigo parecido al tuyo solo que en la consulta la pongo asi
mi dt_desde es el nombre de mi DateTimePicker y si me funciona espero te sirva |
#10
|
|||
|
|||
Gracias MarinaAv por tu pronta respuesta, me olvide de aclarar que estoy trabajando con Delphi XE no se si eso tendrá algo que ver, pues el código que me pasaste me tira un error "E2066 Missing operator or semicolon"
|
#11
|
||||
|
||||
Usa "open", ya que es un "select", el "execsql" es cuando no devuelve datos: update, insert, etc.
Creo que no estás poniendo el código adecuado para que lo veamos, ya que no puede decirte que no existe el parámetro finicio cuando sí que existe en el código que has pegado. |
#12
|
|||
|
|||
Muchas Gracias Casimiro, tenías razón el problema era el execsql lo reemplace por el open y funcionó.
|
#13
|
|||
|
|||
Cita:
mmm que raro yo tambien estoy con delphi xe y no me marca nada o sabes que ese error es que estas mandando un dato diferente que no lo permite :S |
#14
|
||||
|
||||
Cita:
Seguramente ha sido un desliz al copiar/pegar o redactar el mensaje (a todos nos ha pasado). Pero al código del mensaje #9: efectivamente le falta una coma como señala el mensaje de error que nos comenta sintornillos.
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#15
|
|||
|
|||
:O cierto una disculpa no me fije bien entonces ya te funciona?
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta Mysql Suma entre rango de fechas | kaeltas | MySQL | 4 | 22-06-2012 21:30:44 |
Obtener consulta entre fechas | maravert | MySQL | 1 | 16-11-2009 22:44:15 |
slq entre dos fechas comparar fechas | taru | MySQL | 2 | 30-07-2007 16:10:36 |
Entre fechas | erick_jesus | Impresión | 1 | 29-05-2006 19:10:50 |
dias entre dos fechas | davidgaldo | Varios | 5 | 19-05-2005 21:02:03 |
|