Cómo crear la lógica de las reservaciones ?

2,584 views
Skip to first unread message

Fox Learner

unread,
Sep 18, 2012, 10:31:29 AM9/18/12
to publice...@googlegroups.com
Estoy haciendo un sistema hotelero. Hasta ahora solo reviso que la habitación no haya sido ocupada o reservada para cierto periodo, en cuyo caso, permite la reservacion. Es decir, el operador sabe que si la reservación logra pasar el filtro, la habitación está disponible. De otra forma, estará ocupada.

Por qué ? .. Porque se me complicó idear la forma de crear espacios que digan que la habitación está disponible o pendiente de ser reservada.

Es decir,  la forma que veo que puede hacerse es crear una tabla por habitación donde estén contenidos los todos los días de cierto año. Para que de esa forma pueda saberse por ejemplo que el 2 de mayo la habitación está disponible.

Pero hacer eso implicaría generar una tabla con información vacía para cada habitación, lo que me parece un consumo de recursos innecesario. Otra opción que veo que puede ayudar es un control tipo calendario para cada habitación, cambiando el estatus de cierto dia pero eso es solo algo que he pensado, ya que no sé si los controles calendarios permiten hacer algo asi.

Ahora bien, escalando el tema de las reservaciones, cuál sería la lógica para el control de reservaciones de una linea aerea o de autobuses ? ...

La pregunta es específica en cuanto a cómo generar los espacios disponibles o aquellos en espera de ser reservados, como los asientos o habitaciones por ocupar.

Ojala logre darme a entender..

Gracias!

smartito

unread,
Sep 18, 2012, 10:42:10 AM9/18/12
to publice...@googlegroups.com
Hola,

No se si entendí muy bien lo que quieres.. pero ahí va como lo haría yo.

Lógica para reservas en un BUS.

Una tabla donde tenga los buses físicos que dispongo. Mi flota (BUS-0001 40plazas, BUS-0002 35plazas)
Una tabla donde tenga los horarios de salida de esos buses. BUS-0001 18/09/2012 10:00 (el BUS-0001 el día de hoy tiene un viaje previsto a las 10:00 de la mañana)
Una tabla donde tenga las reservas para cada viaje. RESERVA-001 BUS-001 18/09/2012 10:00 PLAZA-001, RESERVA-002 BUS001 18/09/2012 10:00 PLAZA-002

Vuelvo a reiterarme en que no se si eso es lo que buscas/necesitas.. si no van por ahí los tiros. Me dices algo.

Saludos!

Programas ToP

unread,
Sep 18, 2012, 11:01:00 AM9/18/12
to publice...@googlegroups.com
Fox Learner, la idea es que esa tabla con todos los días del año o del periodo que sea, sea un cursor en memoria y con las reservas que están en la tabla de reservas marcas los registros de los días que corresponda como ocupados.
Nosotros empleamos esa técnica en las clínicas con las agendas de pacientes: los médicos cambian los horarios de atención y entonces guardar los cupos de atención teóricos en una tabla no era práctico. Guardamos los horarios de atención genéricos: por ejemplo los lunes de 8 a 12, y de 15 a 16:30 el martes de 11 a 13, etc. Con esos parámetros se crea el cursor de disponibilidad y con las citas ya registradas se marcan como ocupados los turnos, los que no están ocupados están disponibles. Ese tipo de diseño es rápido y práctico y no se guarda en la BD sino lo realmente registrado, además permite la flexibilidad de los cambios de horarios de disponibilidad.
Espero que la idea te sirva.
Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.
--
 
 
 

edgar suarez kummers

unread,
Sep 18, 2012, 11:20:08 AM9/18/12
to publice...@googlegroups.com
Exactamente como piensas debe ser.

Colocas la habitación por cada día del año y con dos adultos en la cama matrimonial y un bebé entre una cuna.

Los dibujas dentro de la habitación vacía y los resaltas si va a estar ocupada por un bebé y un adulto ó un bebé y dos adultos.

Para cada habitación una tabla y dentro de cada tabla 366 días y si el año no es bisiesto, pues dejas siempre ocupado el 29 de febrero.

Visual Foxpro no se saturará con un gasto en recursos tan pequeño.

saludos

edgar


edgar suarez kummers


--
 
 
 

Guillermo MDQ

unread,
Sep 18, 2012, 12:12:05 PM9/18/12
to publice...@googlegroups.com
No coincido para nada con una tabla por cada habitacion. Si fuera un hotel de 1000 habitaciones tendrias 1000 tablas ?
Los datos importantes en la reserva es la cantidad de personas y las fechas desde/hasta de la reservacion.
El numero de habitacion a ser reservada depende mucho de la antelacion con que se hace la reserva.
No siempre que se hace una reserva se puede saber que habitacion le sera asignada a la misma, ya que eso se dispone cuando este cercana la fecha de llegada de los pasajeros. Esto es por que pueden quedar dias muertos entre periodos de ocupacion para una habitacion determinada si se la reserva con mucha antelacion, y eso en el manejo de un hotel hay que minimizarlo lo mas posible, sobre todo en periodos de temporada alta los dias no se pueden perder.
Con na tabla de reservaciones con el numero provisorio de habitacion, cantidad de personas y fechas de reserva desde/hasta es suficiente pata armar un cursor para visualizar las reservas en un periodo determinado.

Saludos
Guillermo

Luis Mata

unread,
Sep 18, 2012, 12:19:26 PM9/18/12
to publice...@googlegroups.com
Una sola tabla y cada habitación con un código único.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

--
 
 
 
logo2[3].png
imgfrm[3].png

edgar suarez kummers

unread,
Sep 18, 2012, 12:21:28 PM9/18/12
to publice...@googlegroups.com
Buenas Guillermo:

Solamente quería recordarte que 1000 tablas para 1000 habitaciones no es nada voluminoso para VisualFoxpro.

En 1000 años apenas copan 366'000 registros, eso es nada voluminoso para VisualFoxpro.

Piensa que uno esté casado con una mujer gorda que ella misma se financia la comida ... eso es igualmente nada para un varón bien dotado (ja,ja,ja)

saludos

edgar


edgar suarez kummers


--
 
 
 

Luis Mata

unread,
Sep 18, 2012, 12:25:24 PM9/18/12
to publice...@googlegroups.com
Claro se puede poner un millón de tablas, y después cuando el hotel crezca hay que esta metiéndole mano al sistema y codificando por cada tabla. Muy engorroso.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

 
Sent: Tuesday, September 18, 2012 11:21 AM
Subject: Re: [vfp] Cómo crear la lógica de las reservaciones ?
 
--
 
 
 
logo2[3].png
imgfrm[3].png

Guillermo MDQ

unread,
Sep 18, 2012, 12:29:23 PM9/18/12
to publice...@googlegroups.com
Jajaja Edgar, lo de las 1000 tablas no lo digo por la capacidad, ya que se que no es nada para voluminoso para el fox.
Solo lo digo por cuestiones de diseño y practicidad.
Para mi con una sola tabla se puede resolver mucho mejor.

Saludos
Guillermo

leonardo trujillo

unread,
Sep 18, 2012, 1:43:05 PM9/18/12
to publice...@googlegroups.com
una tabla para las habitaciones (código y nombre o número,...)
una tabla para reservas (codigo habitaciones, entrada, salida,...)
cuando vayas a hacer una reserva sólo buscas en la tabla reservas entre las fechas entrada, salida para la habitación
lo solucionas con 2 tablas y con consultas sql
saludos
--
 
 
 

Antonio Meza

unread,
Sep 18, 2012, 1:52:17 PM9/18/12
to publice...@googlegroups.com
No eh diseñado un sistema para hotel, pero se me ocurre algo así de rápido...

Necesitas una tabla por ejemplo HABITACIONES, donde sea un catalogo que puedas dar de alta las N habitaciones que tiene el hotel.

Otro catalogo de Tipos de Movimientos, donde vas a dar de alta RESERVACION, MANTENIMIENTO, OCUPADA, LIBRE, etc. para tener diferentes opciones que aplican a cada habitación según su estado actual..

Y la tabla de MOVIMIENTOS, donde vas a asignar el tipo de movimiento a la habitación, para saber en que estado se encuentra, y no tener varias tablas por reservacion o por ocupada, etc. si no una sola que te permita saber el estado de una habitacion por fecha con simples consultas SQL.

Estrucutra de Reservaciones
IdReservacion
idhabitacion
idTipoMovimiento
FechaInicial
FechaFinal

hay que pulir la estructura pero algo asi jeje

saludos
Antonio Meza


Fox Learner

unread,
Sep 18, 2012, 3:00:00 PM9/18/12
to publice...@googlegroups.com
Gracias señores!!

La pregunta es específica en cuanto a cómo generar los espacios disponibles o aquellos en espera de ser reservados, como los asientos o habitaciones por ocupar.

Parece que el compañero Manuel tovar de Colombia es quien contestó de forma acertada. La solución que el propone es utilizar cursores para generar la tabla de habitaciones o asientos de bus disponibles en base a los días del año o periodo que corresponda, mientras que de la tabla de reservaciones se tomarían los datos de las habitaciones o asientos ocupados. Esto último de las reservaciones ya lo tengo implementado, pero lo primero no.

La tabla de habitaciones ya la tengo, la de reservaciones tambien y obvio que tengo muchas otras tablas tanto de catálogo como de producción, pero la pregunta era mas relacionada con cómo poder ver en pantalla las habitaciones o asientos disponibles. Repito, como generar los "disponibles".

He visto sistemas de reservacion de asientos de autobus en los que incluso aparecen los cuadritos en pantalla con el estatus en color, pero el asunto es de donde tomar el dato de los disponibles. De los ya reservados es sencillo.

Saludos!

Walter R. Ojeda Valiente

unread,
Sep 18, 2012, 3:15:06 PM9/18/12
to publice...@googlegroups.com
En realidad es mucho más fácil de lo que estás haciendo.

Una habitación de hotel puede estar en uno (y solamente uno) de los siguientes estados:
- Libre     (por lo tanto, disponible para cualquier pasajero)
- Ocupada   (alguien ya pagó para ocuparla)
- Saliendo  (el huésped ya dejó la habitación pero los encargados aún no terminaron de revisar que todo esté ok dentro de ella)
- Limpieza  (la están limpiando)
- Bloqueada (por algún motivo no se la puede usar, por ejemplo porque la están pintando)
- Borrada   (ya no se la usa como habitación)
- Reservada (aún no llegó el pasajero que la reservó pero se lo está esperando)

Con una simple tabla llamada RESERVAS donde entre otras cosas guardes:
- Número de la habitación
- Fecha de inicio de la reserva
- Hora de inicio de la reserva
- Fecha de fin de la reserva
- Hora de fin de la reserva

ya puedes muy facilmente saber si una habitación está reservada o no para cualquier día y hora de cualquier mes y de cualquier año.

Saludos.

Walter.




Date: Tue, 18 Sep 2012 07:31:29 -0700
From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Cómo crear la lógica de las reservaciones ?
--
 
 
 

Walter R. Ojeda Valiente

unread,
Sep 18, 2012, 3:19:57 PM9/18/12
to publice...@googlegroups.com
Edgar, lo importante no es si se puede, sino si es la mejor solución.

¿Para qué crear 1000 tablas cuándo puedes resolver el problema con solamente 1 tabla?

Saludos.

Walter.





