Discussion:
Duda en esta consulta
(demasiado antiguo para responder)
YoTipiando
2009-10-13 21:23:22 UTC
Permalink
Hola compañeros.. tengo una consulta donde me muestra en una grilla las
habitaciones que estan OCUPADAS , DISPONIBLES Y RESERVADA

SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="2","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles



la consulta me muestra los datos: y aqui viene la duda. todas las
reservadas me la muestra como OCUPADA salvo que sea la habitacion nro 2
en el segundo IIF " IIF(nro_hab="2","RESERVADA","OCUPADO " )) "
si tengo la habitacion 2 como RESERVADA si aparece como RESERVADA pero si
tengo la habitacion 50 como reservada. me aparece como OCUPADA Ahora
en el segundo IIF si cambio el 2 por el 50 , aparece el 50 como RESERVADA
y el 2 como OCUPADO

Lo que no se como ponerlo para que todas las habitaciones que este
RESERVADA en la consulta me muestre RESERVADA y las OCUPADAS como
OCUPADAS.

bueno muchas gracias desde ahora.. debe de ser sencillo pero no le
encuentro la vuelta de sacar el Nro 2 y poner algo como una Variable con
todos las habitaciones RESERVADAS...
LSC Juan de Dios Corrales Leal
2009-10-13 22:19:28 UTC
Permalink
Pues yo soy de los que preferimos hacerlo a la fuerza bruta cuando no
hay alguna solucion LOGICA.

SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,nro_hab,;
SPACE(10) as Estado_hab,tp.ubicacion,tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles READWRITE

SCAN
DO CASE
CASE nro_hab="0" && bueno aqui no se como lo manejes 0,1,2
replace Estado_hab with "DISPONIBLE"
CASE nro_hab="1"
replace Estado_hab with "OCUPADO"
CASE nro_hab="2"
replace Estado_hab with "RESERVADA"
OTHERWISE
replace Estado_hab with "QUIEN_SABE"
ENDCASE
ENDSCAN

a esto le llamo "a la fuerza bruta"... :)

Saludos.
Post by YoTipiando
Hola compañeros.. tengo una consulta donde me muestra en una grilla
las habitaciones que estan OCUPADAS , DISPONIBLES Y RESERVADA
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="2","RESERVADA","OCUPADO "
)) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
la consulta me muestra los datos: y aqui viene la duda. todas las
reservadas me la muestra como OCUPADA salvo que sea la habitacion nro 2
en el segundo IIF " IIF(nro_hab="2","RESERVADA","OCUPADO " )) " si
tengo la habitacion 2 como RESERVADA si aparece como RESERVADA pero si
tengo la habitacion 50 como reservada. me aparece como OCUPADA
Ahora en el segundo IIF si cambio el 2 por el 50 , aparece el 50 como
RESERVADA y el 2 como OCUPADO
Lo que no se como ponerlo para que todas las habitaciones que este
RESERVADA en la consulta me muestre RESERVADA y las OCUPADAS como
OCUPADAS.
bueno muchas gracias desde ahora.. debe de ser sencillo pero no le
encuentro la vuelta de sacar el Nro 2 y poner algo como una Variable
con todos las habitaciones RESERVADAS...
YoTipiando
2009-10-14 01:53:22 UTC
Permalink
hola amigo que tal gracias por contestar pero no me sale esta consulta....
Pues yo soy de los que preferimos hacerlo a la fuerza bruta cuando no hay
alguna solucion LOGICA.
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,nro_hab,;
SPACE(10) as Estado_hab,tp.ubicacion,tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles READWRITE
SCAN
DO CASE
CASE nro_hab="0" && bueno aqui no se como lo manejes 0,1,2
replace Estado_hab with "DISPONIBLE"
CASE nro_hab="1"
replace Estado_hab with "OCUPADO"
CASE nro_hab="2"
replace Estado_hab with "RESERVADA"
OTHERWISE
replace Estado_hab with "QUIEN_SABE"
ENDCASE
ENDSCAN
a esto le llamo "a la fuerza bruta"... :)
Saludos.
Post by YoTipiando
Hola compañeros.. tengo una consulta donde me muestra en una grilla
las habitaciones que estan OCUPADAS , DISPONIBLES Y RESERVADA
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="2","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
la consulta me muestra los datos: y aqui viene la duda. todas las
reservadas me la muestra como OCUPADA salvo que sea la habitacion nro 2
en el segundo IIF " IIF(nro_hab="2","RESERVADA","OCUPADO " )) " si
tengo la habitacion 2 como RESERVADA si aparece como RESERVADA pero si
tengo la habitacion 50 como reservada. me aparece como OCUPADA
Ahora en el segundo IIF si cambio el 2 por el 50 , aparece el 50 como
RESERVADA y el 2 como OCUPADO
Lo que no se como ponerlo para que todas las habitaciones que este
RESERVADA en la consulta me muestre RESERVADA y las OCUPADAS como
OCUPADAS.
bueno muchas gracias desde ahora.. debe de ser sencillo pero no le
encuentro la vuelta de sacar el Nro 2 y poner algo como una Variable
con todos las habitaciones RESERVADAS...
extremo
2009-10-14 13:45:36 UTC
Permalink
No me queda claro cual es la condicion para tener una habitacion en
estado "RESERVADA"

