Imprimir página | Cerrar ventana

Consulta sql a vista diseño

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84730
Fecha de impresión: 14/Noviembre/2019 a las 15:34


Tema: Consulta sql a vista diseño
Publicado por: rokoko
Asunto: Consulta sql a vista diseño
Fecha de publicación: 30/Septiembre/2019 a las 17:42
Hola

Estoy intentando pasar una consulta sql que esta en un formulario a una consulta normal. El objetivo es ver como hace los criterios, no consigo aclararme en SQL.

La consulta es de esta base de datos, un planing hotel  www.mvp-access.com/-marta-/web/Ejemplos/De%20mis%20Amigos/photel2000Marciano.zip

La consulta

Set rst = CurrentDb.OpenRecordset("SELECT * FROM Reservas WHERE IdOcupacion <> " & Me.IdOcupacion & " AND Habitacion = " & Me.Habitacion & _
                                    " AND ((FechaEntrada BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & "# AND #" & _
                                    Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#)
OR (DateAdd('d', -1, FechaSalida) BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & _
                                    "# AND #" & Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#))")


No me queda claro cada criterio a que campo va dirigido.  El bloque en rojo creo que es asi, aunque no lo tengo muy claro.  La consulta pilla los datos del formulario.

Del resto de la consulta no lo veo

SELECT Reservas.IdOcupacion, Reservas.Habitacion, Reservas.FechaEntrada, *
FROM Reservas
WHERE (((Reservas.IdOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![IdOcupacion]) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]) AND ((Reservas.FechaEntrada) Between [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] And DateAdd("d",-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])));





Respuestas:
Publicado por: happy
Fecha de publicación: 30/Septiembre/2019 a las 18:46
Si los campos están en un subformulario entonces te falta indicarlo en la consulta agregando ![Form] despues del nombre del subformulario. Por ejemplo [Formularios]![frmOcupacionSemanal]![SubFormReservas]![Form][IdOcupacion]

Eso sí para el resto de la pregunta no entiendo lo que expones. Tampoco he visto ese ejemplo de Marciano que mencionas ...


-------------
Saludos,

Juan M. Afan de Ribera


Publicado por: rokoko
Fecha de publicación: 30/Septiembre/2019 a las 19:37
Lo que quiero es hacer esa consulta SQL en una consulta normal y poder verla en vista diseño. De esta forma puedo entender su funcionamiento y ver los criterios mas facilmente para entenderlos....


Publicado por: emiliove
Fecha de publicación: 30/Septiembre/2019 a las 20:06
Puedes poner un 
Debug.print ("SELECT * FROM Reservas WHERE IdOcupacion <> " & Me.IdOcupacion & " AND Habitacion = " & Me.Habitacion & _
                                    " AND ((FechaEntrada BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & "# AND #" & _
                                    Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#)
OR (DateAdd('d', -1, FechaSalida) BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & _
                                    "# AND #" & Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#))")

Y lo que te de lo pegas en una sql de la consuilta.

Salidos.


Publicado por: rokoko
Fecha de publicación: 30/Septiembre/2019 a las 20:41
Publicado originalmente por emiliove emiliove escribió:

Puedes poner un 
Debug.print ("SELECT * FROM Reservas WHERE IdOcupacion <> " & Me.IdOcupacion & " AND Habitacion = " & Me.Habitacion & _
                                    " AND ((FechaEntrada BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & "# AND #" & _
                                    Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#)
OR (DateAdd('d', -1, FechaSalida) BETWEEN #" & Format(Me.FechaEntrada, "mm/dd/yyyy") & _
                                    "# AND #" & Format(DateAdd("d", -1, Me.FechaSalida), "mm/dd/yyyy") & "#))")

Y lo que te de lo pegas en una sql de la consuilta.

Salidos.



ClapClapClapClapClapClap pedazo truco!!!!Shocked

En la ventana inmediato me a dado esto, lo he copiado en vista sql de la consulta y hay se ve como esta montada la consulta. Luego comparando un poco la sql en vba ves como esta hecha.
SELECT * FROM Reservas WHERE IdOcupacion <> 32 AND Habitacion = 206 AND ((FechaEntrada BETWEEN #06/24/2006# AND #06/24/2006#) OR (DateAdd('d', -1, FechaSalida) BETWEEN #06/24/2006# AND #06/24/2006#))

La consulta queda asi.

SELECT *
FROM Reservas
WHERE (((Reservas.FechaEntrada) Between [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] And DateAdd("d",-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])) AND ((Reservas.IdOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion]) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion])) OR (((Reservas.IdOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion]) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]) AND ((DateAdd('d',-1,[FechaSalida])) Between [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] And DateAdd("d",-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])));


La probare mejor, pero parece que funciona!!



Publicado por: mounir
Fecha de publicación: 30/Septiembre/2019 a las 20:53
Hola!

Este ejemplo en su momento tuvo un debate sobre la función de disponibilidad.

echale un vistazo por si te interesa.


http://www.mvp-access.com/foro/consulta-de-fecha-y-disponibilidad_topic83873.html?KW=" rel="nofollow - Consulta de fecha y disponibilidad

-------------
Un Saludo.


Publicado por: rokoko
Fecha de publicación: 01/Octubre/2019 a las 16:41
Publicado originalmente por mounir mounir escribió:

Hola!

Este ejemplo en su momento tuvo un debate sobre la función de disponibilidad.

echale un vistazo por si te interesa.


http://www.mvp-access.com/foro/consulta-de-fecha-y-disponibilidad_topic83873.html?KW=" rel="nofollow - Consulta de fecha y disponibilidad


Cierto tiene es "defecto", me ha salido gracias al enlace que me has puesto y a un ejemplo que tiene hay pitxiku.

Aun me tengo que mirar la rutina de Mihura...

Esta es la consulta que me a quedado que solventa ese defecto.

SELECT Reservas.FechaEntrada, DateAdd('d',-1,[FechaSalida]) AS Fecha_Salida, [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] AS Expr1, Reservas.FechaSalida, Reservas.Habitacion, Reservas.idOcupacion
FROM Reservas
WHERE (((Reservas.FechaEntrada) Between [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] And DateAdd("d",-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]) AND ((Reservas.idOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion])) OR (((DateAdd('d',-1,[FechaSalida])) Between [Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada] And DateAdd("d",-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]) AND ((Reservas.idOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion])) OR ((([Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada]) Between [FechaEntrada] And DateAdd("d",-1,[FechaSalida])) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]) AND ((Reservas.idOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion]));



Publicado por: rokoko
Fecha de publicación: 02/Octubre/2019 a las 13:13
Por mi parte se puede cerrar.

He utilizado el metodo de Mihura tambien, y una vez entendido queda una consulta bastante simple.

SELECT Reservas.FechaEntrada, DateAdd('d',-1,[FechaSalida]) AS Fecha_Salida, Reservas.idOcupacion, Reservas.Habitacion
FROM Reservas
WHERE (((Reservas.FechaEntrada)<=DateAdd('d',-1,[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaSalida])) AND ((DateAdd('d',-1,[FechaSalida]))>=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![FechaEntrada]) AND ((Reservas.idOcupacion)<>[Formularios]![frmOcupacionSemanal]![SubFormReservas]![idOcupacion]) AND ((Reservas.Habitacion)=[Formularios]![frmOcupacionSemanal]![SubFormReservas]![Habitacion]));


Saludos  y gracias



Imprimir página | Cerrar ventana