From: edgark...@gmail.com
Date: Tue, 18 Sep 2012 11:21:28 -0500
Subject: Re: [vfp] Cómo crear la lógica de las reservaciones ?
To: publice...@googlegroups.com
--
 
 
 

edgar suarez kummers

unread,
Sep 18, 2012, 3:30:25 PM9/18/12
to publice...@googlegroups.com
A ver ...

Cuando asistí a las clases en la facultad de medicina, ellos tenían una forma de maravilla para conocer la asistencia por parte de los alumnos.

A las 8:00 A.M. menos 5 minutos se cerraba la entrada principal a la Escuela de Medicina, de tal forma que era imposible ingresar después de esta hora.

En cada asiento al respaldo y visto de frente estaba el nombre del alumno que se debía sentar en esta silla.

Simplemente hacia las 9:00 A.M. ingresaba un empleado y listas de alumnos en mano colocaba falla a aquel nombre que fuera capaz de leer.

Todo lo que dices lo puedes hacer barriendo las tablas con lo que desees (inclusive con una escoba) ,..., pero, el inquilino de la habitación 277 del 2 de septiembre de 2004 tenía una "cortada de puñal en la cara" ... la señora de la habitación 158 del 5 de octubre de 2008 llevaba "una rosa en el cabello" ...

Ven por qué sugiero que los años sean de 366 días y una tabla por habitación ... allí puedes colocar reservas, ocupaciones, fotos, ropa a lavar y planchar, llamadas telefónicas, daños locativos ... hasta 255 campos ... cuanta propina dejaron ... si algo se perdió de la habitación.

Puedes llevar en forma adicional todas las tablas que quieras, codificadas y los cursores que tengas a bien, pero almacén de datos es .... como su nombre lo indica, tener toda la información allí, ....

Suponte que ocurra una violación y lo único que recuerde la víctima es que el susodicho tenía una verruga en la nariz ... pues tienes las fotos tomadas al momento del ingreso al hotel y en forma por demás disimulada .. (ja,ja,ja)

suerte FOXLEARNER

edgar



edgar suarez kummers



--
 
 
 

Fox Learner

unread,
Sep 18, 2012, 3:32:01 PM9/18/12
to publice...@googlegroups.com
Me explico mejor...

Supongamos que el operador del sistema elije la habitación 505 (En algunos hoteles las habitaciones empiezan desde un número como 500, aunque no necesariamente hayan 500 antes de la 501).

Luego pone el tipico periodo desde fecha inicial hasta fecha final de la reservación.

Es en ese momento en que el debería ver algo en pantalla que le indique el estatus para la habitación 505.

Como lo tengo implementado solo le muestra las habitaciones que ya estan reservadas en el periodo, pero no las "disponibles".

Se entiende que sea sencillo saber si la habitacion esta reservada o disponible, pero como se muestra ese dato en pantalla ? ..

Por ejemplo para el mes siguiente tendrían que aparecer en la pantalla 31 dias para la habitación y mostrar los días disponibles para la misma.

Mostrar los dias ocupados o reservados es sencillo, pero los disponibles no ya que tendría que tener una tabla con datos vacios.. a eso me refería.

Hasta ahora la idea del cursor suena bien, pero aun sigo pensando que tendría que tener relación con un control tipo calendario..

Saludos!

Luis Mata

unread,
Sep 18, 2012, 3:34:23 PM9/18/12
to publice...@googlegroups.com
Me late que vas a tener que usar CreateObject() y BindEvent() para poder crear el modo grafico  a visualizar...
 
image
 
Tipo esto, debes de hacer un buen algoritmo.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

--
 
 
 
image[1].png
logo2[3].png
imgfrm[3].png

Fox Learner

unread,
Sep 18, 2012, 3:38:36 PM9/18/12
to publice...@googlegroups.com
Edgar, lo que dices es exactamente lo que veía que se implementaba en un sistema para eventos especiales como bodas, etc.

Antes de que existiera el sistema la señorita tenía 3 agendas que decían:

Agenda 1: Salon de fiestas

Agenda 2: Palapa con jardines y alberca.

Agenda 3: Palapa restaurant

De ahi en adelante era muy sencillo saber si cierto evento podía celebrarse en X fecha dependiendo del lugar en cual se quisiera celebrar. Solo revisaba la agenda para cada lugar y listo!!

Pero en un hotel, tendría que tener una especie de Agenda para cada habitación. Ese es el punto..


Víctor Hugo Espínola Domínguez

unread,
Sep 18, 2012, 3:47:12 PM9/18/12
to publice...@googlegroups.com
Hola Fox Learner

Mira el gráfico adjunto:

Saludos.
Víctor.




--
 
 
 

HabitacionesHotel.jpg

Hector R. De los Santos

unread,
Sep 18, 2012, 3:55:54 PM9/18/12
to publice...@googlegroups.com
Bajo ningun concepto se debe crear una tabla por cada habitacion, esto simplemente rompe con toda regla de normalizacion y en su momento este tipo de practica se torna inmanejable.
Me he topado con muchos sistema que usan este tipo de practicas que se pudieran haber resuelto con dos tablas y un JOIN o un WHERE. (Hablo de sistemas relativamente viejos, donde ese tipo de funciones existian).

Para tu caso no veo cual es el problema de usar una tabla para manejar las reservaciones.
Puedes tener una tabla para las habitaciones, que esta seria Maestro de habitaciones donde estarian las caracteristicas, ubicacion, piso, nombre, tipo, etc.
Luego una tabla para las reservaciones, desde esta tabla puedes manejar todo lo que indicas, rangos de fecha de disponibilidad y demas.

Los datos de los sistemas deben ir creciendo de forma horizontal, no de forma vertical.
Recuerdo un amigo programador que tenia un sistema de nomina que guardaba las deduciones en la misma tabla de nomina, esto no lo vi correcto, le recomende que usara una tabla aparte para las deducciones, donde desde la tabla de mantenimiento de empleado se le indicara cuales deduciones o ingresos adicionales iba a tener dicho empleado.
Esto le ahorro muchas lineas y visitas al cliente ya que los mismos usuarios del sistema podian agregar un tipo de deducion e indicar en base a que se haria el descuento y hasta enlazar a una cuenta contable.

De la forma que el lo tenia cada vez que se requeria una deducion nueva el tenia que agregar un campo a la tabla y reprogramar varias cosas incluso reportes.

Con esta breve historia solo te queria indicar que aveces por tomar el camino mas corto y facil luego se puede tornar largo y dificil.

Suerte!


:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363




--
 
 
 

Fox Learner

unread,
Sep 18, 2012, 4:04:35 PM9/18/12
to publice...@googlegroups.com
Hector, lo que dices es lo que ya tengo implementado y funciona sin problemas.

Que me puedes decir del problema en si ? ...

Hector R. De los Santos

unread,
Sep 18, 2012, 4:14:17 PM9/18/12
to publice...@googlegroups.com
Sobre el problema que tienes creo que debes hacer como haces cuando vas a comprar un vuelo, lo primero que indicas es la fecha o rango de fecha.
Ya en base a esos datos es lo que vas a mostrar al operador para que este le sugiera al cliente cuales habitaciones estan disponibles.

:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


2012/9/18 Fox Learner <thenewin...@gmail.com>
Hector, lo que dices es lo que ya tengo implementado y funciona sin problemas.

Que me puedes decir del problema en si ? ...

--
 
 
 

Fox Learner

unread,
Sep 18, 2012, 4:21:42 PM9/18/12
to publice...@googlegroups.com
Amigo, eso ya lo tengo implementado, pero veo que no consigo darme a entender..

Gracias anyway!

Mario López

unread,
Sep 18, 2012, 4:24:46 PM9/18/12
to publice...@googlegroups.com
@FoxLearner:

según lo veo yo, solamente necesitarías una tabla de habitaciones y otra de reservas:

Habitacion
    HabID
    HabCodigo 
   ...

Reserva (Res)
    ResID
    HabID
    ResDesde    D
    ResHasta     D
    ....
  
Con esa estructura te sería suficiente con un simple SELECT para ver cuáles son las habitaciones que no están ocupadas en un determinado rango de fechas, algo así como:

SELECT * FROM Habitacion Hab ;
WHERE HabID NOT IN (SELECT HabID FROM Reserva WHERE ?dDesde <= RecHasta AND ?dHasta <= RecDesde)

(no probé el código anterior, pero era algo así o bastante similar)

Obvio que para un sistema real agregarías más características a las habitaciones y a las reservas para cruzarlas en la consulta: cantidad de plazas, camas (matrimonial, simple, cuna), tipo de habitación (Estándar, Superior, Suite, etc).
Estas características deberían también ser definibles para cada hotel: por ejemplo: Vista al Mar o Vista al Lago, etc.

HTH
Mario
---

---

Hector R. De los Santos

unread,
Sep 18, 2012, 4:25:18 PM9/18/12
to publice...@googlegroups.com
Por lo que pude entender veo que quieres mostrar las habitaciones disponibles desde un rango de fecha, eso se resuelve con un JOIN (Left , rigth, full), por algo Victor Hugo te puso la imagen explicando los tipos de Join.

Si no es correcto lo que endiendo puedes explicar, a ver si te podemos ayudar.


:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


El 18 de septiembre de 2012 15:51, Fox Learner <thenewin...@gmail.com> escribió:
Amigo, eso ya lo tengo implementado, pero veo que no consigo darme a entender..

Gracias anyway!

--
 
 
 

Fox Learner

unread,
Sep 18, 2012, 4:35:51 PM9/18/12
to publice...@googlegroups.com
Así es.. deseo que el operador pueda ver en pantalla las habitaciones disponibles. El asunto con las consultas es que estas deben ser aplicadas sobre una tabla o sobre un cursor.

Según mi punto de vista, nunca podrían ser aplicadas sobre la tabla de reservaciones.

¿Por qué ? Porque en las reservaciones solo están las que ya fueron reservadas. No las que están disponibles.

Ahora, si tomo como referencia los dibujitos, los circulos no toman en cuenta todas las variables implicadas, solo 2.

Saludos!

Guillermo MDQ

unread,
Sep 18, 2012, 4:35:55 PM9/18/12
to publice...@googlegroups.com
Otra cosa que tendrías que prever en el sistema son las reservas por grupos.
Es muy comun que desde una Agencia de Turismo te lleguen contingentes de personas que forman un grupo y se traladan por ejemplo en un mismo Bus.
A que grupo pertenece cada persona y cada habitacion que reservas tambien es informacion importante.

Saludos
Guillermo

Fox Learner

unread,
Sep 18, 2012, 4:39:59 PM9/18/12
to publice...@googlegroups.com
Si, lo de los grupos es sencillo. Se podría resolver con agregar un solo campo donde se agregue el nombre del grupo.

Lo que trato de hacer es lo que puso el Ing. Luis Mata. Que se vean en pantalla las habitaciones o asientos disponibles.

Saludos!

Víctor Hugo Espínola Domínguez

unread,
Sep 18, 2012, 4:45:46 PM9/18/12
to publice...@googlegroups.com
Hola Fox Learner

Al "dibujito" solo falta agregarle WHERE rango de fechas y otros filtros que sean necesarios, por ejemplo tipo y capacidad de habitación, etc...

Si nos muestras un boceto de la pantalla que quieres exhibir, quizás podríamos darte más ideas.

Saludos.
Víctor.


--
 
 
 

Hector R. De los Santos