Bendiciones
extremo
2009-10-14 13:46:58 UTC
Permalink
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"

Bendiciones
YoTipiando
2009-10-14 15:17:20 UTC
Permalink
y la habitacion en la base de dato ya viene asignada como RESERVADA
osea cuando el operador hace la reserva de dicha habitacion se coloca en
estado RESERVADA segun la fecha indicada

en la consulta lo que necesito hacer es que en la grilla cuando consulto
una fecha determinada que me muestre el estado de esa habitacion segun la
fecha . que puede ser DISPONIBLE , OCUPADO o RESERVADA

bueno alguna duda me avisas.. gracias por las bendiciones lo voy a
necesitar mucho porque estoy haciendo mi tesis y se me vence en diciembre y
aun no termino.. :(
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
YoTipiando
2009-10-14 15:23:58 UTC
Permalink
en esta consulta me sale lo que quiero hacer

SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles

en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me sale
como RESERVADA pero no se como encarar que en debe de hacer referencia a
solo el 48 . que sea una variable o algo para que me muestre todas que
estan RESERVADA , asi junto con todas las que estan OCUPADA y todo
las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
Jose A. Blasco
2009-10-14 15:41:42 UTC
Permalink
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab', que
supongo almacena el número de habitacion. Si en ambos casos (reservada
y ocupada) esta rellenado por el número de habitacion, no podrás
establecer una diferencia.

Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me
sale como RESERVADA pero no se como encarar que en debe de hacer
referencia a solo el 48 . que sea una variable o algo para que me
muestre todas que estan RESERVADA , asi junto con todas las que
estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
YoTipiando
2009-10-14 16:25:26 UTC
Permalink
Claro lo que hace es todas las habitaciones estan DISPONIBLES . y a su
vez me muestra las OCUPADAS Y RESERVADA el tema es que en la
consulta las que estan RESERVADA me la muestra como OCUPADAS cuando
realmente estan RESERVADA excepto la nro 48 que es la que esta en el
segundo IIF.

----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab', que
supongo almacena el número de habitacion. Si en ambos casos (reservada y
ocupada) esta rellenado por el número de habitacion, no podrás establecer
una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me
sale como RESERVADA pero no se como encarar que en debe de hacer
referencia a solo el 48 . que sea una variable o algo para que me
muestre todas que estan RESERVADA , asi junto con todas las que
estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
Jose A. Blasco
2009-10-15 07:33:56 UTC
Permalink
Creo que no he sabido exponerte mi duda.
Segun tu codigo,

si el campo 'nro_hab' esta vacio (realmente .null.), consideras que la
habitacion esta disponible
si el campo 'nro_hab' es igual a '48', la habitacion esta reservada
si el campo 'nro_hab' es diferente a '48', la habitacion esta ocupada

el campo 'nro_hab' lo tomas del fichero o cursor 'cur_diasocu'.
Mi pregunta es como distingues en este fichero o cursor, entre una
habitacion ocupada o reservada.
Tal como haces el 'select', solo comparas con la habitacion '48'.

Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
Claro lo que hace es todas las habitaciones estan DISPONIBLES . y
a su vez me muestra las OCUPADAS Y RESERVADA el tema es que
en la consulta las que estan RESERVADA me la muestra como
OCUPADAS cuando realmente estan RESERVADA excepto la nro 48 que
es la que esta en el segundo IIF.
----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab',
que supongo almacena el número de habitacion. Si en ambos casos
(reservada y ocupada) esta rellenado por el número de habitacion, no
podrás establecer una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion =
DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y
me sale como RESERVADA pero no se como encarar que en debe de
hacer referencia a solo el 48 . que sea una variable o algo para
que me muestre todas que estan RESERVADA , asi junto con todas
las que estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
YoTipiando
2009-10-16 03:48:23 UTC
Permalink
AHORA SI ya te comprendi

es como tu dices en el campo 'nro_hab' si esta vacio (null) es
considerado habitacion DISPONIBLE
en el campo habitacion igual '48' es RESERVADA (siempre y cuando tenga
estado reservada)
y en el campo nro habitacion que sea diferente a 48 , aparecen como
OCUPADAS si tiene es que tiene su estado como OCUPADO , porque sino sera
RESERVADA

osea realmente la habitacion 48 o puede estar RESERVADA o puede estar
OCUPADA o DISPONIBLE no es necesario que se haga referencia a esa sola
habitacion , puse 48 para probar si la consulta me sale.. con una sola
habitacion,, lo que no se como hacerlo con varia habitaciones que esten
RESERVADAS (" es como que en ese 48 que seria el segundo IIF deberia de
ir alguna variable o algun parametro para que me filtre todas las
habitaciones con sus distintos estados y que me lo muestre en la grilla
dependiendo la fecha seleccionada

Nro habitacion : | Estado habitacion
45 - RESERVADA
46 - RESERVADA
47 - RESERVADA
48- RESERVADA

8- DISPONIBLE
9- DISPONIBLE
10- DISPONIBLE

11- OCUPADA
12- OCUPADA
13- OCUPADA y etc....

El campo nro_hab lo toma del cursor 'cur_diasocu'

Sobre tu pregunta de como este cursor toma el estado de la habitacion. muy
simple. ya estan registradas en una tabla

Me explico una breve analisis . Llega el pasajero al Hotel , el
operador efectua un Alta de Estadia verificando la disponibilidad de las
habitaciones ("las que estan disponibles") segun la fecha selecionada un
DESDE HASTA . cuando el operador da de alta a ese pasajero la habitacion
seleccionada por ejemplo 6 automaticamente cambia su estado ("EN LA BD")
de DISPONIBLE a OCUPADA . que lo mismo pasa cuando el pasajero llama por
telefono a pedir una reserva. el operador selecciona una habitacion que
esta en estado DISPONIBLE Ejemplo habitacion Nro 20 y automaticamente
ese estado pasa a ser RESERVADA . segun la fecha que el operador indique

En la consulta que trato de hacer es que me muestre en una grilla .
todas las habitaciones DISPONIBLES , RESERVADAS Y OCUPADAS filtrando la
fecha seleccionada DESDE y HASTA por ejemplo muestrame el estado
de las habitaciones entre la fecha DESDE el 20/10/09 HASTA el 25/10/09
y asi sucesivamente

Espero que ahora me entiendan estoy desesperado ya quiero terminar con mi
tesis y entregarla... a la Profe..

:(
Post by Jose A. Blasco
Creo que no he sabido exponerte mi duda.
Segun tu codigo,
si el campo 'nro_hab' esta vacio (realmente .null.), consideras que la
habitacion esta disponible
si el campo 'nro_hab' es igual a '48', la habitacion esta reservada
si el campo 'nro_hab' es diferente a '48', la habitacion esta ocupada
el campo 'nro_hab' lo tomas del fichero o cursor 'cur_diasocu'.
Mi pregunta es como distingues en este fichero o cursor, entre una
habitacion ocupada o reservada.
Tal como haces el 'select', solo comparas con la habitacion '48'.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Claro lo que hace es todas las habitaciones estan DISPONIBLES . y a
su vez me muestra las OCUPADAS Y RESERVADA el tema es que en la
consulta las que estan RESERVADA me la muestra como OCUPADAS
cuando realmente estan RESERVADA excepto la nro 48 que es la que
esta en el segundo IIF.
----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab', que
supongo almacena el número de habitacion. Si en ambos casos (reservada
y ocupada) esta rellenado por el número de habitacion, no podrás
establecer una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me
sale como RESERVADA pero no se como encarar que en debe de hacer
referencia a solo el 48 . que sea una variable o algo para que me
muestre todas que estan RESERVADA , asi junto con todas las que
estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
YoTipiando
2009-10-16 03:52:50 UTC
Permalink
En el Sintax que tengo, me muestra todas las DISPONIBLES y las OCUPADAS
pero no las RESERVADAS al menos que en el segundo IIF la habitacion 50
este justo reservada , ahi si me muestra en la grilla dicha habitacion
que esta en estado RESERVADA pero solo me muestra esa sola habitacion
las otras que estan RESERVADAS no me la muestra.



SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="50","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles

a simple vista podria hacer un simple select * from tabla y listo pero
necesito filtrar la fecha a consultar....
Post by Jose A. Blasco
Creo que no he sabido exponerte mi duda.
Segun tu codigo,
si el campo 'nro_hab' esta vacio (realmente .null.), consideras que la
habitacion esta disponible
si el campo 'nro_hab' es igual a '48', la habitacion esta reservada
si el campo 'nro_hab' es diferente a '48', la habitacion esta ocupada
el campo 'nro_hab' lo tomas del fichero o cursor 'cur_diasocu'.
Mi pregunta es como distingues en este fichero o cursor, entre una
habitacion ocupada o reservada.
Tal como haces el 'select', solo comparas con la habitacion '48'.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Claro lo que hace es todas las habitaciones estan DISPONIBLES . y a
su vez me muestra las OCUPADAS Y RESERVADA el tema es que en la
consulta las que estan RESERVADA me la muestra como OCUPADAS
cuando realmente estan RESERVADA excepto la nro 48 que es la que
esta en el segundo IIF.
----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab', que
supongo almacena el número de habitacion. Si en ambos casos (reservada
y ocupada) esta rellenado por el número de habitacion, no podrás
establecer una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me
sale como RESERVADA pero no se como encarar que en debe de hacer
referencia a solo el 48 . que sea una variable o algo para que me
muestre todas que estan RESERVADA , asi junto con todas las que
estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
Jose A. Blasco
2009-10-16 09:36:35 UTC
Permalink
Entiendo el funcionamiento, de hecho, en la empresa en que trabajo
tambien tenemos un programa de hoteles, pero
? cual es el campo de tu BD que cambia de valor segun el estado de la
habitacion ?
Deberia tener 3 posibles valores o estados, que identifiquen
"DISPONIBLE", "RESERVADA" y "OCUPADA".
El campo que estas controlando 'nro_hab' solo tiene 2 valores, vacio o
lleno (creo haber entendido). En vacio, es habitacion disponible, pero
lleno ¿ lo utilizas tanto para 'RESERVADA', como para 'OCUPADA' ?.

Espero haberme explicado bien.

Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
En el Sintax que tengo, me muestra todas las DISPONIBLES y las
OCUPADAS pero no las RESERVADAS al menos que en el segundo IIF
la habitacion 50 este justo reservada , ahi si me muestra en la
grilla dicha habitacion que esta en estado RESERVADA pero solo me
muestra esa sola habitacion las otras que estan RESERVADAS no me
la muestra.
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="50","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
a simple vista podria hacer un simple select * from tabla y listo
pero necesito filtrar la fecha a consultar....
Post by Jose A. Blasco
Creo que no he sabido exponerte mi duda.
Segun tu codigo,
si el campo 'nro_hab' esta vacio (realmente .null.), consideras que
la habitacion esta disponible
si el campo 'nro_hab' es igual a '48', la habitacion esta reservada
si el campo 'nro_hab' es diferente a '48', la habitacion esta ocupada
el campo 'nro_hab' lo tomas del fichero o cursor 'cur_diasocu'.
Mi pregunta es como distingues en este fichero o cursor, entre una
habitacion ocupada o reservada.
Tal como haces el 'select', solo comparas con la habitacion '48'.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
Claro lo que hace es todas las habitaciones estan DISPONIBLES .
y a su vez me muestra las OCUPADAS Y RESERVADA el tema es
que en la consulta las que estan RESERVADA me la muestra como
OCUPADAS cuando realmente estan RESERVADA excepto la nro 48 que
es la que esta en el segundo IIF.
----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo
'nro_hab', que supongo almacena el número de habitacion. Si en
ambos casos (reservada y ocupada) esta rellenado por el número de
habitacion, no podrás establecer una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion =
DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA
y me sale como RESERVADA pero no se como encarar que en debe de
hacer referencia a solo el 48 . que sea una variable o algo para
que me muestre todas que estan RESERVADA , asi junto con
todas las que estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
extremo
2009-10-16 13:47:26 UTC
Permalink
A simple vista todo indica que YOTIPIANDO tiene un problema de diseño
de la BD

Bendiciones
YoTipiando
2009-10-17 13:40:44 UTC
Permalink
No.. no es problema de diseño en las BD es que no se como encarar la
sintax . porque la consulta me sale perfectamente menos un dato que no se
como ponerlo para que salga... de hecho si hago un simple select * from
tabla. me sale perfectamente con todos sus datos.. pero el tema es que
tengo que filtrar las fechas a seleccionar osea consultar el estado
de habitacion DESDE el 20/10/09 HASTA el 25/10/09 y me muestre
cuales estan DISPONIBLES o RESERVADAS o OCUPADAS

sencillito no...

bueno usare el metodo de papel y lapiz.. y a pensar... a la luz de la
vela...
Post by extremo
A simple vista todo indica que YOTIPIANDO tiene un problema de diseño
de la BD
Bendiciones
YoTipiando
2009-10-17 13:36:47 UTC
Permalink
hola amigo :

El campo que cambia en la BD es estado_hab en la tabla Alojamiento.
esto solo tiene dos valores cuando el poerador hace una alojamiento en la
BD se pone estado OCUPADA y si el operador hace una reserva en la misma BD
alojameinto se agrega estado RESERVADA

el estado DISPONIBLE se carcula al estar el campo 'nro_hab' vacio
('NULL') tal como tu dices . si esta lleno entonces comparo si ese
'nro_hab' tiene estado RESERVADA o OCUPADA en la tabla Alojamiento .
en 'estado_hab'

entonces la idea es que en la grilla me muestre cuales son las
habitaciones que estan RESERVADA y cuales son las que estan OCUPADA
y las demas que esten NULL me muestre DISPONIBLE

creo que te mande una cactura. no se si te llego..

saludo un abrazo... cualquier otra duda me notificas.
Entiendo el funcionamiento, de hecho, en la empresa en que trabajo tambien
tenemos un programa de hoteles, pero
? cual es el campo de tu BD que cambia de valor segun el estado de la
habitacion ?
Deberia tener 3 posibles valores o estados, que identifiquen "DISPONIBLE",
"RESERVADA" y "OCUPADA".
El campo que estas controlando 'nro_hab' solo tiene 2 valores, vacio o
lleno (creo haber entendido). En vacio, es habitacion disponible, pero
lleno ¿ lo utilizas tanto para 'RESERVADA', como para 'OCUPADA' ?.
Espero haberme explicado bien.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
En el Sintax que tengo, me muestra todas las DISPONIBLES y las
OCUPADAS pero no las RESERVADAS al menos que en el segundo IIF la
habitacion 50 este justo reservada , ahi si me muestra en la grilla
dicha habitacion que esta en estado RESERVADA pero solo me muestra
esa sola habitacion las otras que estan RESERVADAS no me la muestra.
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="50","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
a simple vista podria hacer un simple select * from tabla y listo pero
necesito filtrar la fecha a consultar....
Post by Jose A. Blasco
Creo que no he sabido exponerte mi duda.
Segun tu codigo,
si el campo 'nro_hab' esta vacio (realmente .null.), consideras que la
habitacion esta disponible
si el campo 'nro_hab' es igual a '48', la habitacion esta reservada
si el campo 'nro_hab' es diferente a '48', la habitacion esta ocupada
el campo 'nro_hab' lo tomas del fichero o cursor 'cur_diasocu'.
Mi pregunta es como distingues en este fichero o cursor, entre una
habitacion ocupada o reservada.
Tal como haces el 'select', solo comparas con la habitacion '48'.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Claro lo que hace es todas las habitaciones estan DISPONIBLES . y a
su vez me muestra las OCUPADAS Y RESERVADA el tema es que en
la consulta las que estan RESERVADA me la muestra como OCUPADAS
cuando realmente estan RESERVADA excepto la nro 48 que es la que
esta en el segundo IIF.
----------------------------------------------------------------------
Post by Jose A. Blasco
¿ Como distingues entre que una habitacion este RESERVADA u OCUPADA ?
Aparentemente, todos los controles los haces por el campo 'nro_hab',
que supongo almacena el número de habitacion. Si en ambos casos
(reservada y ocupada) esta rellenado por el número de habitacion, no
podrás establecer una diferencia.
Un saludo.
--
José A. Blasco
-------------------
Zaragoza - España
Post by YoTipiando
en esta consulta me sale lo que quiero hacer
SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="48","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
en este caso en el segundo IIF la habitacion 48 esta RESERVADA y me
sale como RESERVADA pero no se como encarar que en debe de hacer
referencia a solo el 48 . que sea una variable o algo para que me
muestre todas que estan RESERVADA , asi junto con todas las que
estan OCUPADA y todo las que estan DISPONIBLE
Post by extremo
No me queda claro cual es la condicion para conocer cuando una
habitacion se encuantra en estado "reservada"
Bendiciones
YoTipiando
2009-10-17 13:58:59 UTC
Permalink
es sencillito en el segundo IIF solo necesito cambiar el 50 por alguna
variable o alguna sintax que me de todas las habitaciones RESERVADAS si
no estan reservadas entonces seran OCUPADAS



SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="50","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles



--------------------

aqui le paso todo el sintax


SELECT fe.fecha , ocu.nro_hab , ocu.tipo_hab , ocu.estado_hab ,
ocu.ubicacion ,;
ocu.fecha_ingreso , ocu.fecha_retiro;
FROM fecha fe , alojamiento ocu ; *** en alojamiento son las nuevos
datos que van ingresando solo dos RESERVADA o OCUPADA ***
WHERE fe.fecha between ;
ocu.fecha_ingreso AND ocu.fecha_retiro;
INTO CURSOR cur_diasocu


SELECT fe.fecha, ha.nro_habitacion,
ha.tipohabitacion,ha.estado_hab,ha.ubicacion,;
ha.marca;
FROM fecha fe , habitacion ha ;
INTO CURSOR Temp1


SELECT tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="50","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca,tp.fecha;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
YoTipiando
2009-10-18 23:18:12 UTC
Permalink
Hola amigo una duda. que parametro es la que me da para que sea 1 o 2 o 0
. porque me sale todo como 'QUIEN SABE'

?????

gracias de ante manos
Pues yo soy de los que preferimos hacerlo a la fuerza bruta cuando no hay
alguna solucion LOGICA.
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,nro_hab,;
SPACE(10) as Estado_hab,tp.ubicacion,tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles READWRITE
SCAN
DO CASE
CASE nro_hab="0" && bueno aqui no se como lo manejes 0,1,2
replace Estado_hab with "DISPONIBLE"
CASE nro_hab="1"
replace Estado_hab with "OCUPADO"
CASE nro_hab="2"
replace Estado_hab with "RESERVADA"
OTHERWISE
replace Estado_hab with "QUIEN_SABE"
ENDCASE
ENDSCAN
a esto le llamo "a la fuerza bruta"... :)
Saludos.
Post by YoTipiando
Hola compañeros.. tengo una consulta donde me muestra en una grilla
las habitaciones que estan OCUPADAS , DISPONIBLES Y RESERVADA
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="2","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
la consulta me muestra los datos: y aqui viene la duda. todas las
reservadas me la muestra como OCUPADA salvo que sea la habitacion nro 2
en el segundo IIF " IIF(nro_hab="2","RESERVADA","OCUPADO " )) " si
tengo la habitacion 2 como RESERVADA si aparece como RESERVADA pero si
tengo la habitacion 50 como reservada. me aparece como OCUPADA
Ahora en el segundo IIF si cambio el 2 por el 50 , aparece el 50 como
RESERVADA y el 2 como OCUPADO
Lo que no se como ponerlo para que todas las habitaciones que este
RESERVADA en la consulta me muestre RESERVADA y las OCUPADAS como
OCUPADAS.
bueno muchas gracias desde ahora.. debe de ser sencillo pero no le
encuentro la vuelta de sacar el Nro 2 y poner algo como una Variable
con todos las habitaciones RESERVADAS...
YoTipiando
2009-10-19 03:04:06 UTC
Permalink
Listo problema resuelto. muchas gracias por aquellos que cooperaron...
a la verda fue de mucho alivio

al final quedo de esta manera


SELECT tp.nro_habitacion, tp.tipohabitacion,;
SPACE(10) as Estado_hab,tp.ubicacion,tp.marca,tp.fecha,ocu.nro_hab,ocu.m;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles READWRITE

SCAN
DO CASE
CASE cur_fechaDisponibles.m=0
replace Estado_hab with "DISPONIBLE"
CASE cur_fechaDisponibles.m=1
replace Estado_hab with "OCUPADO"
CASE cur_fechaDisponibles.m=2
replace Estado_hab with "RESERVADA"
OTHERWISE
replace Estado_hab with "DISPONIBLE"
ENDCASE
ENDSCAN


En la tabla Alojamiento hice un campo referencial M donde asigno un valor
, segun el estado en que se encuentra las habitaciones. y en el CASE
filtro ese valor en cada rengron y listo con eso me ayudo hacer la
consulta que pretendia hacer..

gracias de ante manos . principalmente a LSC Juan de Dios Corrales
Leal
Post by YoTipiando
Hola amigo una duda. que parametro es la que me da para que sea 1 o 2 o
0 . porque me sale todo como 'QUIEN SABE'
?????
gracias de ante manos
Pues yo soy de los que preferimos hacerlo a la fuerza bruta cuando no hay
alguna solucion LOGICA.
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,nro_hab,;
SPACE(10) as Estado_hab,tp.ubicacion,tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles READWRITE
SCAN
DO CASE
CASE nro_hab="0" && bueno aqui no se como lo manejes 0,1,2
replace Estado_hab with "DISPONIBLE"
CASE nro_hab="1"
replace Estado_hab with "OCUPADO"
CASE nro_hab="2"
replace Estado_hab with "RESERVADA"
OTHERWISE
replace Estado_hab with "QUIEN_SABE"
ENDCASE
ENDSCAN
a esto le llamo "a la fuerza bruta"... :)
Saludos.
Post by YoTipiando
Hola compañeros.. tengo una consulta donde me muestra en una grilla
las habitaciones que estan OCUPADAS , DISPONIBLES Y RESERVADA
SELECT tp.fecha, tp.nro_habitacion, tp.tipohabitacion,;
IIF(ISNULL(nro_hab),"DISPONIBLE",IIF(nro_hab="2","RESERVADA","OCUPADO
" )) as Estado_hab,tp.ubicacion,;
tp.marca;
FROM temp1 tp LEFT JOIN cur_diasocu ocu ;
ON DTOC(tp.fecha,1)+nro_habitacion = DTOC(ocu.fecha,1)+ocu.nro_hab;
INTO CURSOR cur_fechaDisponibles
la consulta me muestra los datos: y aqui viene la duda. todas las
reservadas me la muestra como OCUPADA salvo que sea la habitacion nro 2
en el segundo IIF " IIF(nro_hab="2","RESERVADA","OCUPADO " )) " si
tengo la habitacion 2 como RESERVADA si aparece como RESERVADA pero si
tengo la habitacion 50 como reservada. me aparece como OCUPADA
Ahora en el segundo IIF si cambio el 2 por el 50 , aparece el 50 como
RESERVADA y el 2 como OCUPADO
Lo que no se como ponerlo para que todas las habitaciones que este
RESERVADA en la consulta me muestre RESERVADA y las OCUPADAS como
OCUPADAS.
bueno muchas gracias desde ahora.. debe de ser sencillo pero no le
encuentro la vuelta de sacar el Nro 2 y poner algo como una Variable
con todos las habitaciones RESERVADAS...
Loading...