Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda en parametro de fecha? (https://www.clubdelphi.com/foros/showthread.php?t=27276)

alcides 16-11-2005 14:51:34

Duda en parametro de fecha?
 
Hola a todos,
tengo una duda. en este qry el parametro de fecha no se cumple, me explico:

introduzco fecha inicial 01/02/2005 y fecha final 28/02/2005
y toma en cuenta los registros del mes de enero.

si por favor me pueden ayudar a saber porque?

esto es lo que tengo

Código PHP:

 SELECT *
 
FROM Catalogo INNER JOIN (Detalle inner join Encabezado 
             ON Detalle
.Numero_Transacion Encabezado.Numero_Transacion)
             
ON Catalogo.Cuenta Detalle.Cuenta 
where   Detalle
.fecha_transacion   >= :pfecha_inicial
and       Detalle.fecha_transacion   <= :pfecha_final
and       Encabezado.Nulo 'NO'
order by Detalle.CuentaDetalle.fecha_transacion


Gracias mil,


Alcides
Rep.Dom.

epuigdef 16-11-2005 15:12:20

El tipo de los parámetros es de fecha? Con este tema he tenido mil problemas, e incluso he acabado formateando los campos y los parámetros a yyyymmdd para controlar intervalos.


Un saludo

Edu

alcides 16-11-2005 15:22:38

hola epuigdef,
gracias por tu observación,
de todas maneras espero que me den una manito con este problemita.




Gracias mil,


Alcides
Rep.Dom.

epuigdef 16-11-2005 15:24:09

Qué base de datos estás utilizando?


Edu

alcides 16-11-2005 15:57:12

hola epuigdef,

estoy utilizando access y delphi 7



Gracias mil,


Alcides
Rep.Dom.

epuigdef 16-11-2005 16:01:16

Entonces prueba lo siguiente:

SELECT *
FROM Catalogo INNER JOIN (
Detalle inner join Encabezado
ON Detalle
.Numero_Transacion = Encabezado.Numero_Transacion
)
ON Catalogo.Cuenta = Detalle.
Cuenta
where

format(Detalle.fecha_transacion, 'yyyyMMdd') >=
format(:pfecha_inicial, 'yyyyMMdd')
and

format(Detalle.fecha_transacion, 'yyyyMMdd) <=
format(:pfecha_final, 'yyyyMMdd')
and Encabezado.Nulo =
'NO'
order by Detalle.Cuenta, Detalle.fecha_transacion;

vtdeleon 16-11-2005 16:09:18

Saludos

Para sentencias SQL existe la etiqueta [ SQl]sentencia[ /sql](sin espacio), no necesitan usar otra mas ni formatiar su texto;)

Alcides, porque no usas mejor Betweens
Código SQL [-]
Select * 
from tabla 
where fecha between :fechaini and :fechafin

alcides 16-11-2005 16:11:28

hola epuigdef,

trabaje con el ejemplo que me diste y marca un error:
Error de sintaxis (falta operador) en la expresión de consulta


Gracias mil,

Alcides
Rep.Dom.

alcides 16-11-2005 16:14:03

hola vtdeleon,

gracias, por el consejo, voy a intentar y te hago saber.


Gracias mil,



Alcides
Rep.Dom.

epuigdef 16-11-2005 16:15:01

Ups! Olvidé cerrar la comilla en la línea

Código SQL [-]
format(Detalle.fecha_transacion, 'yyyyMMdd) <= 


debes ponerlo así:

Código SQL [-]
format(Detalle.fecha_transacion, 'yyyyMMdd') <= 


De todas formas prueba la solución que te ha dado vtdeleon, que seguro que sabe bastante más que yo!

Edu

Lepe 16-11-2005 16:40:40

El tema de fechas a todos nos ha dado quebraderos de cabeza alguna vez.

Al usar un formato determinado, nos obliga a utilizar el "format" cada vez que usamos una fecha, y si no lo hacemos, nos devolverá valores incorrectos.

La solución de parámetros que ofrece vtdeleon tiene como principal ventaja, que delphi se encarga de transformar las fechas al formato que espera nuestro motor de bases de datos.

Código Delphi [-]
query.Close;
query.Sql.text := 'Select * '+
         'from tabla '+
         'where fecha between :fechaini and :fechafin';
query.paramsbyname('fechaini').AsDate := Timepicker1.date;
query.paramsbyname('fechafin').AsDate := Timepicker2.date;
query.Open;

En caso de un Adoquery, creo que no existe ParamsByName, sino Parameters. XXX

saludos

vtdeleon 16-11-2005 17:51:41

Saludos

Cita:

Empezado por Lepe
...,sino Parameters. XXX

Creo que se utiliza asi:
Parameters.ParamByName('blabla').value;

alcides 16-11-2005 19:25:44

hola a todos,


vtdeleon todo salio bien con el between,
mil gracias.

gracias Lepe, gracias epuigdef por su ayuda.


Gracias mil,

Alcides
Rep.Dom.


La franja horaria es GMT +2. Ahora son las 17:57:24.

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