unread,
Sep 18, 2012, 4:54:23 PM9/18/12
to publice...@googlegroups.com
Con mi primera respuesta aclara lo que quieres hacer. Y vuelvo a repetir, por algo Victor Hugo te puso la foto explicando los Joins.
Cuando haces un select no necesariamente es para traer lo que hay, tambien puedes traer lo que no hay, o lo que no esta de un lado o de otro.
Para lo que deseas aparte de un JOIN solo faltaria un Where o algun otro filtro.

Te recomiendo que leas sobre la utilizacion de los JOINS (ver los resultados de cada ejemplo)

Estoy seguro que cuando aprendas ahora como se utilizan los joins ya nadie te podra hablar de Joins, sabras mas que nadie.


Soy de los que dice que es mejor enseñar al indio a cazar que darle la la comida lista y servida.


Suerte!

:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


--
 
 
 

Guillermo MDQ

unread,
Sep 18, 2012, 4:59:17 PM9/18/12
to publice...@googlegroups.com
Podrias mostrar los estados de las habitaciones con una grilla.
Por ejemplo las filas serian las fechas y las columnas las habitaciones.
Las habitaciones las podrias mostrar por pisos.
Si el hotel tiene por ejemplo 20 habitaciones por piso, necesitas 20 columnas para todas las habitaciones.
Como generalmente las habitaciones de los hoteles las numeran segun los pisos, 101, 102, 103 te indican las del primer piso, 501, 502, te indican las del quinto piso, tenes una forma facil de identificarlas.

Saludos
Guillermo

Hector R. De los Santos

unread,
Sep 18, 2012, 5:00:55 PM9/18/12
to publice...@googlegroups.com
Aclaro, lo que quieres hacer no necesariamente se puede hacer con un JOIN, con una sub consulta tambien lo puedes hacer, Mario Lopez mostro un excelente ejemplo de lo que quieres hacer.




:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


leonardo trujillo

unread,
Sep 18, 2012, 5:16:40 PM9/18/12
to publice...@googlegroups.com
adhiero a lo que dice walter, así hice un sistemita para acreditación a asambleas que requería control de asistencia y reserva del lugar que le corresponde al titular, con suplencia automática y sumatoria de horario de permanencia
grande walter

--
 
 
 

Programas ToP

unread,
Sep 18, 2012, 5:47:28 PM9/18/12
to publice...@googlegroups.com
Fox Learner.
En la idea que te contaba esta mañana. La rejilla de la izquierda muestra los turnos disponibles como "huecos" sin ocupar.
En tu caso en lugar de horas serían días del año.
El control calendario en el ejemplo que te envío sirve para seleccionar rápidamente la fecha que se desea.
Espero que te sirva la idea.

Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.
--
 
 
 

Mario López

unread,
Sep 18, 2012, 5:53:07 PM9/18/12
to publice...@googlegroups.com
@Hector:
Bueno, por lo menos alguien sí leyó mi post :)

A ver, Learner, después de todos tus posts no se entiende (por lo menos yo no entiendo) si tu problema es:
1) la estructura de datos para almacenar las reservas
2) la instrucción SQL a ejecutar sobre la estructura de datos 1) para obtener las habitaciones disponibles
3) la forma de mostrar el resultado obtenido en 2)

Yo te contesté el 1) y el 2), si fuera el 3) te mando una pantalla de mi sistema; en general todos los sistemas de reservas hoteleras que ví usan algo similar: una cuadrícula con las habitaciones como filas y los días como columnas, marcando
luego con colores el estado de cada celda habitación/día.

Habitacion / Fecha: 01/09 | 02/09 | 03/09 ...
 101
 102
 103
...

HTH
Mario

---
Reservas1.jpg

edgar suarez kummers

unread,
Sep 18, 2012, 5:56:41 PM9/18/12
to publice...@googlegroups.com
Increible ...

una consulta oftalmológica cada 3 minutos.

Se parece a mis épocas de joven en Karlsruhe, Alemania.

Empresa SIEMENS 

Sitio: el almuerzo en el casino.

Habían unas alemanas gordas y tetonas cada una armada con un cucharón.

Pasaba el comensal con una bandeja en acero inoxidable con sendos compartimentos.

Cada alemana hundía el cucharón entre una olla gigantesca y

zuass, entre la bandeja que uno llevaba y así el siguiente etc ...

Es el colmo de la eficiencia una consulta oftalmológica cada 3 minutos.

Qué tal que fuera citas con un proctólogo ...

Meta el dedo, saque el dedo ... siguiente .... (ja,ja,ja)


edgar suarez kummers


--
 
 
 

cdiiaedd.png

Antonio.xt

unread,
Sep 18, 2012, 6:59:14 PM9/18/12
to publice...@googlegroups.com

FoxLearner, yo hace ya tiempo hice algo parecido, era un sistema para el control de salas de junta y salas de capacitacion, y el concepto es muy similar a lo que estas haciendo, solo que aqui se separaban por horas, o dias y horas; y las habitaciones del hotel por lo general son por dias, es decir, se ocupan a cierta hora del dia y se regresa a otra hora del dia, aunque puede darse el caso de que se ocupe una habitacion el mismo dia en que se desocupo, por ejemplo en temporada alta; entonces por ese lado no hay problema.

Lo que si es correcto es que necesitas por lo menos 3 tablas:
  • La tabla principal es la del catalogo o maestro de habitaciones
  • El registro o detalle de las reservaciones por fecha
  • La informacion de la reservacion como por ejemplo, el cliente, persona que reservo, cantidad de personas, paquete incluido, etc.

Lo ideal seria que se muestre el detalle de reservaciones en un formulario tipo calendario, y que se vean en diferentes colores segun el estatus de la habitacion, como reservada, ocupada, en limpieza, o disponible. y al dar click en un dia que se muestre la informacion de la reservacion.

Alejandro P

unread,
Sep 18, 2012, 7:38:13 PM9/18/12
to publice...@googlegroups.com
Hola a todos!

Yo considero que es mas facil tener una tablas relacionadas, por un lado las habitaciones, por el otro otra que tenga la fecha y el estatus de ocupado o reservado, en la consulta de la base cuando se llegue a ese dia ponga el aviso la habitacion esta desocupada, o no, asi mismo las que no tienen ningun movimiento.

Saludos!

El 18 de septiembre de 2012 11:19, Luis Mata <lm...@cclf.com.pe> escribió:
Una sola tabla y cada habitación con un código único.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

 
Sent: Tuesday, September 18, 2012 11:12 AM
Subject: Re: [vfp] Cómo crear la lógica de las reservaciones ?
 
No coincido para nada con una tabla por cada habitacion. Si fuera un hotel de 1000 habitaciones tendrias 1000 tablas ?
Los datos importantes en la reserva es la cantidad de personas y las fechas desde/hasta de la reservacion.
El numero de habitacion a ser reservada depende mucho de la antelacion con que se hace la reserva.
No siempre que se hace una reserva se puede saber que habitacion le sera asignada a la misma, ya que eso se dispone cuando este cercana la fecha de llegada de los pasajeros. Esto es por que pueden quedar dias muertos entre periodos de ocupacion para una habitacion determinada si se la reserva con mucha antelacion, y eso en el manejo de un hotel hay que minimizarlo lo mas posible, sobre todo en periodos de temporada alta los dias no se pueden perder.
Con na tabla de reservaciones con el numero provisorio de habitacion, cantidad de personas y fechas de reserva desde/hasta es suficiente pata armar un cursor para visualizar las reservas en un periodo determinado.

Saludos
Guillermo




El martes, 18 de septiembre de 2012 12:20:32 UTC-3, edgarkummers escribió:
Exactamente como piensas debe ser.
 
Colocas la habitación por cada día del año y con dos adultos en la cama matrimonial y un bebé entre una cuna.
 
Los dibujas dentro de la habitación vacía y los resaltas si va a estar ocupada por un bebé y un adulto ó un bebé y dos adultos.
 
Para cada habitación una tabla y dentro de cada tabla 366 días y si el año no es bisiesto, pues dejas siempre ocupado el 29 de febrero.
 
Visual Foxpro no se saturará con un gasto en recursos tan pequeño.
 
saludos
 
edgar
 
edgar suarez kummers


El 18 de septiembre de 2012 10:01, Programas ToP <progra...@gmail.com> escribió:
Fox Learner, la idea es que esa tabla con todos los días del año o del periodo que sea, sea un cursor en memoria y con las reservas que están en la tabla de reservas marcas los registros de los días que corresponda como ocupados.
Nosotros empleamos esa técnica en las clínicas con las agendas de pacientes: los médicos cambian los horarios de atención y entonces guardar los cupos de atención teóricos en una tabla no era práctico. Guardamos los horarios de atención genéricos: por ejemplo los lunes de 8 a 12, y de 15 a 16:30 el martes de 11 a 13, etc. Con esos parámetros se crea el cursor de disponibilidad y con las citas ya registradas se marcan como ocupados los turnos, los que no están ocupados están disponibles. Ese tipo de diseño es rápido y práctico y no se guarda en la BD sino lo realmente registrado, además permite la flexibilidad de los cambios de horarios de disponibilidad.
Espero que la idea te sirva.
Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.
El 18/09/2012 09:31 a.m., Fox Learner escribió:
Estoy haciendo un sistema hotelero. Hasta ahora solo reviso que la habitación no haya sido ocupada o reservada para cierto periodo, en cuyo caso, permite la reservacion. Es decir, el operador sabe que si la reservación logra pasar el filtro, la habitación está disponible. De otra forma, estará ocupada.
 
Por qué ? .. Porque se me complicó idear la forma de crear espacios que digan que la habitación está disponible o pendiente de ser reservada.
 
Es decir,  la forma que veo que puede hacerse es crear una tabla por habitación donde estén contenidos los todos los días de cierto año. Para que de esa forma pueda saberse por ejemplo que el 2 de mayo la habitación está disponible.
 
Pero hacer eso implicaría generar una tabla con información vacía para cada habitación, lo que me parece un consumo de recursos innecesario. Otra opción que veo que puede ayudar es un control tipo calendario para cada habitación, cambiando el estatus de cierto dia pero eso es solo algo que he pensado, ya que no sé si los controles calendarios permiten hacer algo asi.
 
Ahora bien, escalando el tema de las reservaciones, cuál sería la lógica para el control de reservaciones de una linea aerea o de autobuses ? ...
 
La pregunta es específica en cuanto a cómo generar los espacios disponibles o aquellos en espera de ser reservados, como los asientos o habitaciones por ocupar.
 
Ojala logre darme a entender..
 
Gracias!
--
 
 
 

--
 
 
 
 
--
 
 
 

--
 
 
 

imgfrm[3].png
logo2[3].png

Víctor Hugo Espínola Domínguez

unread,
Sep 18, 2012, 7:44:27 PM9/18/12
to publice...@googlegroups.com
Hola Fox Learner

Creo que te estoy malcriando ;-)

Saludos.
Víctor.


--
 
 
 

Hotel._rar

Walter R. Ojeda Valiente

unread,
Sep 18, 2012, 9:21:30 PM9/18/12
to publice...@googlegroups.com
No necesitas tener una tabla con datos vacíos, como te dije en otro e-mail cada habitación puede tener uno de varios estados, y puedes consultar por cualquiera de ellos.

Saludos.

Walter.





Date: Tue, 18 Sep 2012 12:32:01 -0700
From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: Cómo crear la lógica de las reservaciones ?
--
 
 
 

