Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
no encuentra fecha igual en consulta

hola,

Dando vueltas arriba o abajo no entiendo por que, cuando hago una consulta que busca una fecha igual a otra no aparece o bien, cuando hago una consulta como esta:

Código Delphi [-]

fecha1:=zvdatetimepicker1.Date;
   fecha2:=zvdatetimepicker2.date;
   zquery1.close;
   zquery1.sql.clear;
   zquery1.sql.text:='select * from tcheques where cfecha between :fecha1 and :fecha2';
   zquery1.parambyname('fecha1').asdatetime:=fecha1;
   zquery1.parambyname('fecha2').asdatetime:=fecha2;
    zquery1.active:=true;

En ese caso, si le pongo de primera fecha 11/11/2011, no me la saca, para eso tengo que ponerle 10/11/2011.

He probado con esto para probar el detalle de fecha igual:

Código Delphi [-]
fecha1:=zvdatetimepicker1.Date;
      zquery1.close;
   zquery1.sql.clear;
   zquery1.sql.text:='select * from tcheques where cfecha = :fecha1';
   zquery1.parambyname('fecha1').asdatetime:=fecha1;
    zquery1.active:=true;

pero no muestra ninguna, no me funciona.

Alguien sabe porque la fecha inicial no la usa y la final si?.
Responder Con Cita
  #2  
Antiguo 01-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me imagino que between es entre en ingles, tal vez es eso lo que pasa, yo uso esto:
Código Delphi [-]
   fecha1:=zvdatetimepicker1.Date;
   fecha2:=zvdatetimepicker2.date;
   zquery1.close;
   zquery1.sql.clear;
   zquery1.sql.text:='select * from tcheques where Cfecha >= :fechaA and Cfecha <= :fechaB';
   zquery1.parambyname('fechaA').asdatetime:= fecha1;
   zquery1.parambyname('fechaB').asdatetime:= fecha2;
    zquery1.active:=true;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 01-09-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias, pero si también probé eso y sigue igual,

uso sqlite y lazarus.

nose donde puede estar el detalle.
Responder Con Cita
  #4  
Antiguo 01-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues no lo se, no deberia de tener ese comportamiento, deberia de mostrar una sola fecha siempre que las dos fechas de los datetimepickers sean iguales.
no lo se.
saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 01-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Tanto la consulta de tu primer mensaje como la que te sugirió Carlos son correctas.

Lo primero que se me ocurre, es pensar en los intermediarios ¿ De que tipos son las variables fecha1 y fecha2 ?
Lo segundo es atribuirlo a algún comportamiento del componente TZQuery con respecto a la conversión o los parámetros, pero aunque no lo conozco me parece poco probable...


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 01-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por anubis Ver Mensaje
En ese caso, si le pongo de primera fecha 11/11/2011, no me la saca, para eso tengo que ponerle 10/11/2011.
No te saca ¿qué? ¿Cómo podemos saber qué pasa si nada más indicas lo que pones de primera fecha y no de segunda?

// Saludos
Responder Con Cita
  #7  
Antiguo 01-09-2012
beginner01 beginner01 is offline
Miembro
NULL
 
Registrado: mar 2011
Ubicación: República Dominicana
Posts: 181
Poder: 14
beginner01 Va por buen camino
Hola.

Las consultas parecen estar correctas, pero existe un inconveniente aparentemente en como sqlite maneja las fechas, pero creo que obtube una solucion que puede resolver este problema con la ayuda de la web de sqlite donde hay suficiente información en como usar las fechas y la forma que yo use fué.

Código SQL [-]
--Ejemplo1.

select * 
from testfecha 
where strftime('%Y-%m-%d',fecha) <= strftime('%Y-%m-%d','2012-08-31')

--Ejemplo2.
select * 
from testfecha 
where strftime('%d/%m/%Y',fecha) = strftime('15/08/2012')

--Ambos ejemplos me funcionaron perfectamente usando sqlite3, zeos 6.6.6 y delphi XE.

Ya con esto puedes "jugar" con el formato para que se ajuste a lo que necesitas.
Responder Con Cita
  #8  
