FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TMS Planner - Reserva de habitaciones
Estimados este hilo tiene relación con este hilo de Anubis del año 2007, tema FECHAS EN RESERVAS
El tema aquí es si alguien puede aportar ejemplo o guía de como representar en un TMSDBplanner las reservas de habitaciones. En el hilo antes mencionado Egostar demuestra conocimiento en dicho componente por lo que acudo a su llamado. De los ejemplos actuales de tms http://www.tmssoftware.com/site/planner.asp#samples El demo Nº 26 aparenta ser lo que se requiere, Pero no logro comprender como proceder en el llenado del tplanner. los datos a representar están contenidos en una tabla, como bien Delphius menciona en el hilo arriba mencionado Cita:
Entonces en el Tplanner deberiamos tenes como columnas los días de cada mes y como filas los Nº de habitación. Y proceder a rellenar con los datos de la tabla reservas, que contienen Nº de habitación, fechaentrada + cantidadnoches(duracion del período a representar) y Nº de cliente. Creo que la forma de usar el tmsplanner seria por periodos, entonces, estariamos mostrando en pantalla unos diria yo 35-40 días no más de eso por comodidad al visualizar. Yo diría 5 dias antes de una fecha X y de allí 31 días adelante. Intento realizar esto con el componente TDBPlanner1 y DBperiodsource1 asociado al anterior. El problema es ver como pasar los datos del datasource a estos anteriores, por lo visto tienen propiedades para asignar los campos pero no doy en la tecla. Y en el ejemplo que mencionaba antes lo hace vía código pero tampoco logro que funcione. Alguna idea? |
#2
|
|||
|
|||
Caramba!!! como pasa el tiempo, no recuerdo como funcionan los TMS, no se dio el proyecto y terminé por abandonar la parte de reservaciones.
Lo que si recuerdo es que los TMS se relacionan directamente con una tabla con características específicas, recuerdo que requieren de un campo de fecha y hora, pero necesito darle un vistazo al código, veré si aún lo conservo en alguno de mis respaldos. Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#3
|
|||
|
|||
Será un buen aporte si encuentras algo.
Ese componente parece muy muy completo y potente. Vieno los ejemplos en funcionamiento son alucinantes. Pero el tema es hacerlo funcionar. ya que manejan muchas propiedades. Saludos |
#4
|
|||
|
|||
Hola Amadis.
Yo particularmente uso estos componentes para mi aplicación, la utilizo específicamente para dar los turnos a los pacientes. http://www.proyectoanamnesis.com.ar/...rsion-283.html Que es lo que necesitas, si tenes una pregunta puntual así te contesto porque ando con poquito tiempo últimamente. |
#5
|
|||
|
|||
Será algo similar a lo que hiciste en los turnos.
Como columnas tengo los dias y como filas los nº de habitacion entonces, en el mismo dia puedo tener varias habitaciones (filas ocupadas). Fijate en el post original que describo las tablas y lo que retendo lograr. El problema es como tomar los datos de la tabla y visualizarlos en el Tdbplanner. |
#6
|
||||
|
||||
Estimado amadis:
Yo también utilizo los TMSDbPlanner para asignar horas a pacientes. Los compré hace más de 3 años y aún me da problemas. Estos componentes están pensados para relacionar días con horas, ya que los campos requeridos en la tabla (StartTime y EndTime) para visualizar en el planner son de tipo date/time. La conexión del DbPlanner debes realizarla con el componente TDBxxxSource que elijas y este último con el DataSource conectado a tu tabla, debiendo especificar en este componente, en el inspector de objetos, las propiedades StartTimeField, EndTimeField, KeyField, NotesField y eventualmente ResourceField de tu tabla. Tienen el inconveniente que cuando crece mucho la Tabla de la BD a la que se encuentran conectados, los procesos con el Planner se hacen muy lentos, para lo cual es mejor cargar el planner con Querys especificos o utilizando filtros. Ojalá esto te sirva de algo. Deberás armarte de paciencia con este componente, ya que no es fácil de utilizar y configurar. Salu2 |
#7
|
||||
|
||||
Estimado amadis:
Coloco este mensaje aquí en el foro, por si a alguien más que use TMSDBPlanner pudiera servirle. Revisé el demo 26 y si activas las propiedades AutoCreateOnSelect y AutoEditOnAutoInsert en ItemSelection puedes ingresar nuevos Items y editarlos. Para eliminar los Items creados, click en el Item y tecla suprimir. Ojalá te sirva Salu2 |
#8
|
|||
|
|||
Poner en funcionamiento el TDBplanner
Amigos, he logrado el resultado que buscaba.
Aquí una muestra de como queda. Los componentes utilizador fueron además de lo visible a simple vista. TDbplanner y DBPeriodSource. Conectado a un query que se actualiza desde el ComboBox (TplannerDBDatepicker) que esta abajo a la izquierda, Dando parámetros mediante propiedades: El dbperiodSource lo vinculé a la query reservas mediante las propiedades: Datasource -> a un query o tabla. Keyfield y resourcefield -> al ID de la tabla reservas StartimeField -> campo con fecha de llegada EndtimeField -> campo (calculado) entrada + estadía = fecha de salida SubjectField y NotesField -> campos de tipo texto, pueden variar el orden segun quieran. En uno puse un calculado del Nombre del cliente y en el otro Observaciones. Formateando el TDBPlanner Display -> modifica propiedades de visualización del encabezado que tiene las fechas. Sidebar -> modifican propiedades del encabezado que tiene las fechas. Sidebar -> RotateOnTop: da vuelta el nombre de los dias para cuando la SideBar es ubicada arriba como en este caso. Header -> propiedades de titulos de la barra encabezados de la izquierda (Nº habit). Eso es todo lo básico a nivel de Diseño. En cuanto a código luego de cada cambio en la tabla/query hay que refescar(rellenar el Planner) Para eso en los eventos onchange lo hacemos con este procedimiento (tomado del Demo Nº 26 del componente)
Todo esto es lo básico para hacer funcionar el componente. Se agradece a todos los que participaron de este hilo y al moderador del foro. Y cualquier aporte que puedan hacer será util para la posteridad Me tomé el trabajo de explicar como poner en marcha este componente porque es muy bueno y si bien trae documentación,en el manual y ejemplos se ve complicado ya que no mencionan mucho sobre como asignar las propiedades en tiempo de diseño. Y una vez que se tenga una guía ya es más simple. Esto fue aplicado para visualizar reservas de habitaciones.A lo largo de un período de tiempo X distribuido en distintas habitaciones. Los amigos Radenf y el-Mono Por lo que comentan lo han utilizado para visualizar un Dia con todos los horarios para asignar turnos. Por lo que en los casos de ellos las propiedades asignadas deben ser otras, y en lugar de usar el TDBPeriodSource seguramente usaron TDBDaySource Última edición por marcoszorrilla fecha: 18-03-2014 a las 19:36:45. |
#9
|
||||
|
||||
Te felicito amadis por haber logrado finalmente tu objetivo.
Aprendí un montón de cosas con este hilo, que seguramente me serán de utilidad en algún proyecto. La gran ventaja (o desventaja, según cómo se mire) de usar el componente TMSDBPlanner es que justamente posee cientos de opciones de configuración y múltiples efectos visuales que pueden personalizarse. Salu2 y gracias |
#10
|
||||
|
||||
Estimado amadis:
Si quieres perfeccionar tu código encontré el que permite insertar nuevos ítems asociado a la acción que tú elijas. El código que adjunto te permite realizar la inserción de una nueva reserva al hacer doble click en el ítem seleccionado. Debes poner en False la propiedad AutoCreateOnSelect.
Ojalá te sirva Salu2 |
#11
|
|||
|
|||
Justo hoy temprano estaba trabajando en eso.
Lo primero queme interesaba era modificar una reserva lo que hago con esto
Recién probé tu código pero cre crea un conflicto con el que cité antes para modificar. Ya que al crear un nuevo item desde el planner el ITEM no tiene ningún DBKEY. Lo que me serviría y todavía n oencontré la forma es que al hacer doble click en un casillero del planner vacío, OBTENER LA FECHA de ese casillero, entonces luego lanzo la acción de agregar una reserva a la tabla y luego del post refresco el planner. |
#12
|
||||
|
||||
El código que coloqué crea automáticamente el KeyField de la Tabla. Debe estar en false la propiedad AutoIncKey del DBPeriodSource.
Para modificar las reservas lo más simple es arrastrar el margen del item asignado, en estado de edición, hasta el día que se requiera, pudiendo incrementar o disminuir los días de reserva, ya que esa es una de las gracias del TDBPlanner. Yo los cambios los he asignado al PopUpMenu, donde tengo las opciones de eliminar una reserva, asignarla con cambio de color o definirla con otro color, con los siguientes códigos: Para marcarla como asignada:
Para marcarla com reservada:
Para eliminarla:
Ojalá te sirva. Yo me he entretenido bastante con esto ya que lo hago por hobby. Salu2 |
#13
|
|||
|
|||
Bueno en mi caso tuve que poner en TRUE la propiedad AutoIncKey del DBPeriodSource para que me funcionen los pasos siguientes
Para agregar una nueva reserva, lo hago con doble click en el casillero de inicio, luego uso el codigo que sugeriste para el dobleclick
En un popup, tambien tengo las opciones de agregar , modificar y eliminar. En cuando a extender fechas desde el planner lo tengo desactivado y como solo lectura para evitar errores (cambios sin darse cuenta); Lo que me estaría faltando lograr al llenar al planner es lo siguiente: Tener en pantalla todos los Nº de habitaciones inclusive las vacías. Porque por ej si ven en la imagen que pude en uno de los post anteriores, tengo en pantalla H1 y H2 que son las únicas habitaciones que tienen reservas. Pero falta el resto de las habitaciones que no poseen reserva en ese período. Creco que al momento de llenar el planner habría que recorrer la tabla habitaciones rellenando el titulo de las filas con cada Nº / nombre de habitación existente. |
#14
|
|||
|
|||
Amadis como va.
Mira para el caso que planteas el componente tiene una propiedad que se llama Resource... que vendria a ser como el numero de columna si cuando creas un item y logras identificar sobre que Recurso/ Nro de columna lo hicieron luego el planner solo lo levanta y asigna a quien corresponda. |
#15
|
||||
|
||||
Las habitaciones disponibles las puedes obtener como señala el-mono o bien incluyéndolas en la tabla MeetingRooms del Demo 26 o cómo se llame en tu programa.
En el demo 26 este es la porción de código del FillPlanner que realiza esa acción:
Por lo que has señalado veo que estás usando el DBPlanner sólo para mostrar información, cuando la idea es que permita múltiples funciones en tiempo de ejecución, que faciliten los procesos que requiera el usuario (Ingresar, eliminar, modificar, cambiar estados, repetir y un largo etc.) Salu2 Última edición por radenf fecha: 17-03-2014 a las 17:59:45. |
#16
|
|||
|
|||
Gracias Radenf, había mal interpretado el proceso llenado.
Si revisas mas arriba, mi error era que estaba llenando el RESOURCE desde la misma tabla de RESERVAS, por eso tenía solamente las habitaciones con reservas. |
#17
|
||||
|
||||
Cualquier cosa en la que pueda ayudarte me sentiré encantado, porque yo he aprendido quizás más que tú.
Salu2 |
#18
|
|||
|
|||
Amigos, alguien ha cambiado el color de un item en el momento de llenado del planner?
Sería usando las propiedades que compartió el amigo Radenf para marcar los items.
la cuestión es en el procedimiento de LLENADO (fillplanner) interceptar por ej una variable numerica ESTADO, y aplicar un case para que pinte de color distinto cada estado (si esta reservado, pendiente, ocupado, etc). Última edición por amadis fecha: 22-03-2014 a las 15:21:47. |
#19
|
||||
|
||||
Exactamente amadis, con ese código le asignas el color a los ítems seleccionados y su valor es guardado en la Tabla de la BD, en el campo Color.
El código, como te había señalado, está asignado a las diferentes acciones del PopUpMenu (Asignada, Reservada, Bloqueada, etc.). Aquí tienes un ejemplo: Salu2 Última edición por radenf fecha: 22-03-2014 a las 16:22:25. |
#20
|
|||
|
|||
Redenf
¿y de esa forma se rellena solo del color que corresponde? Como seria un ejemplo de codigo. Yo con los dbgrids, en tiempo de diseño comprobaba el valor de un campo y si el valor es X pintaba de un color, si es otro, de otro. Me cuesta salir de las viejas estructuras. El codigo que mencionabas lo he usado para marcar pero NO TENGO CAMPO COLOR, en que tabla iria?. Por eso pensaba de la forma que explicaba en los post anteriores y en este. Revisar que estado tiene la reserva en momento de llenar el planner y ahi pintar de color que sea |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
tsm Planner ayuda | omarson | Varios | 2 | 28-04-2012 00:10:00 |
Componente PLANNER | Jose Manuel | Varios | 0 | 24-09-2008 17:39:52 |
Reserva de memoria... | andresenlared | Varios | 5 | 05-02-2008 22:13:36 |
reserva memoria c++ | halizia | C++ Builder | 1 | 25-04-2006 18:09:52 |
Sacar habitaciones libres por dia - Problema consulta SQL- | VRO | Firebird e Interbase | 0 | 01-09-2005 11:12:22 |
|