Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sentencia Sencilla pero no me sale (https://www.clubdelphi.com/foros/showthread.php?t=41586)

marcial 20-03-2007 11:39:18

Sentencia Sencilla pero no me sale
 
Hola a todos y gracias de antemano por vuestra ayuda:

Utilizo Delphi 5 y tengo un fichero del que quiero extraer registros que cumplan esta condición:
Que se listen los registros grabados a partir por ej. del 12/03/2007 a partir de las 18:00:00, y ademas el importe "A" sea mayor que "B". Yo pongo lo siguiente pero no sale bien porque solo se listan los que la hora es mayor que la que pongo sin tener en cuenta la fecha:

Select Fecha,Hora,ImporteTicket,ImporteCobrado from LINEAS.Db
WHERE ((Fecha >= "' + FechaH + '") AND (Hora >= "' + HoraH + '")) AND (ImporteTicket > ImporteCobrado)

Gracias por vuestro tiempo

Marcial

kuan-yiu 20-03-2007 12:14:08

La consulta sería así
Código SQL [-]
select Fecha,Hora,ImporteTicket,ImporteCobrado from LINEAS.Db
where (fecha>=:fec) and (hora>=:hor) and (importeTicket>ImporteCobrado)
Y luego tendrías que cargar los parámetros antes de lanzarla:
Código Delphi [-]
query.close;
query.parambyname('fec').asdate := miFecha;
query.parambyname('hor').astime := miHora;
query.open;

Ivanzinho 20-03-2007 12:37:55

Perdona que te corrija kuan-yiu pero creo que tu consulta va a devolver el mismo resultado que la de él. La sentencia correcta creo que es la siguiente :
Código SQL [-]
select Fecha,Hora,ImporteTicket,ImporteCobrado from LINEAS.Db
where ((fecha>:fec) or ((fecha=:fec) and (hora>=:hor))) and (importeTicket>ImporteCobrado)


Un saúdo

marcial 20-03-2007 13:02:48

Muchas gracias a los dos, pero en esta ocasión Ivanzinho tiene razón. Problema resuelto.

kuan-yiu 20-03-2007 13:30:47

Cita:

Empezado por Ivanzinho
Perdona que te corrija kuan-yiu pero creo que tu consulta va a devolver el mismo resultado que la de él. La sentencia correcta creo que es la siguiente :
Código SQL [-]
select Fecha,Hora,ImporteTicket,ImporteCobrado from LINEAS.Db
where ((fecha>:fec) or ((fecha=:fec) and (hora>=:hor))) and (importeTicket>ImporteCobrado)


Un saúdo

Pues me sorprende, hago muchas consultas como esa y todas me funcionan perfectamente. Supongo que es por el tipo de datos de la tabla. Yo para las fechas casi siempre uso "DateTime", así lo miro todo en una sóla comparación.

Ivanzinho 20-03-2007 13:35:38

Cita:

Empezado por kuan-yiu
Pues me sorprende, hago muchas consultas como esa y todas me funcionan perfectamente. Supongo que es por el tipo de datos de la tabla. Yo para las fechas casi siempre uso "DateTime", así lo miro todo en una sóla comparación.

El problema de esa consulta es que estás filtrando que la hora sea mayor que la hora inicial para todas las fechas, cuando eso solo se tiene que tener en cuenta en la fecha inicial, no creo que tenga nada que ver con el tipo de datos ;).

Un saúdo

kuan-yiu 20-03-2007 17:09:29

Ah... No había entendido bien lo que quería.


La franja horaria es GMT +2. Ahora son las 03:19:30.

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