Antiguo 01-09-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias por las respuestas amigos.

Roman, me referia a que no hace el filtrado como es debido y no me muestra los valores en esa fecha, de ahi que tenga que cambiar a otra fecha anterior.

las variables fecha1 y fecha2 son tipo tdate.

beginner01, ya intente probar ese metodo aplicandolo al ejemplo primero que puse pero a la hora de ejecutar me da error.

Vere mañana la documentacion que me dices de sqlite3.

gracias
Responder Con Cita
  #9  
Antiguo 01-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo Anubis, tal y como dice Román, nos faltan datos para poder ayudar adecuadamente.
Responder Con Cita
  #10  
Antiguo 01-09-2012
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
Creo que tienes que poner
zquery1.parambyname('fechaA').asdate:= fecha1;

ya que asdatetime te guarda tambien la hora y si no coincide con la consulta pues no te sale

Última edición por Spynosa fecha: 01-09-2012 a las 11:59:40.
Responder Con Cita
  #11  
Antiguo 01-09-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Como dice spynosa... la cuestión puede ser que en la DB solo tengas almacenado el valor de la fecha y el DateTimePicker almacena el valor de fecha + hora y si además le pasas como AsDateTime etarias tratando de comparar

01/09/2012 = 01/09/2012 08:50:00

Lo cual nunca va a funcionar.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #12  
Antiguo 01-09-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
A mi tambien me pasa como expone Anubis y lo resolvi como dice Caral, es decir si indico un rango de fecha desde por ejemplo el 01/08/2012 a 31/08/2012 el 01 no me lo muestra, arranca desde el 02/08/2012 .
saludos
Responder Con Cita
  #13  
Antiguo 01-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por MartinS Ver Mensaje
A mi tambien me pasa como expone Anubis y lo resolvi como dice Caral, es decir si indico un rango de fecha desde por ejemplo el 01/08/2012 a 31/08/2012 el 01 no me lo muestra, arranca desde el 02/08/2012 .
saludos
Hola MartinS.

Si es muy posible, por que el comportamiento del operador BETWEEN depende de la implementación que le dé cada RDBMS. En algunas realiza una selección inclusiva del conjunto de datos comprendidos entre el valor inicial y final y en otros lo hace de forma exclusiva. Un tercer grupo lo hace de manera inclusiva sobre el valor inicial y exclusiva sobre el final.

Es decir que la instrucción:
Código SQL [-]
SELECT * FROM TABLA WHERE NOMBRE BETWEEN :DESDE AND :HASTA
En algunas bases de datos será equivalente a
Código SQL [-]
SELECT * FROM TABLA WHERE NOMBRE > :DESDE AND NOMBRE < :HASTA
en otras:
Código SQL [-]
SELECT * FROM TABLA WHERE NOMBRE >= :DESDE AND NOMBRE =< :HASTA
y en otras:
Código SQL [-]
SELECT * FROM TABLA WHERE NOMBRE >= :DESDE AND NOMBRE < :HASTA
Por eso es importante leer en la documentación de la base de datos a utilizar sobre el tratamiento que le da a este operador, u optar por usar los operadores <,>,= que no dá lugar a equívocos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 01-09-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Si es que soy un burro con todas las letras.
Aqui dando la lata y al final es lo que deciais, poner solo asdate en vez de asdatetime y ya funciono.

Mis disculpas a todos, y mirad que le di vueltas y al final fue tan sencillo que era para pegarme de tortas.

saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Numero Mayor igual , Menor igual... Problema ZiriusB OOP 12 27-06-2011 17:31:24
Mostrar Ceros En Consulta Si No Encuentra Los Datos ingabraham SQL 5 18-01-2009 21:18:57
Consulta en Cero si no se encuentra datos ingabraham SQL 14 06-01-2009 19:55:16
Consulta Fecha truequeman Varios 2 13-01-2007 18:51:34
Consulta con fecha JODELSA SQL 4 12-12-2003 19:51:28


La franja horaria es GMT +2. Ahora son las 00:47:16.


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