![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
pues mejor que te lo explico delphius no creo que nadie lo haga, leelo de nuevo y fijate en lo que te dice alli esta la solucion
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
#2
|
|||
|
|||
|
Hola de nuevo, coincidiendo con delphius, es una manera poco elegante y bastante 'trabajosa' de trabajar. Personalmente haria
tabla 'horas': - id horas (de primary key) - dia de la semana : string - materia : string - aula : string o integer - inicio : TTime - profesor : string de esta tabla, hacer tantos registros por dias de la semana, aulas y horas en activo necesites. Una vez tuvieses esos registros, haciendo una consulta sencilla podrias encontrar las necesarias. Ej, aula 3, miercoles : select * from horas where aula = 3 and dia_semana = 'miercoles' order by inicio, o bien los dias de algebra: select * from horas where materia = 'algebra'. Tu consulta inicial se reduciria a 'select * from horas.db where aula like ' + QuotedStr(ComboBox1.text)+'%' + '''. Que luego necesites ligar aula a una tabla de aulas o bien profesor a una tabla de profesores, ya seria otra historia. Mas o menos es lo mismo que te conto delphius, solo que explicado de manera diferente. saludos y a ver si te sirve. PD: se suelen llamar a las horas por primera hora, segunda, tercera etc... asi, inicio siendo un entero tambien te serviria y simplificaria. saludos de nuevo. |
|
#3
|
||||
|
||||
|
Cita:
![]() ![]() Pensé que se entendería bien. De hecho, lo hice lo más breve y simple posible. ¿O será que por ser demasiado breve omití algunas explicaciones escenciales? ![]() lKinGl, ¿Qué es lo que no entiendes de mi diseño? Te lo puedo volver a explicar si es necesario. Esa duda de las horas de cuando está desocupada u ocupada lo trato con el diseño que he planteado. Digo, se basa en un principio elemental y básico: Si existen registros asociados a x horas, entonces para todas las 17-x horas restantes significa que el aula está desocupada. ¿Para que guardar información de que está desocupada si puede enterderse y desprenderse de otra información ya almacenada? ¡Estarías duplicando información! ¿Sabes cual es el problema lKinGl?, Encontrar las instrucciones SQL que te permiten desarrollar la programación del sistema. El diseño que yo elaboré responde a tus requisitos. Como he dicho antes, ahora lo que resta es programación, pensar un poquito. Nada más. ¿Necesitas saber cuántas horas tiene libre un aula x para un dia y? Fácil:
Esa Query la ejecuto en un TQuery, pasandole los parámetros pAulaID y pDiaSemID y después puedo hacer algo como esto:
¿Se entiende la idea? Si no entiendes te pediría entonces que me indicaras que no entiendes en vez de estar diciendo simplemente que no entiendes. Saludos, Última edición por Delphius fecha: 24-10-2008 a las 19:28:01. Razón: corrección en la consulta SQL |
|
#4
|
|||
|
|||
|
aja delphius pero tu dices:
xaula tiene xhoras desocupadas verdad? pero que horas?,por que puede ser q en el aula2 haya, clase el lunes de 7-9 y de 10-12 pero como detectar que el aula esta disponible de 9-10 esa es mi inquietud.... salu2
__________________
Las cosas o son, o no son... |
|
#5
|
||||
|
||||
|
Cita:
A lo que voy lKinGl es que la información está; Y en ciertos casos, la ausencia de información es una información muy valiosa. ¿Me explico? ![]() Hay una frase que dice: "la falta de evidencias es una evidencia" En cuanto a este caso, la falta de ese dato de las horas libres es un dato... y como tal puede obtenerse. Lo que deberías preguntarte es ¿que es detectar para ti? ¿Bajo que contexto deberíamos interpretarlo? El diseño que yo te ofrecí es simple, pero como todas las cosas algo en contra tiene. Y como he dicho, guardar X y guardar Y-X es redundante. O lo uno u lo otro, ambos terminarían siendo lo mismo puesto que ofrecen la misma respuesta pero desde puntos de vista opuestos. ¿No se puede dejar a interpretación del usuario? Puesto que si se puede obtener datos sobre las horas ocupadas, es posible armar un diseño visual (por ejemplo) en donde se muestre el horario. Y de hecho, lKinGl, se puede calcular. Como he dicho, cuestión de programación. Tal vez con un SQL resulte rebuscado, pero he aqui que con Delphi puede conseguirse. ¿Cómo? Una opción: implementar un algoritmo que recorra el conjunto de datos (ordenado) devuelto por una Query e ir calculando los horarios en blanco. ¿Se puede? ¡Claro! ¡Si los datos están! lKinGl, piensa... piensa. No es por malo, pero el dato está; de una u otra "forma" pero está. Veamos como te lo puedo "graficar": Supongamos que la tabla Aulas además de dichos campos mencionados anteriormente tiene dos campos más (necesarios): HoraInicio HoraFin Teniendo estos dos campos se puede establecer un marco temporal. Además la tabla Horarios tiene un campo HoraInicio, cuyo propósito es registrar la hora en que se da comienzo la actividad. Con estos campos es posible ya, implementar un algoritmo que vaya examinando registro a registro y calculando la diferencias de horas, estas diferencias de horas puede proporcionar un conjunto con las horas libres. Por ejemplo, supongamos que HoraIncio y HoraFin de un aula es 08:00 y 18:00 respectivamente. Mantengo en una variable InicioClase el valor inicial: InicioClase = Aula.HoraInicio InicioClase = 08:00 El primer registro de los horarios nos dá estos datos: Horarios.HoraInicio = 09:00 Horarios.Duracion = 1 Entonces, evaluamos: Horario.HoraInicio > InicioClase 09:00 > 08:00 Como es verdadero, estamos en presencia de una hora libre: HoraLibre = HoraLibre + 1 Creamos un "registro" y calculamos la duracion: HoraLibres[HoraLibre].Duracion = Horario.HoraInicio - Aula.HoraInicio HoraLibres[1].Duracion = 09:00 - 08:00 = 1 //Comentario: Yo hice, de manera simple que se trata de un array.... Calcula la nueva hora de inicio a clase InicioClase = Horario.HoraInicio + Horario.Duracion InicioClase = 09:00 + 1 = 10:00 Ahora me muevo al siguiente registro, y leo: Horario.HoraInicio = 10:00 Horario.Duracion = 2 Al evaular tenemos: Horario.HoraInicio > InicioClase 10:00 > 10:00 Al ser falso, es evidente que no estamos en una hora libre. Directamente calculo la siguiente hora de incio a clase: InicioClase = Horario.HoraInicio + Horario.Duracion InicioClase = 10:00 + 2 = 12:00 Me muevo al siguiente registro y vuelvo a evaluar... Y asi se continua mientras haya registros, o en otro caso, se supere la hora de fin destinadas al aula. ¿Se entiende el algoritmo? ¿Está la información lKinGl? ![]() Como vez, no todo es SQL, en ocasiones Delphi tiene que trabajar un poquito más ![]() ![]() Saludos, |
|
#6
|
|||
|
|||
|
Ya entiendo
hahaha lo que pasa es que tu diceshorainicio horafin Dia: Horainicio - Horafin ejemplo: Lunes:8-9 Lunes:9-10 Lunes:10-11 yo lo estaba pensando de esta forma en 1 linea de registro de la bd tendria: Lunes: Hora1: Hora2: Hora3....Hora17: Martes: Hora1: Hora2: Hora3....Hora17: Miercoles: Hora1: Hora2: Hora3....Hora17: Jueves: Hora1: Hora2: Hora3....Hora17: Viernes: Hora1: Hora2: Hora3....Hora17: porsupuesto que de la forma que yo digo se lleva muchisimo mas trabajo. Gracias delphius ya entendi tu modelo y es mucho mas fácil que la forma como yo lo habia pensado ![]()
__________________
Las cosas o son, o no son... |
|
#7
|
||||
|
||||
|
lKinGl,
Me alegro que entiendas, me evito una dosis de locura por buscar otro modo de explicarte .Hay una tabla que no ha sido nombrada (no explícitamente), de igual modo también hay un campo en la tabla Horarios (también no nombrado) que lo relaciona a esta tabla "desconocida". A modo de exámen: ¿Cuál es dicha tabla? Recuerda que yo prefiero hacerte pensar un poquito que estar dandote la solución. Yo elaboré un esbozo, un tanto sencillo para que comprendas y tengas una alternativa. Yo espero que luego tu añadas lo que hace falta para conseguir tus objetivos. Por cierto, ¿en que quedó lo de choferes y sitios? Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| dbexpress Error: unknown error Code '101' | raorre | Conexión con bases de datos | 3 | 13-10-2008 07:53:49 |
| Error General Sql Error lock conflict ...deadlock | Patricio | Varios | 1 | 19-03-2008 14:52:14 |
| error:[Fatal Error] Unit1.pas(7): Unit ZDbcConnection was compiled with a different.. | karaoke | Conexión con bases de datos | 2 | 19-12-2007 10:22:36 |
| ¿Por qué me da este error?Error creating cursor manejador | nuri | SQL | 2 | 01-08-2005 17:30:28 |
| consuta dinamicas en report builder | lledesma | Impresión | 5 | 26-04-2005 11:47:12 |
|