Ver la Versión Completa : Una pequeña duda
alcides
12-12-2005, 20:46:48
hola a todos
trabajo en delphi 7 y mis tablas estan access.
tengo este qry y resulta que introduzco por medio a dos edit la fecha inicial
01/02/2005 y la fecha final 28/02/2005
y en el resultado me incluye los datos de enero.
SELECT MID(CUENTA,1,5),SUM(DEBITO) AS TOTAL_DEBITO,SUM(CREDITO) AS TOTAL_CREDITO
FROM DETALLE
WHERE (FECHA_TRANSACION BETWEEN :PFECHA_DESDE AND :PFECHA_HASTA)
AND MID(CUENTA,1,5) = :PCUENTA
GROUP BY MID(CUENTA,1,5);
si por favor me pueden dar una mano.
Gracias mil
Alcides
Rep. Dom.
AGAG4
12-12-2005, 21:54:57
hola a todos
trabajo en delphi 7 y mis tablas estan access.
tengo este qry y resulta que introduzco por medio a dos edit la fecha inicial
01/02/2005 y la fecha final 28/02/2005
y en el resultado me incluye los datos de enero.
SELECT MID(CUENTA,1,5),SUM(DEBITO) AS TOTAL_DEBITO,SUM(CREDITO) AS TOTAL_CREDITO
FROM DETALLE
WHERE (FECHA_TRANSACION BETWEEN :PFECHA_DESDE AND :PFECHA_HASTA)
AND MID(CUENTA,1,5) = :PCUENTA
GROUP BY MID(CUENTA,1,5);
si por favor me pueden dar una mano.
Gracias mil
Alcides
Rep. Dom.
Lo que ha de estar pasando es que de seguro en Acces tienes que especificarle el Mes/Dia/Año, prueba con esto.
Saludos.
vtdeleon
13-12-2005, 02:13:38
SaludosLo que ha de estar pasando es que de seguro en Acces tienes que especificarle el Mes/Dia/Año, prueba con esto.Dificilmente sea eso, si...01/02/2005 y la fecha final 28/02/2005hace esto. La 2da fecha tiene el formato dd/mm/yyyy por lo que asumo que el 1ro debe estar asi.
Es extra~o este problema, no deberia mostra "Enero" para nada. Yo aconsejaria a alcide en hacer pruebas, estableciendo un rango mas corto como 01/02/2005 a 10/02/2005 y asi sucesivamente.
Edt: Que componente usas para asignar la fecha al parametro?
Quizas tenga que pasarle las fechas en formato mm/dd/yyyy que es el formato para casi todos los motores de datos.
Al pasar 01/02/2005 esto casa tanto con dd/mm/yyyy como con mm/dd/yyyy, por ahí empiezan los problemas. En principio, algunos motores de BBDD primero intentan casar la fecha con formato mm/dd y si no entra, como por ejemplo 28/02, entonces, y solo entonces, la hacen casar con el formato dd/mm
Cuando se usa parámetros, delphi automáticamente resuelve el problema, así que me suena a algún conflicto entre la fecha establecida en windows o bien el controlador de access.
Dicho de otra forma, no sé por donde coger el problema, lo único que se me ocurre es:
'where fecha between' + formatdatetime('mm/dd/yyyy', date1)+ ' and ' ....
que siempre debe funcionar, mientras no se cambie el motor de bases de datos, o éste se actualice.
saludos
FOURIER
14-12-2005, 00:54:11
SELECT MID(CUENTA,1,5),SUM(DEBITO) AS TOTAL_DEBITO,SUM(CREDITO) AS TOTAL_CREDITO
FROM DETALLE
WHERE (FECHA_TRANSACION BETWEEN :PFECHA_DESDE AND :PFECHA_HASTA)
AND MID(CUENTA,1,5) = :PCUENTA
GROUP BY MID(CUENTA,1,5);
//ESA CONSULTA ES EQUIVALENTE A ESTO:
SELECT MID(CUENTA,1,5),SUM(DEBITO) AS TOTAL_DEBITO,SUM(CREDITO) AS TOTAL_CREDITO
FROM DETALLE
WHERE (FECHA_TRANSACION>= :PFECHA_DESDE AND FECHA_TRANSACION<=:PFECHA_HASTA)
AND MID(CUENTA,1,5) = :PCUENTA
GROUP BY MID(CUENTA,1,5);
// LO QUE PASA ES QUE EN ACCESS CUANDO COMPARAS FECHAS DEBES HACER LA CONVERCIÓN AL MENOS QUE COMPARES CON OTRO CAMPO QUE TAMBIEN ES FECHA ENTONCES ESO ES EQUIVALENTE A PONER LO SIGUIENTE
SELECT MID(CUENTA,1,5),SUM(DEBITO) AS TOTAL_DEBITO,SUM(CREDITO) AS TOTAL_CREDITO
FROM DETALLE
WHERE (FECHA_TRANSACION>= CDATE(:PFECHA_DESDE) AND FECHA_TRANSACION<=CDATE(:PFECHA_HASTA))
AND MID(CUENTA,1,5) = :PCUENTA
GROUP BY MID(CUENTA,1,5);
//CON CDATE() CONVIERTES LOS VALORES A DATE Y YA PODRÁS COMPARARLOS... ESPERO TE SIRVA
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.