Jhonny Zambrana

unread,
Sep 18, 2012, 10:13:15 PM9/18/12
to publice...@googlegroups.com
Comparto la idea de Walter, de hecho yo lomanejo como el dice, tengo una tabla maestra con los datos de las habitaciones, y otra con las reservas, como tanbien otra con el estado fisico de la habitacion entiendase como OCUPADO,LIBRE,MANTENIMIENTO por estado fisico la rserva no la tomo como estado fisico por que es un estado transitorio, en mi tabla de resrvas puedo tener la habitacion 505, 50 veces reservada de aqui al año 2525, solo tengo las fecha no todo los dias de los años de aqui a ese año-

Un abrazo y que estes bien..

Fox Learner

unread,
Sep 19, 2012, 9:51:38 AM9/19/12
to publice...@googlegroups.com
Parece que el compañero Manuel Tovar tiene la respuesta que busco. La solución que el propone es mediante cursores y controles calendarios para generar los espacios vacios o disponibles.

Victor Hugo, muchas gracias por compartirme eso de los super joins y los otros códigos.

Veo que controlas el estatus mediante arrays.. eso suena muy bien, pero no suelo implementar algo que no comprendo bien. Agradezco todo el tiempo que te hayas tomado para elaborar el ejemplo.

Ahora bien, veo que pones una sola columna para el status de la habitación y posiblemente vas cambiando el status mediante los arrays que pones (no lo sé con certeza porque no soy experto en Visual Foxpro si no aprendiz).

En un principio pensé en implementar una interfaz gráfica para lo de los status, pero al final me di cuenta que era puro cuento..

¿Por qué ? ... Porque el status no me servía de nada.

¿Por qué ? ... Porque, supongamos que le cambias el status a una habitación a "ocupado" o reservado.

Jajaja.. Ocupado cuando ? ... qué día del año ? ... Ademas los días no son los mismos en cada año.

Entonces, te das cuenta con facilidad que el estatus no sirve.. ya que el status se refiere a una situación que es válida para un solo día.

Ahora sobre los joins que varios han comentado..

Los joins se aplican sobre 2 tablas según el dibujo: la de habitaciones y la de reservaciones.

¿En qué punto te sirve un join si este no toma en cuenta los días disponibles, cuando eso es precisamente lo que se desea lograr ? ..

smartito

unread,
Sep 19, 2012, 9:57:03 AM9/19/12
to publice...@googlegroups.com
Siento ser "borde" pero o ninguno de los que te hemos dedicado tiempo en explicarte cómo se haría lo que "pides" tenemos ni puta idea, o es que no sabes explicar qué es lo que necesitas..

Viendo tu mensaje original, te contestan incluso con código de ejemplo y sigues sin saber cómo hacerlo ?? 

O estás montándote en tu cabeza un cacao de no te menees o no sabemos interpretar lo que "necesitas" o "estas buscando"

PD:  ¿En qué punto te sirve un join si este no toma en cuenta los días disponibles, cuando eso es precisamente lo que se desea lograr ? ..  la clausula WHERE es tu amiga.. 

Fox Learner

unread,
Sep 19, 2012, 10:01:41 AM9/19/12
to publice...@googlegroups.com
También el compañero Jhony Zambrana parece tener la respuesta. Lo que el propone o usa es fechas, en vez de los días del año. Según entiendo tiene las fechas de aquí hasta el 2525.

Me imagino que tienes una tabla tipo:

habitación  1 de enero 2012, 2 de enero 2012, 3 de enero 2012

101            libre                   reservada             libre
102            reservada           libre                     en mantenimiento

Entonces, entiendo que él generó los espacios de las fechas hasta el 2525 de forma manual.

Veo que no es una forma muy ortodoxa pero sí funcional. Bien por ti amigo!!

Gracias a todos por sus ideas. Todas son valiosas!!

Fox Learner

unread,
Sep 19, 2012, 10:08:15 AM9/19/12
to publice...@googlegroups.com
Smartito, 

No es mi intención que nadie se moleste. Solo necesito algunas ideas para lograrlo, eso es todo.

Lo que sucede con los joins es que tienen que ser aplicados sobre algo que existe. Para que un join detecte las habitaciones disponibles estas tendrían que existir, quizás como un "campo" dentro de una de las tablas a las que se aplicará el join.

El asunto es que como explicaba, es imposible usar un estatus que esté solo en una columna, ya que este status (disponible, reservada, en mantenimiento, etc)., solo se cumple para un solo día para cada habitación.

Por eso pienso que el join es útil, pero en este caso, no creo.

Saludos pacificos!

smartito

unread,
Sep 19, 2012, 10:25:36 AM9/19/12
to publice...@googlegroups.com
Sigo sin entender tu necesidad, porque yo si veo el uso del JOIN efectivo y como solución de tú "problema"

Supón que tienes una tabla maestra (sabes lo que es?, una tabla donde tienes todas y cada unas de tus habitaciones de tu hotel) HABITACIONES
Otra para las RESERVAS con la siguiente estructura:

HABITACIONES:
HAB_ID (PK)
HAB_NUMERO
...(CREA UN CAMPO POR CADA CARACTERISTICA QUE QUIERAS TENER DE LA HABITACION)

RESERVAS
RES_ID (PK)
RES_HAB_ID (FK)
RES_FECHA_INICIO
RES_FECHA_FIN
...(CREA UN CAMPO POR CADA CARACTERISTICA DE LA RESERVA QUE QUIERAS GUARDAR, AQUI PUEDES RELACIONAR TAMBIEN CON UNA TABLA CLIENTES... POR EJEMPLO)

Datos de las tablas:

HABITACIONES
HAB001 101
HAB002 102
HAB003 105

RESERVAS
RES001 HAB001 19/09/2012 25/09/2012
RES002 HAB001 26/09/2012 26/09/2012
RES003 HAB001 27/09/2012 28/09/2012

Perfecto ya tenemos los datos ahora: qué queremos mostrar/obtener en pantalla? (según entiendo, tu duda/problema/no sabes como es sacar las habitaciones DISPONIBLES en una fecha no?)

DATOS DE ENTRADA DEL USUARIO: FECHA_INICIO_USUARIO: 19/09/2012 FECHA_FIN_USUARIO: 19/09/2012

Con esta SELECT te da como resultado las HABITACIONES DISPONIBLES QUE HAY EN ESA FECHA

SELECT * FROM HABITACIONES 
LEFT JOIN RESERVAS ON RESERVAS.HAB_ID = HABITACIONES.HAB_ID
WHERE RESERVAS.RES_FECHA_INICIO >= FECHA_INICIO_USUARIO AND  RESERVAS.RES_FECHA_FIN <= FECHA_FIN_USUARIO 

Qué más dudas tienes? Y te lo digo de buen rollo, pero creo que estoy escribiendo exactamente lo que te han dicho todos antes que yo.

SAludos!!

PD: El código está hecho de memoria por si no funciona cuando lo pases a FOX.

Fox Learner *

unread,
Sep 19, 2012, 10:26:57 AM9/19/12
to publice...@googlegroups.com
Antonio.xt

Lo del formulario tipo calendario para mostrar el status de las habitaciones por día sería excelente.

Lo que no sé es como podría agregar el status a un control de ese tipo.

Supongo que se puede agregar una propiedad tipo text a los días del calendario y con eso quedaría.

Ahora tendría que ver como implementar un calendario para cada habitación.

El asunto seguiría siendo donde guardar esos estatus de esa propiedad.. 

Si reinicio el equipo se perderian los status ? ...

Saludos!

Fox Learner

unread,
Sep 19, 2012, 10:37:49 AM9/19/12
to publice...@googlegroups.com
Smartito, gracias por tu interés. Quizás lo que escribes sea la solución. Tendré que analizarla y probarla bien cuando disponga de tiempo. Tal vez es que me cuesta pensar como lo hacen uds. que ya tienen rato en esto.

Mi problema es este: 

la forma de crear espacios que digan que la habitación está disponible o pendiente de ser reservada.

El usar un status no sirve. Solo serviría si el estatus pudiera ponerse como si fuera una etiqueta o marbete para cada día de cada habitación, durante todos las fechas y años por venir. Ese marbete podría presentarse o no de forma gráfica al usuario.

En un post anterior lo intenté explicar de esta forma:

"Edgar, lo que dices es exactamente lo que veía que se implementaba en un sistema para eventos especiales como bodas, etc.

Antes de que existiera el sistema la señorita tenía 3 agendas que decían:

Agenda 1: Salon de fiestas

Agenda 2: Palapa con jardines y alberca.

Agenda 3: Palapa restaurant

De ahi en adelante era muy sencillo saber si cierto evento podía celebrarse en X fecha dependiendo del lugar en cual se quisiera celebrar. Solo revisaba la agenda para cada lugar y listo!!

Pero en un hotel, tendría que tener una especie de Agenda para cada habitación. Ese es el punto.. "



smartito

unread,
Sep 19, 2012, 10:40:34 AM9/19/12
to publice...@googlegroups.com
Pues entonces es más fácil que todo eso ...

Con la select sabes cuantas habitaciones tienes en total (agenda1) disponibles (agenda2) reservadas (agenda3) 

Con un FOR creas un cursor y vas llenandolo con los datos que necesites.. 

Es eso lo que buscas?

Saludos!

Mario López

unread,
Sep 19, 2012, 10:41:37 AM9/19/12
to publice...@googlegroups.com
@Learner:

te mandé 2 posts, uno indicando cómo usar el JOIN para ver las habitaciones disponibles, y otro con una captura
de pantalla de mi sistema para mostrarte una forma de presentar la disponibilidad, leíste siquiera alguno de los 2?

Porque -por lo menos yo- sigo sin tener claro finalmente cuál es tu problema: varios te pasamos la estructura de
datos base para las reservas, el SELECT SQL para obtener las habitaciones disponibles más algunas formas de
visualizar la disponibilidad: ¿qué más te falta?

Mario
---

Fox Learner

unread,
Sep 19, 2012, 10:55:40 AM9/19/12
to publice...@googlegroups.com
Compañero Mario López,

En uno de tus mensajes pones:

Habitacion / Fecha: 01/09 | 02/09 | 03/09 ...
 101
 102
 103

Eso, es precisamente lo que deseo... Como generas las fechas y como guardas el status: reservado, disponible, en mantenimiento, etc. en esas fechas y para cada habitacion.

Gracias!

Mario López

unread,
Sep 19, 2012, 12:13:31 PM9/19/12
to publice...@googlegroups.com
@Learner:

el cuadro ese de doble entrada [Habitación / Fechas] es solamente una forma de visualizar los datos, no quiere decir que tengas que tener una tabla o un cursor con los mismos: de hecho, en uno de los posts anteriores puse una captura del Mapa  de Reservas de uno de mis sistemas y no tuve ninguna necesidad de generar una estructura adicional a la de Habitaciones / Reservas.

Igualmente, si quisieras usar un cursor Habitación / Fechas lo único que tendrías que hacer sería generar la lista de
campos variables (uno por cada día), con la misma crear un cursor y finalmente rellenar los mismos con el estado
(barriendo por cada habitación las reservas efectuadas y llenando cada campo del día con el número de reserva o el estado "Reservado")

HTH
Mario

smartito

unread,
Sep 19, 2012, 12:41:49 PM9/19/12
to publice...@googlegroups.com
A ver si así lo entiendes mejor :


