Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta SQL a access entre 2 fechas (https://www.clubdelphi.com/foros/showthread.php?t=81599)

juanma92 29-11-2012 14:45:47

Voy a probar
 
Bueno, voy a probar, pero algo asi lo tenia. Gracias. Te aviso

juanma92 29-11-2012 14:56:13

Sigue sin andar
 
Puse la consulta como me dijiste:
Código SQL [-]
Select H.NroHabitacion,H.IdTipo,H.idHabitacion
From Habitaciones H
Where H.IdTipo = :tipo
and (H.IdHabitacion not in (Select R.IdHabitacion
                         From ClienteReservaHabitacion R
                         Where R.FechaSalida <= :desdefecha
                         or    R.FechaIngreso >= :hastafecha)
or H.IdHabitacion not in (Select O.IdHabitacion
                         From ClienteOcupaHabitacion O
                         Where O.FechaSalida <= :desdefecha
                         or    O.FechaIngreso >= :hastafecha)
)
Order By H.NroHabitacion
Y sigue sin andar, no me devuelve nada.... Nose donde ppuede estar el problema, porque probe las subconsultas por separado, y todas andan, ahora bien cuando las junto no me devuelve nada :/ Te mando como les paso los parametros:

Código Delphi [-]
 dm.ConNuevaReserva.Close;
    dm.ConNuevaReserva.Parameters.ParamByName('tipo').Value :=
      DBLookupComboBox1.KeyValue;
    dm.ConNuevaReserva.Parameters.ParamByName('desdefecha').Value :=
      DateTimePicker1.Date;
    dm.ConNuevaReserva.Parameters.ParamByName('hastafecha').Value :=
      DateTimePicker2.Date;

Casimiro Notevi 29-11-2012 15:24:34

¿Has comprobado que hay datos válidos en la BD para que devuelva valores?

Casimiro Notevi 29-11-2012 15:25:28

De todas formas, esa no es la sentencia sql que yo te he puesto, tú has puesto and y or, yo he puesto and y and

juanma92 29-11-2012 15:26:45

Sisi, la tabla habitaciones tiene muchas habitaciones, y en cambio la tabla de reservas o ocupados estan casi vacias. Algunas habitaciones tiene q devolver. Y las fechas no coinciden ademas

Casimiro Notevi 29-11-2012 15:55:34

¿Puedes pasarlo algunos datos en formato csv (por ejemplo) para hacer pruebas?

juanma92 29-11-2012 16:26:25

te paso la BD?

Casimiro Notevi 29-11-2012 16:36:50

Cita:

Empezado por juanma92 (Mensaje 450868)
te paso la BD?

Es que yo no tengo nada para leer access, por eso decía de exportar a csv, dbf (puede que también lo lea), txt, etc. algún formato más o menos estandar.

juanma92 29-11-2012 16:48:04

1 Archivos Adjunto(s)
Te adjunto en un rar las tablas en txt

Casimiro Notevi 29-11-2012 17:46:15

Dime algunos ejemplos que hayas probado, tipo y fechas de ingreso y salida, para probar con los mismos datos que no te salen.

Casimiro Notevi 29-11-2012 17:59:34

He hecho una pruebecita con estos datos y funciona correctamente, creo.
Código SQL [-]
select h.nrohabitacion, h.idtipo, h.idhabitacion
from tbhabitaciones h
where h.idtipo = 1
and h.idhabitacion  in (select r.idhabitacion
                         from tbreservadas r
                         where r.fechasalida <= '01.12.2012'
                         or    r.fechaingreso >= '03.12.2012')
and h.idhabitacion  in (select o.idhabitacion
                         from tbocupadas o
                         where o.fechasalida <= '01.12.2012'
                         or    o.fechaingreso >= '03.12.2012')
order by h.nrohabitacion

juanma92 29-11-2012 22:07:12

Estuve mirando y yo tengo igual y no me devuelve nada. Salvo que entre los in va un or no un and xq en cualqiera de las tablas que este no qiero que aparesca. Con el and las saca las que estan en las dos si o si

Casimiro Notevi 29-11-2012 22:21:46

Cita:

Empezado por juanma92 (Mensaje 450911)
Estuve mirando y yo tengo igual y no me devuelve nada. Salvo que entre los in va un or no un and xq en cualqiera de las tablas que este no qiero que aparesca. Con el and las saca las que estan en las dos si o si

Pero date cuenta que yo no estoy buscando las fechas que puedan coincidier, sino las que no coinciden, por eso creo que debe ser AND.

Porque a mí si me devuelve registros.

Veamos, con los parámetros que yo he usado en el ejemplo que he puesto ahí, ¿no te devuelve nada?

olbeup 30-11-2012 08:55:34

Pues eso le dije yo que habilitara la SQL que le puse y también ¿para que quieres los alias si no los vas a utilizar?

Un saludo.

Casimiro Notevi 30-11-2012 12:23:14

Cita:

Empezado por olbeup (Mensaje 450940)
¿para que quieres los alias si no los vas a utilizar?

Los alias (desconozco access) sirven para que no exista confusión con los nombres de los campos de distintas tablas, tanto para el sistema como para nosotros mismos. En otros sistemas (desconozco access) es imprescindible cuando se realiza una sentencia donde intervienen más de una tabla, incluso obligatorio en algunos casos.
Además de que queda más claro para nosotros.

olbeup 03-12-2012 09:04:39

Casimiro notevi, sé cómo se utilizan los alias, las SQL's que ha puesto el compañero no las utiliza para nada, en access y en cualquier base de datos se utilizan los alias siempre y cuando al menos un campo estén en ambas DB, internamente el MS Access no utiliza alias sino las pones utiliza el nombre de la base de datos seguida del campo.

Si abres el programa MS Access y construyes una SQL sin alias y la ejecutas y después quieres ver la SQL, vera que MS Access te ha añadido el nombre de la base de datos y luego el campo.

Si quieres utilizar los alias aunque no los utilices, OK, pero es un gasto innecesario para mi.

Un saludo.

Casimiro Notevi 03-12-2012 10:50:23

Jamás he usado access, he puesto una sql estandar para todas las BD.


La franja horaria es GMT +2. Ahora son las 00:30:02.

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