** CREAMOS LOS CURSORES DONDE VAMOS A GUARDAR LA INFORMACION
CREATE CURSOR Habitaciones (hab_id c(10), hab_num n(10), hab_tipo n(1))
CREATE CURSOR Reservas (res_id c(10), res_hab_id c(10), res_fi D, res_ff D)

FOR i=1 TO 10
APPEND BLANK IN Habitaciones
replace hab_id WITH 'HAB0000' + ALLTRIM(STR(i)) ,;
hab_num WITH i,;
hab_tipo WITH 1 IN Habitaciones

APPEND BLANK IN Reservas
replace res_id WITH 'RES0000' + ALLTRIM(STR(i)) ,;
res_hab_id WITH 'HAB0000' + ALLTRIM(STR(i)),;
res_fi WITH DATE()+i,;
res_ff WITH DATE()+i+2 IN Reservas
ENDFOR

** Habitaciones OCUPADAS entre las fechas: 21/09/2012 Y 22/09/2012

SELECT * FROM Habitaciones ;
LEFT JOIN Reservas ON habitaciones.hab_id = reservas.res_hab_id ;
WHERE reservas.res_fi <= CTOD('21/09/2012') AND reservas.res_ff >= CTOD('22/09/2012') ;
INTO CURSOR HabitacionesOcupadas

SELECT Habitaciones
BROWSE
SELECT Reservas
BROWSE
SELECT HabitacionesOcupadas
BROWSE

Ahora cuando llegas a este punto, qué quieres hacer?
SAludos!

Fox Learner

unread,
Sep 19, 2012, 12:50:35 PM9/19/12
to publice...@googlegroups.com
Mario,

El "mapa de reservas" que mencionas es una tabla ? .. O es un archivo de excel que usaste para planear las reservas antes de elaborar el sistema.

En el hotel usan un archivo de excel para el control manual con las características que mencionas, pero si hago eso en el sistema, no estaría generando un archivo o tabla con espacios vacíos ? ..

Y aquí volveríamos a lo que mencionó Edgar..

Fox Learner

unread,
Sep 19, 2012, 12:57:18 PM9/19/12
to publice...@googlegroups.com
Smart,

Precisamente a eso me refería. A que debe haber algo donde se pueda poner una especie de marbete a la habitación por día para cada habitación.

En tu ejemplo creaste cursores. En mi caso uso tablas.

Llegado el punto de saber que habitaciones están ocupadas, ahora deseo que el usuario vea cuales fechas están disponibles para cierta habitación. 

Pero mi pregunta es "como genero esos espacios disponibles" para que pueda ahi en ese espacio poner el marbete "esta reservada para este dia".

Gracias!

Miltiño

unread,
Sep 19, 2012, 12:59:23 PM9/19/12
to publice...@googlegroups.com
Puedes utilizar la lógica que aplico en este sistema que implemente hace mucho para Hoteles.

https://docs.google.com/viewer?a=v&pid=forums&srcid=MTc0MDY2NTExMzU5NTg5ODE4OTMBMTM0NjgyMTA2MjU3MjQzMzU2MTABSVE4ODZQaTRDOXdKATQBAXYy&pli=1

Att.


MILTON

Fox Learner

unread,
Sep 19, 2012, 1:03:44 PM9/19/12
to publice...@googlegroups.com
Ammm... me equivoqué otra vez... En lo ultimo quise decir:

Pero mi pregunta es "como genero esos espacios disponibles" para que pueda ahi en ese espacio poner el marbete "esta DISPONIBLE para este dia".

Porque las reservadas ya las tengo. Es decir, en el modulo de reservaciones, el operador pone la fechas de reservación. El sistema evalua si hay "choque" con alguna otra reservación previa. Si no lo hay graba la reservación. 

De ahi en adelante, sé con certeza en que fechas la habitación ya esta reservada.

Ahora el asunto es que para mayor comodidad del operador, pueda ver en pantalla si es posible (aunque no es del todo necesario), las fechas disponibles.

Es decir, las fechas disponibles son por mucho mayores todo el tiempo que las reservadas. La pregunta es como genero esos "espacios" para las fechas disponibles para poder presentarlas al usuario en pantalla.

Otra vez: deseo que el usuario en vez de ver las fechas en las que ya están reservadas...

Vea las fechas en las que estan disponibles.

Gracias por su tiempo!

smartito

unread,
Sep 19, 2012, 1:04:10 PM9/19/12
to publice...@googlegroups.com
Llegado el punto de saber que habitaciones están ocupadas, ahora deseo que el usuario vea cuales fechas están disponibles para cierta habitación. 

De verdad que sabiendo las habitaciones ocupadas no eres capaz de saber qué habitaciones están libres???????? Las que NO están ocupadas ...

Yo he usado cursores para hacerte el ejemplo, puedes usar DBF's, SQL, Cursores temporales, ... Creo que según he leído sobre ti, sabes "programar" en C# o algo de eso cómo lo harías en ese lenguaje y yo te lo traduzco a FOXPRO. ;)

Saludos!

Fox Learner

unread,
Sep 19, 2012, 1:11:30 PM9/19/12
to publice...@googlegroups.com
Gracias Milton, 

Intentaré revisar tu lógica.

Smart,

Si, tienes razon, las disponibles son las que no están ocupadas.

Ahora dime, como resuelves el asunto de donde poner el estatus de la habitación para cada día.

Es decir, volviendo al ejemplo de la agenda. Si vas a escribir "Disponible o Reservada o En mantenimiento, etc" en un espacio de la agenda, necesitas tener una agenda llena de dias vacíos.

como generarías esos "dias vacíos" sobre los cuales puedes escribir un estatus ?..

Ya me agarraste la onda ? ..

Saludos!

Juan Antonio Castillo Guerrero

unread,
Sep 19, 2012, 1:15:44 PM9/19/12
to publice...@googlegroups.com
Puedes crear un cursor temporal con las habitaciones disponibles. No necesitas tener ese dato permanente en la BBDD.

Enviado desde mi iPhone
--
 
 
 

Mario López

unread,
Sep 19, 2012, 1:21:06 PM9/19/12
to publice...@googlegroups.com
@Learner:

> El "mapa de reservas" que mencionas es una tabla ? .. O es un archivo de excel que usaste para planear las reservas antes de elaborar el sistema...

el "Mapa de Reservas" es un *FORM* cuya captura postée en este mismo thread como contestación: http://goo.gl/yeuEA
Cómo generás esos espacios disponibles? Eso ya te lo contestamos smartito, Hugo y yo (por lo menos de los que recuerdo)

Igualmente me parece que no tenés nada claro lo que querés, o -por lo menos- no lo explicás claramente. Te pregunté en un post anterior si tu problema era:

1) la estructura de datos para almacenar las reservas
2) la instrucción SQL a ejecutar sobre la estructura de datos 1) para obtener las habitaciones disponibles
3) la forma de mostrar el resultado obtenido en 2)

cosa que no contestaste. Para cualquiera de las 3 ya tenés respuestas, no veo qué es lo que te falta.

HTH
Mario

Fox Learner

unread,
Sep 19, 2012, 1:31:29 PM9/19/12
to publice...@googlegroups.com
Smart,

Exactamente: cursores para indicar las disponibles. Eso es lo que me ha había recomendado el amigo Manuel Tovar en los primeros posts. También me recomendó usar un form tipo calendario para los status de los días, pero ahi deje posteadas otras dudas sobre como se implementaría ese form.

Gracias por tu interés, tu tiempo y apoyo con la lógica y códigos!

Saludos!

Fox Learner

unread,
Sep 19, 2012, 1:40:41 PM9/19/12
to publice...@googlegroups.com
Mario,

Según recuerdo, tus respuestas suelen ser de nivel experto.

Según mi entendimiento de principiante te digo lo siguiente:

Mario escribio:

"Igualmente me parece que no tenés nada claro lo que querés, o -por lo menos- no lo explicás claramente. Te pregunté en un post anterior si tu problema era:

1) la estructura de datos para almacenar las reservas

NO. Las reservas ya estan guardadas. Quiero guardar el status para las otras como disponibles, en mantenimiento, etc. Las disponibles en especial.

2) la instrucción SQL a ejecutar sobre la estructura de datos 1) para obtener las habitaciones disponibles

NO. La pregunta nunca estuvo relacionada según lo veo yo con la consulta SQL que se requiera, si es que se requiere..

3) la forma de mostrar el resultado obtenido en 2)

NO. La pregunta no es como mostrar el resultado de una consulta.

La pregunta es como colocar un titulo de status a las habitaciones por cada día.

¿Como generar un espacio donde guardar esos titulos de status, pero repito, me interesan las disponibles.

Creo que algunos compañeros ya me ofrecieron soluciones como los cursores y los calendarios. La cosa es que no entiendo como guardar el dato del estatus en un calendario.

Si creo una propiedad tipo text a ese calendario para cada habitación, se perdería ese dato guardado en la propiedad al reiniciar el equipo ? ...

Todo esto para que?... Para que el usuario pueda visualizar (si es posible, aunque no es tan trascendente que sea algo visual como dibujitos) las disponibles.

Repito: las disponibles.

Gracias!

smartito

unread,
Sep 19, 2012, 1:50:21 PM9/19/12
to publice...@googlegroups.com
Entonces tu problema es cómo diseñar/mostrar al usuario las habitaciones disponibles... no?

Mi pregunta, como te lo diseño? serás tu el que me digas como lo quieres no? es que parece que eso es de lo que se trata, yo te digo cómo hacerlo, pero tú dime COMO QUIERES hacerlo, ya te hemos puesto ejemplos con cursores, tablas, etc... 

pasame tu form diseñado y con los controles que quieras y a ver que podemos hacer... 

no quiero llegar a pensar que nos estas tomando el pelo, porque yo ya no se como explicartelo, asi que soy claro y conciso: COMO QUIERES MOSTRARLE LOS RESULTADOS A TU USUARIO, si tu me dices mira asi: y me pones la pantalla, pues ya vemos como lo hacemos internamente para que se adapte a lo que te he pasado.

Saludos!

Jose Ramon Veliz Martinez

unread,
Sep 19, 2012, 2:06:56 PM9/19/12
to publice...@googlegroups.com
Buenos dias, he estado leyendo todas las respuestas. El caso es que acabo de implementar uno para una de TRANSPORTES BUSES
y esa parte la solucione bien sencillo, bueno eso creo.

Una tabla de BUSES con sus codigos y numeros de asientos
Una tabla de ASIENTOS con el codigo del bus, El campo de cada ASIENTO Numerico, y con un Combo Box en cada Asiento que el usuario al vender el boleto lo actualiza.  En el bus es facil porque todos los asientos estan disponibles al momento de abrir "la hora" en que va a salir y a medida se va vendiendo el boleto o se reservan, este va cambiando de estatus y de color.
1.) Disponible color verde
2.) Ocupado    color rojo
3.) Reservado  color Naranja

Tengo la pantalla con diseño de un bus y el numero de asientos y  el Pasajero selecciona en  que asiento se quiere ir.

Creo que para lo de HOTEL seria lo mismo, una tabla y otra donde se pueda relacionar para ir actualizando sus estatus.

AHORA TENGO EL PROBLEMA, que me estan pidiendo que ponga en la WEB y se hagan las reservas desde alli. El Software esta hecho 100% VFP con tablas nativas. NO SE COMO HACERLO  y pueda desde Internet la disponiblidad. 

Hasta ahora la logica que tengo es que por la Web, poner un formulario de "solicitud" para reservar el asiento y este mande un correo y desde la oficina principal actualicen, pero no es la forma indicada. Como hago para ponerlo en la WEB y se pueda hacer reservacion.

Saludos

Ramon Veliz
ALITEC Honduras
CO Manager






El martes, 18 de septiembre de 2012 08:31:29 UTC-6, Fox Learner escribió:
Estoy haciendo un sistema hotelero. Hasta ahora solo reviso que la habitación no haya sido ocupada o reservada para cierto periodo, en cuyo caso, permite la reservacion. Es decir, el operador sabe que si la reservación logra pasar el filtro, la habitación está disponible. De otra forma, estará ocupada.

Por qué ? .. Porque se me complicó idear la forma de crear espacios que digan que la habitación está disponible o pendiente de ser reservada.

Es decir,  la forma que veo que puede hacerse es crear una tabla por habitación donde estén contenidos los todos los días de cierto año. Para que de esa forma pueda saberse por ejemplo que el 2 de mayo la habitación está disponible.

Pero hacer eso implicaría generar una tabla con información vacía para cada habitación, lo que me parece un consumo de recursos innecesario. Otra opción que veo que puede ayudar es un control tipo calendario para cada habitación, cambiando el estatus de cierto dia pero eso es solo algo que he pensado, ya que no sé si los controles calendarios permiten hacer algo asi.

Ahora bien, escalando el tema de las reservaciones, cuál sería la lógica para el control de reservaciones de una linea aerea o de autobuses ? ...

La pregunta es específica en cuanto a cómo generar los espacios disponibles o aquellos en espera de ser reservados, como los asientos o habitaciones por ocupar.

Ojala logre darme a entender..

Gracias!

Fox Learner

unread,
Sep 19, 2012, 2:43:55 PM9/19/12
to publice...@googlegroups.com
Smart,

No intento hacer enojar a nadie. Te he dicho que agradezco tu ayuda.

Sinceramente, ahora soy yo a quien se me hace dificil explicartelo.

Dejalo así amigo. Ya bastante hiciste por mi.

Te agradezco mucho!

smartito

unread,
Sep 19, 2012, 3:01:14 PM9/19/12
to publice...@googlegroups.com
No estoy enojado, desde el momento que te respondo es porque quiero ayudarte.. pero lo último que has dicho para mí y para todos es fundamental para poder ayudarte, cómo quieres hacerlo? sino lo sabes tu que eres el que tienes la idea en la cabeza... no te estoy pidiendo que me digas pues lo haria con este procedimiento o este otro, sino visualmente, extrapolo a un ejemplo en un foro de Excel del que soy colaborador.

Usuario: Tengo en la celda A1 un 3 y en la celda A2 un 2 quiero en la celda A3 la suma de ambos, osea un 5

Mi respuesta sería: Yo le diría pues en la celda A3 pon: =SUMA(A1:A2)

Me entiendes, pues ahora dime tú :)

Saludos!

Víctor Hugo Espínola Domínguez

unread,
Sep 19, 2012, 3:03:49 PM9/19/12
to publice...@googlegroups.com
Hola Fox Learner

Trataré de aclararte algunos puntos para que no haya malos entendidos:

>Veo que controlas el estatus mediante arrays.. eso suena muy bien, pero no suelo implementar algo que no comprendo bien. >Agradezco todo el tiempo que te hayas tomado para elaborar el ejemplo.

>Ahora bien, veo que pones una sola columna para el status de la habitación y posiblemente vas cambiando el status mediante los >arrays que pones (no lo sé con certeza porque no soy experto en Visual Foxpro si no aprendiz).

Yo no controlo el estado mediante array, éso es algo que te corresponde a tí como diseñador de la base de datos. yo no se (NPI=Ni puta idea) cómo implementaste o implementarás los estados, una(s) tbala(s) adicional(es) o un(os) campos en la tabla de habitaciones (BI=Bad idea ).
Yo sí hago uso de códigos de los cuales NPI, éso se llama: "no reinventar la rueda!"
 
>¿Por qué ? ... Porque el status no me servía de nada.
>¿Por qué ? ... Porque, supongamos que le cambias el status a una habitación a "ocupado" o reservado.
>Jajaja.. Ocupado cuando ? ... qué día del año ? ... Ademas los días no son los mismos en cada año.
>Entonces, te das cuenta con facilidad que el estatus no sirve.. ya que el status se refiere a una situación que es válida >para un solo día.

El estado sí sirve, para mostrar el estado de las habitaciones, parece una perogrullada ;-)
El estado no se refiere a un sólo día sino a un rango de fechas o mejor aún rango de fechas-horas.
El manejo de los estados sería similar al de reservas. El código que te envié debería servirte de guía para implementarlo.

>Ahora sobre los joins que varios han comentado..
>Los joins se aplican sobre 2 tablas según el dibujo: la de habitaciones y la de reservaciones.
>¿En qué punto te sirve un join si este no toma en cuenta los días disponibles, cuando eso es precisamente lo que se >desea lograr ?

Los JOIN y el WHERE te sirven para extraer el conjunto de datos que necesitas para resolver un problema, es como la esposa: te ayuda a resolver problemas que sin ella no los tendrías.

Select Habitacion.nro, Reserva.Desde, Reserva.Hasta ;
FROM Habitacion INNER Join Reserva ON Habitacion.Id = Reserva.IdHabit ;
WHERE Desde Between tdDesde And tdHasta Or ;
 Hasta Between tdDesde And tdHasta Or ;
 Desde <= tdDesde And Hasta >= tdHasta ;

Este WHERE tiene 3 condiciones concatenadas por OR, corresponden a los 3 tipos de reserva que están involucradas en el rango de fechas:
                   tdDesde                                              tdHasta
                                RRR    RRRRRRR   RR
Desde <= tdDesde And Hasta >= tdHasta ;

                   tdDesde                                              tdHasta
               RRRRRRRRRRRRR    RRR    RRRRRRR 
Hasta Between tdDesde And tdHasta

                   tdDesde                                              tdHasta
                                RRR    RRRRRRR   RR      RRRRRRRRRRRRR
Desde Between tdDesde And tdHasta

En cuanto a tu aversión al uso de arrays, ten en cuenta que representa la misma idea que las tablas, en COBOL se llaman tablas a los arrays. Un array de 1 dimensión se corresponde con una tabla, cursor, de un sólo campo. Un array de 2 dimensiones con una tabla de varios campos. Fila con registro, Columna con campo. Indice con número de registro, etc...
Adjunto un código que no usa arrays que produce el mismo resultado.
Imágenes integradas 1

Saludos.
Víctor.

El 19 de septiembre de 2012 09:51, Fox Learner <thenewin...@gmail.com> escribió:
Parece que el compañero Manuel Tovar tiene la respuesta que busco. La solución que el propone es mediante cursores y controles calendarios para generar los espacios vacios o disponibles.

Victor Hugo, muchas gracias por compartirme eso de los super joins y los otros códigos.

Veo que controlas el estatus mediante arrays.. eso suena muy bien, pero no suelo implementar algo que no comprendo bien. Agradezco todo el tiempo que te hayas tomado para elaborar el ejemplo.

Ahora bien, veo que pones una sola columna para el status de la habitación y posiblemente vas cambiando el status mediante los arrays que pones (no lo sé con certeza porque no soy experto en Visual Foxpro si no aprendiz).

En un principio pensé en implementar una interfaz gráfica para lo de los status, pero al final me di cuenta que era puro cuento..

¿Por qué ? ... Porque el status no me servía de nada.

¿Por qué ? ... Porque, supongamos que le cambias el status a una habitación a "ocupado" o reservado.

Jajaja.. Ocupado cuando ? ... qué día del año ? ... Ademas los días no son los mismos en cada año.

Entonces, te das cuenta con facilidad que el estatus no sirve.. ya que el status se refiere a una situación que es válida para un solo día.

Ahora sobre los joins que varios han comentado..

Los joins se aplican sobre 2 tablas según el dibujo: la de habitaciones y la de reservaciones.

¿En qué punto te sirve un join si este no toma en cuenta los días disponibles, cuando eso es precisamente lo que se desea lograr ? ..

--
 
 
 

image.png
hotel2.prg

Fox Learner

unread,
Sep 19, 2012, 3:05:58 PM9/19/12
to publice...@googlegroups.com
José Ramón.

Veo que la lógica de un autobus se parece a la de las mesas de un sistema restaurantero.

Las mesas se ocupan y desocupan durante el dia.

Los asientos de un autobus se ocupan y desocupan durante el dia.

En el caso del hotel las habitaciones se ocupan y desocupan durante el año.

Es ligeramente diferente, pero si en el caso del sistema que creaste es posible realizar reservaciones para los dias por venir, me ayudaría saber como lograste eso..

Gracias!




Juan Salvador

unread,
Sep 19, 2012, 3:12:00 PM9/19/12
to publice...@googlegroups.com
Fox Learner, deberías dibujar un pequeño esquema a "mano alzada" para plasmar tus ideas, luego de eso enviarlo y plantear tu pregunta; asi seria mas entendible lo q

Juan Salvador

unread,
Sep 19, 2012, 3:13:18 PM9/19/12
to publice...@googlegroups.com
que quieras hacer.

Fox Learner

unread,
Sep 19, 2012, 3:47:36 PM9/19/12
to publice...@googlegroups.com
Juan,

Esto es lo que deseo. Que el usuario pueda ver con facilidad las habitaciones disponibles.

Sin embargo, esto puede estar en un control con dibujitos o no.

Podría estar en un simple grid.

Claro que una vez que el operador ingresa la habitación deseada y el periodo, el sistema haría una validación para que las reservaciones no choquen. El asunto es como controlar las llamadas disponibles ya que son muchisimas en cantidad (una por día del año para cada habitación), comparandolas con las reservadas y pueden extenderse infinitamente en el tiempo.

Ahora lo que deseo, no tanto es como presentar los datos de forma gráfica al usuario, sino qué se haría para generar los espacios de fechas que puedan ser rotulados como "reservado, disponible, en reparacion, etc.".

Ya hubo varios compañeros que sugirieron un cursor para las disponibles y con un control calendario controlar los status de la habitación.

Pero si, agrego una propiedad text a un objeto calendario por habitación, el dato que haya guardado en esa propiedad, por ejemplo "disponible", no se perdería al reiniciar el equipo ? ..

Repito: la gráfica no es lo trascendente sino donde guardar los estatus de las habitaciones, las disponibles en especial ya que esas son masivas.

O me recomendarían generar una tabla para cada nuevo año, enviando a un concentrado histórica por año las de años anteriores para luego destruir la que se uso en el año que se acabe de terminar ? ...

Gracias!




CONTROL VISUAL RESERVACIONES.PNG

Programas ToP

unread,
Sep 19, 2012, 3:57:18 PM9/19/12
to publice...@googlegroups.com
Fox Learner, deberías únicamente guardar en tablas las incidencias. Las disponibles serán las que no tengan incidencias.
Incidencias son OCUPADA, EN REPARACION, etc.
Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.
--
 
 
 

Fox Learner

unread,
Sep 19, 2012, 4:09:21 PM9/19/12
to publice...@googlegroups.com
Así es Manuel.. Tu me entendiste desde el principio. Lo unico que aun sigo sin comprender lo del control calendario que comento.

Si guardo solo las que tienen incidencias como reservado, en reparacion, etc. y las no disponibles las manejo con cursores.. aun debo "generar con cursores" las disponibles para los días del año y ahi es donde creo que entraría el uso del calendario.

Creo que por ahi va la cosa. Tener 2 cosas:

* La tabla de incidencias: reservadas, en reparacion, etc.

* Un cursor para generar las disponibles en base a los dias del año y descontando las que tienen incidencias (y aquí es donde entiendo mejor que se podría usar el famoso join que me han estando sugiriendo)

Vaya por fin una luz en el camino jeje

Creo que esa sería la solución compañeros!!

Gracias a todos!

smartito

unread,
Sep 19, 2012, 4:15:15 PM9/19/12
to publice...@googlegroups.com
Fox Learner

Has visto el ejemplo que ha puesto Victor? te lo ha dado hecho... si quieres tener otra tabla de INCIDENCIAS donde relaciones el Estado Fisico de la habitacion... hazlo, puedes tener tanta información como necesites/imagines/desees...

Saludos!

Mario López

unread,
Sep 19, 2012, 4:15:17 PM9/19/12
to publice...@googlegroups.com
@Learner:

Eso que querés es lo que te ya contestamos varios: de los que recuerdo, smartito, Hugo y yo por lo menos.


>> Ya hubo varios compañeros que sugirieron un cursor para las disponibles y con un control calendario controlar los status de la habitación.
>> Pero si, agrego una propiedad text a un objeto calendario por habitación, el dato que haya guardado en esa propiedad, por ejemplo "disponible", no se perdería al reiniciar el equipo ? ..
>> Repito: la gráfica no es lo trascendente sino donde guardar los estatus de las habitaciones, las disponibles en especial ya que esas son masivas.
>> O me recomendarían generar una tabla para cada nuevo año, enviando a un concentrado histórica por año las de años anteriores para luego destruir la que se uso en el año que se acabe de terminar ? ...

NO, NO Y NO!!!!

- NINGUN DATO SE GUARDA EN NINGUN CALENDARIO (DE HECHO, QUE ES "GUARDAR UN DATO EN UN CALENDARIO"?)
- TODOS LOS DATOS SE GUARDAN EN LAS TABLAS, QUE PARA ESO FUERON HECHAS
- LA GRAFICA NO TIENE NADA QUE VER CON LAS TABLAS, ES SOLAMENTE UNA REPRESENTACION DE LA INFORMACION ALMACENADA EN LAS MISMAS
- CUAL SERIA EL SENTIDO DE GENERAR UNA TABLA NUEVA CON CADA AÑO?
- EN LAS TABLAS SE GUARDAN LAS RESERVAS, NO LAS DISPONIBILIDADES

A ver, por ULTIMA VEZ:

- Creás una tabla de habitaciones y una de reservas (3ra vez que lo posteo)

Habitaciones
   HabID
   HabNumero
   ....

Reservas
   HabId
   ResNumero
   ResDesde
   ResHasta
  ....

- Creás el cursor con los campos "variables" por cada día
sCampos = []
dDia = dDesde
FOR nDia = 1 TO dHasta-dDesde
    sCampos = sCampos + IIF(! EMPTY(sCampos), [,], []) + [SPACE(5) AS ] + Day_To_Field(dDia)
    dDia = dDia + 1
NEXT

SELECT HabID, HabNumero, &sCampos FROM Habitaciones ORDER BY HabNumero INTO CURSOR c_Habi READWRITE

- Llenás los campos variables
SCAN
    m.HabID = HabID
    SELECT ResNumero, ResDesde, RsEstadia FROM Reserva WHERE HabID==m.HabID INTO CURSOR c_Reserva
    SELECT c_Reserva
    SCAN
        dDia = ResDesde   && ResDesde=Dia 1 de la reserva
        FOR nDia = 1 TO ResDesde-ResHasta   && RsEstadia=cantidad de dias
            sFld = [c_Habi.] + Day_To_Field(dDia)
            IF TYPE(sFld)=="C"
                REPLACE (sFld) WITH ResNumero   && RsNumero=Numero de reserva
            ENDIF
            dDia = dDia + 1
        NEXT
    ENDSCAN
ENDSCAN

RETURN

FUNCTION Day_To_Field(dDia)
RETURN [Dia_] + CHRTRAN(LEFT(DTOC(dDia),5), "/", "_")

- Queda un cursor:
*    Hanumero    Dia_10_09    Dia_11_09    Dia_12_09    Dia_13_09    Dia_14_09   
*     101                                                                        
*     102        02Q          02Q                                                
*     103        02Q          02Q                                                
*     104        02Q          02Q                                                
*     105                                                                        
*     106        *0K                                                             

HTH
Mario

---

Jose Ramon Veliz Martinez

unread,
Sep 19, 2012, 4:25:08 PM9/19/12
to publice...@googlegroups.com
Las reservaciones las controlo con una tabla de Reservaciones, la ventaja que tengo en este punto es que es por la hora de salida, ya que no se que Unidad de Bus, va a salir en determinada fecha y hora. Entonces tengo una tabla de reservaciones, donde tengo la fecha de salida y el numero de asiento.

Cada vez que se carga el sistema, abre el archivo de reservaciones y los va mostrando en pantalla. 
Cuando es el mismo dia de salida, actualiza la tabla de transacciones diarias, y la de reservacion es cancelada por defecto.

Saludos

Programas ToP

unread,
Sep 19, 2012, 4:28:38 PM9/19/12
to publice...@googlegroups.com
Fox Learner
Nosotros lo que hacemos en el tema de las citas médicas es de acuerdo al periodo seleccionado en el calendario (en nuestro caso es un día y en el tuyo sería un periodo, es decir dos calendarios desde y hasta)
creamos un cursor "al vuelo" donde cada registro del cursor es un turno disponible, en tu caso sería un registro por cada dia del periodo seleccionado.
En principio todos están disponibles.
Hacemos un select a la tabla de incidencias y recorremos el cursor resultante del select y actualizamos el cursor de los turnos disponibles. Cuando terminas quedan vacios los registros disponibles, es decir los que no tienen incidencia.
El ejemplo que yo te comenté es diferente porque el usuario elije el servicio para el que desea una cita (en tu caso el servicio sería la habitación) y lo que tu quieres es mostrar el mapa de todas las habitaciones de golpe para que el usuario elija una de ellas viendo que está disponible.
En nuestro caso el proceso es muy rápido el usuario ni se da cuenta que están calculándose los turnos disponibles "al vuelo". Trabajamos con MySQL. Quizás con muchas habitaciones el proceso de recorrerlas todas sea muy lento no se. Sería cosa de probar.
Qué haría yo:
Recorrería la tabla de habitaciones para el periodo seleccionado y si hay alguna incidencia abandonaría para esa habitación y seguiría la siguiente, etc. es cuestión de probar. También debes considerar si van a procesar en local o en remoto pues el rendimiento afecta.
Nosotros con MySQL y en local es instanténao y manejamos tablas de citas de unos 2 millones de registros y unas 1500 citas diarias. Usuarios simultaneos son unos 60.
En tu caso creo que puede ser práctico porque normalmente los periodos de reservación son cortos, unos dias. Prueba y nos cuentas.
Suerte

Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.
--
 
 
 

Fox Learner

unread,
Sep 19, 2012, 4:44:10 PM9/19/12
to publice...@googlegroups.com
Gracias Manuel, José Ramón, Smart, Victor y todos los que me ayudaron.

Sus ideas ya me dan la pauta para lograrlo. Ahora manos a la obra!!

Saludos!

Víctor Hugo Espínola Domínguez

unread,
Sep 19, 2012, 5:33:35 PM9/19/12
to publice...@googlegroups.com
Hola Fox Learner

>* La tabla de incidencias: reservadas, en reparacion, etc. 

Las reservas ya las estás manejando por separado. Es lo correcto porque posee otro tipo de información.
Mira el ejemplo que te adjunto, con la tabla de incidencias ya incluida.

Saludos.
Víctor.


--
 
 
 

Hotel._rar

Walter R. Ojeda Valiente

unread,
Sep 19, 2012, 11:01:04 PM9/19/12
to publice...@googlegroups.com
No tenés clara la película.

Saludos.

Walter.





Date: Wed, 19 Sep 2012 06:51:38 -0700
From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: Cómo crear la lógica de las reservaciones ?

Walter R. Ojeda Valiente

unread,
Sep 19, 2012, 11:03:33 PM9/19/12
to publice...@googlegroups.com
Insisto, no tenés clara la película.

Saludos.

Walter.





Date: Wed, 19 Sep 2012 07:37:49 -0700

From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: Cómo crear la lógica de las reservaciones ?

Smartito, gracias por tu interés. Quizás lo que escribes sea la solución. Tendré que analizarla y probarla bien cuando disponga de tiempo. Tal vez es que me cuesta pensar como lo hacen uds. que ya tienen rato en esto.

Mi problema es este: 

la forma de crear espacios que digan que la habitación está disponible o pendiente de ser reservada.

El usar un status no sirve. Solo serviría si el estatus pudiera ponerse como si fuera una etiqueta o marbete para cada día de cada habitación, durante todos las fechas y años por venir. Ese marbete podría presentarse o no de forma gráfica al usuario.

En un post anterior lo intenté explicar de esta forma:

"Edgar, lo que dices es exactamente lo que veía que se implementaba en un sistema para eventos especiales como bodas, etc.

Antes de que existiera el sistema la señorita tenía 3 agendas que decían:

Agenda 1: Salon de fiestas

Agenda 2: Palapa con jardines y alberca.

Agenda 3: Palapa restaurant

De ahi en adelante era muy sencillo saber si cierto evento podía celebrarse en X fecha dependiendo del lugar en cual se quisiera celebrar. Solo revisaba la agenda para cada lugar y listo!!

Pero en un hotel, tendría que tener una especie de Agenda para cada habitación. Ese es el punto.. "




--
 
 
 

Walter R. Ojeda Valiente

unread,
Sep 19, 2012, 11:03:49 PM9/19/12
to publice...@googlegroups.com

Walter R. Ojeda Valiente

unread,
Sep 19, 2012, 11:43:58 PM9/19/12
to publice...@googlegroups.com
No te molestes, tiene cerrazón mental, no te entenderá, yo ya no pierdo mi tiempo intentándolo.

Saludos.

Walter.




Date: Wed, 19 Sep 2012 13:15:17 -0700
From: guag...@gmail.com

To: publice...@googlegroups.com
Subject: [vfp] Re: Cómo crear la lógica de las reservaciones ?

--
 
 
 

Juan Salvador

unread,
Sep 20, 2012, 12:07:51 AM9/20/12
to publice...@googlegroups.com
Fox Learner, para incrementar tus conocimientos en el área de Análisis
y Diseño de Sistemas te sugiero los siguientes libros:

- Análisis y Diseño de Sistemas – Kenneth E. Kendall & Julie E. Kendall
- Análisis y Diseño de Sistemas de Información – James A. Senn

Espero esto te pueda servir para ampliar tus conocimientos.

Saludos.

Fox Learner

unread,
Sep 20, 2012, 9:42:22 AM9/20/12
to publice...@googlegroups.com
Gracias Salvador,

Yo lo que me sugiero a mi mismo cada vez que entro a este foro es preguntar en un foro de novatos, pero veo que para fox ya no hay..

Aparte de estar fuera de contexto (un novato en un foro de expertos), siempre hay un tipo descortés que te critica porque no tienes sus 20 o más años de experiencia que él en el ambiente.

En fin.. que se le va a hacer...

Como decimos aquí en México "A palabras necias oídos sordos".

edgar suarez kummers

unread,
Sep 20, 2012, 10:08:00 AM9/20/12
to publice...@googlegroups.com
Estimado FoxLearner:

Es cierto, en este Foro hay varios cuyos conocimientos son los apropiados para echar cohetes.

Pero si alguien se torna agresivo es porque pertenece a aquel grupo de personas que comen mierda pero eructan Pollo.

Esa aplicación que pretendes hacer se puede situar en un grupo especial de logística espacial, donde existen ejemplos como ubicar salones apropiados para dictar clases en un centro educativo gigante, o planear como cargar un barco que está por llegar a un puerto y debe salir luego a muchos puertos del mundo llevando una inmensa carga.

Es el dominio del tiempo y del espacio.

Si deseas hacer algo impactante y completo, deberías al menos escuchar mi sugerencia, una tabla para cada habitación y obviamente unas tablas que reúnan los resúmenes, de esta forma es completo el trabajo.

Supón un centro educativo, donde a cada hora se debe dictar una clase diferente ... quien era el profesor ... qué cátedra se dictaba ... cuantos alumnos asistieron ... qué tema se dictó ... el salón estaba limpio ... 

El software debe ser algo completo, fijarse apenas como en San Cristobal, Venezuela, capturaron al llamado "Loco Barrera" las autoridades Venezolanas, que tenían en monitor 69 teléfonos públicos (o algo así) y colaboraron los sistemas de inteligencia de Colombia, Inglaterra y Estados Unidos.

Al final, entre todos no le dejaron nada a la suerte.

Yo tengo un software para administrar una empresa cualquiera (No es contabilidad, sino eventos), descrito en


Y que permite en forma práctica incluir cuantos pelos tiene un chiripí en los huevos, siendo un chiripí un bicho que se le prende en los huevos a una ladilla y esta a su vez en los huevos de los humanos.

Las posibilidades múltiples de un software son las que lo hacen interesante.

saludos 


edgar suarez kummers


--
 
 
 

Fox Learner

unread,
Sep 20, 2012, 10:20:36 AM9/20/12
to publice...@googlegroups.com
Gracias Edgar por las sugerencias... Veo que tu lenguaje es bastante "elocuente" jeje

Este Edgar de plano debió ser "vate".. jajaja

Saludos!

smartito

unread,
Sep 20, 2012, 10:24:14 AM9/20/12
to publice...@googlegroups.com
Insisto no hace falta tener una TABLA para cada HABITACION, me estoy volviendo loco o es que no sabeis el significado de bases de datos relacionadas?

PD: Para saber si en una habitacion hay un desconchón en la pared del cuarto de baño, basta con tener una tabla de INCIDENCIAS relacionada con la tabla HABITACION..

PD2: Ponganme algún caso en el que necesites una tabla para cada HABITACION que no pueda solucionar con una tabla relacional .... 

Hector R. De los Santos

unread,
Sep 20, 2012, 10:27:36 AM9/20/12
to publice...@googlegroups.com
Ufff y todavia insisten con lo de una tabla para cada habitacion?

Por ultima vez, JAMAS SE DEBE HACER ESTO, JAMAS!

Y aun FoxLearner no ha podido captar la idea?

Esta bien que seas novato o todo lo que quieras, solo hay una recomendacion que se te puede dar, lee y practica, lee y practica.
Se que no puedes razonar/aprender/entender como los demas del grupo debido a que talvez no tengas experiencia, pero creo que ya con los ejemplos e informacion que ya se ha puesto, te toca deneterte y leer. Por lo que he visto te han pasado casi todo el trabajo hecho, lo que basta es que pongas de tu parte para ponerlo en practica.

Mario y Victor  ( yo un poco) han puesto buenos ejemplos de como resolver lo que quieres.

Juan Salvador te recomendo dos exelentes libros de Ingenieria y Analisis,son muy buenos. Hay mucha teoria que talvez no vayas a usar porque algunas recomendaciones que ofrece el libro va dirigido a grandes empresas de software o para programadores que vayan a trabajar en grandes proyectos, pero en su mayor parte le sacaras mucho provecho.


Suerte!

:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


--
 
 
 

smartito

unread,
Sep 20, 2012, 10:29:12 AM9/20/12
to publice...@googlegroups.com
:( yo tb le puse un ejemplo :)

Walter R. Ojeda Valiente

unread,
Sep 20, 2012, 10:36:06 AM9/20/12
to publice...@googlegroups.com
No se te critica porque no tienes experiencia sino porque se te dice la solución, la desechas, y te emperras en complicar el asunto.

A todo esto ¿cuánto tiempo hace que perteneces a este grupo? si la memoria no me falla, más de un año, lo cual implica que ya no eres un novato así que eso ya no es una excusa.

Saludos.

Walter.





Date: Thu, 20 Sep 2012 06:42:22 -0700
From: thenewin...@gmail.com

To: publice...@googlegroups.com
Subject: [vfp] Re: Cómo crear la lógica de las reservaciones ?

--
 
 
 

edgar suarez kummers

unread,
Sep 20, 2012, 10:38:27 AM9/20/12
to publice...@googlegroups.com
Estimado Smartito:

Es seguro que tienes razón ... pero llegar a esa simplicidad que propones requiere de haber "deshojado las margaritas" ... no es posible para ser humano alguno tener una inteligencia tal que termine algo antes de empezarlo.

Dos ejemplos:

Los Ingleses en la guerra de los 30 años utilizaban el arco largo, había que entrenar a un arquero cuatro años para lograr que accionara el arco, y se fueron a una batalla con diarrea y todo y dispararon sus arcos y ganaron la batalla, porque eran capaces de atravesar un caballo con una flecha de ese arco.

Al otro lado en Mongolia,hacían arcos pegando laminillas delgadas de madera flexible y en vez de encaramarse en caballos que parecen mamuts lo hacen en caballos muy pequeños y cabalgando giran su cuerpo y zuass le meten la flecha por entre los ojos al enemigo ... eso es eficiencia ... más o menos lo que quieres hacer con tu programa, apenas lo esencial ... pero qué es lo esencial si no has hecho todavía el software ... 

El software se empieza a hacer cuando se termina de hacer ... o sea a la quinta va la vencida.

El otro ejemplo es más gráfico ...

Estuve de vacaciones alguna vez en POINT A PITRE en las islas guadalupe y nos fuimos a tomar unos tragos a una punta de la isla creo que basse terre cerca a la pequeña desirade ...

Un marroquí cuando ya estábamos bastante tomados de tragos gritaba para emocionar a las chicas ... en español con acento francés ...

"Para arriba ... para abajo ... para el centro y para adentro"

Esa es la especialidad que te pregunto acerca de este programa ... primero "deshojas las margaritas" y luego te quedas con lo esencial.

saludos


edgar suarez kummers


--
 
 
 

Walter R. Ojeda Valiente

unread,
Sep 20, 2012, 10:39:59 AM9/20/12
to publice...@googlegroups.com
No te gastes, no te entenderá, tiene metido en la cabeza hacerlo de una forma muy complicada; por lo tanto las soluciones simples y sencillas las rechaza.

Saludos.

Walter.





Date: Thu, 20 Sep 2012 07:24:14 -0700
From: casti...@gmail.com
To: publice...@googlegroups.com
Subject: Re: [vfp] Re: Cómo crear la lógica de las reservaciones ?
--
 
 
 

smartito

unread,
Sep 20, 2012, 10:48:56 AM9/20/12
to publice...@googlegroups.com
@Edgar 

Muy bien, pero sigo insistiendo, no por más que me cuentes historias NECESITAS una tabla para cada HABITACION

@Walter

Creo que tienes razón, ellos siguen en su "mundo".

Saludos!

Fox Learner

unread,
Sep 20, 2012, 10:54:40 AM9/20/12
to publice...@googlegroups.com
Walter y compañeros, ya había mencionado que sus aportes fueron valiosos y que con eso ya me tocaba a mi echar "manos a la obra". Sin embargo, hay varios compañeros que han seguido comentando el hilo y están en su derecho, yo no puedo prohibirselo y si siguen aportando ideas, de todos modos me sigue ampliando las miras.

Por ejemplo, el último ejemplo que envio Victor Hugo.

Such a nice example!!

Ese ejemplo de código es como los de MS: está ordenado y preciso.

Sin embargo, me llevará un rato analizarlo con detenimiento, ya que hay varias funciones ahi que nunca he usado.

Gracias a todos!

edgar suarez kummers

unread,
Sep 20, 2012, 10:57:41 AM9/20/12
to publice...@googlegroups.com
Estimados Smartito y Walter:

Sin duda que cualquier persona lo haría como ustedes dicen. Es más sencillo.

Recurro a las últimas palabras de Nerón cuando lo iban a ajusticiar los de la guardia Pretoriana:

"La humanidad nunca sabrá el artista que pierde".

Todo porque Nerón interpretaba la Lira ... (creo)

saludos


edgar suarez kummers


--
 
 
 

smartito

unread,
Sep 20, 2012, 11:05:10 AM9/20/12
to publice...@googlegroups.com
@Edgar

Yo no estoy discutiendo si nuestra manera es como se debe hacer, tu puedes hacerlo como tu quieras para eso eres el que programas, peeeeeero, si intentas ayudar a alguien al menos que sea con fundamento, no le digas que use una tabla para cada habitacion puesto que ese método no es el más correcto. Que se puede hacer, claro, hazlo, pero después para mantener ese código ... tú eras de los que usaba el GO TO y lo veía una buena idea no?

@Fox Learner

El "ejemplo" que dices "such a nice example" y tan nice, si te lo da hecho enterito, pero así no aprendes...


Saludos!

Fox Learner

unread,
Sep 20, 2012, 11:24:55 AM9/20/12
to publice...@googlegroups.com
Walter, 

Entré a este foro a finales de diciembre de 2011. Los primeros días fueron puro pelear porque todos estaban estresados y me agarraron de su puerquito.

Así que ponle desde Enero 2012 a la fecha. No he avanzado mucho con mi sistema por falta de tiempo. Claro que ahora que ya terminó la titulación se supone que ya tendré mas tiempo (en teoría jeje).

Así que ai la llevamos..

En este hilo el tema se extendió porque ni yo les entendía a ellos ni ellos a mi, salvo Manuel Tovar y otros que si me agarraron la idea desde el inicio. Me gustan las soluciones simples. Suelo desechar lo complejo o lo que es simple para otros pero complejo para mi. En otras palabras, me cuesta mucho entender la forma en que lo razonan los demas, por lo que solo tomo la idea y hago mis propios códigos, preferiblemente desde 0.

Así que esa fue la razon. Pero me doy cuenta que muchos tienen ganas de pelear (el stress los está matando) y como el único que se deja aquí soy yo, por eso me llueve...

Ya agarranse unas vacaciones en Cancún, no ??... jeje

Saludos!


Miguel Canchas

unread,
Sep 20, 2012, 11:29:09 AM9/20/12
to publice...@googlegroups.com

Hablando de cancun, creo que el próximo año voy por alla….

 

Por que no me pasas lo que tienes y le pongo lo que le falta para que lo veas….

 

 

MK

--
 
 
 

It is loading more messages.
0 new messages