Visual Basic.NET - Un algoritmo que busque entre horas

   
Vista:
Imágen de perfil de Fernando

Un algoritmo que busque entre horas

Publicado por Fernando tobonfer1956@yahoo.com (5 intervenciones) el 24/03/2017 13:22:30
Tengo una tabla en la cual registro los siguientes datos:

Fecha, Id_aula, hora_Inicial, hora_final

Puedo tener una misma fecha e Id_aula varias veces, pero solo se puede ingresar un nuevo registro en un intervalo de hora que no este asignado, ej:

Fecha Id_aula hora_inicial hora_final

03/03/2017 8 7:00 10:00

03/03/2017 8 10:00 12:00

03/03/2017 8 14:00 16:00

Quiero ingresar un nuevo registro en la fecha 03/03/2017, Id_sala 8, hora_inicial: 12:00, hora final: 14:00; debe indicarme si esta disponible, permitir ingresar la nueva fecha y si no un mensaje "No hay disponibilidad en ese horario"

Pueden enviarme sugerencias o soluciones al mail: tobonfer1956@yahoo. com

Agradezco de antemano la colaboración
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Un algoritmo que busque entre horas

Publicado por Miguel (476 intervenciones) el 25/03/2017 09:23:34
Si los horarios están predefinidos puedes ejecutar un SELECT COUNT(*) especificando en el WHERE la fecha, sala y horario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando Tobon

Un algoritmo que busque entre horas

Publicado por Fernando Tobon tobonfer1956@yahoo.com (5 intervenciones) el 25/03/2017 15:34:32
Miguel la instrucción no funciona, porque no permite ingresar la misma fecha y sala y en el horario entre las 12:00 y 14:00
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Un algoritmo que busque entre horas

Publicado por David (4 intervenciones) el 25/03/2017 17:54:19
En realidad creo que es algo bastante sencillo, lo que tienes que hacer seria:

primero un select hora_inicial,hora_final from "tutabla" where fecha_id = "tufecha" and aula_id = "tuaula"

esto sacara los registros que coincidan con el dia y el aula, si no hay registros, significa que esta libre y puedes insertar el registro, en caso contrario solo basta con verificar que la nueva hora inicial sea menor a cualquiera de las horas iniciales de los registros obtenidos, o mayor a estas, y que tambien la nueva hora final sea menor a las horas iniciales de los registros para que no haya cruce.

Creo que seria algo como esto:

consultar fecha y aula (el select)
si hay registros entonces
*******un bucle para un chequeo por cada registro encontrado
···bucle para numregistros=1 hasta registrosencontrados
······Si "miNuevaHorainicial" >= hora_inicial y "miNuevaHorainicial" <= hora_final entonces
·········mensaje "Horario no disponible" *******aqui puedes romper el bucle para que ya no se guarden los registros
······sino si "miNuevaHoraFinal" >=hora_inicial y "miNuevaHoraFinal" <=hora_final entonces
·········mensaje "Horario no disponible" *******aqui puedes romper el bucle para que ya no se guarden los registros
······sino
·········insertar registro
······fin si
···fin bucle
sino
···insertar registro
fin si

Disculpa que no haya codigo pero es que ando flojo ahorita, pero pediste un algoritmo y ahi tienes un algoritmo XD
espero que te sirva, Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando Tobon

Un algoritmo que busque entre horas

Publicado por Fernando Tobon (5 intervenciones) el 25/03/2017 18:07:21
Gracias. Voy a probarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Un algoritmo que busque entre horas

Publicado por David (4 intervenciones) el 25/03/2017 18:45:59
Checando bien creo que me equivoque, lo siento, y es que el algoritmo asi esta hecho para almacenarte varias veces el registro, si no hay coincidencia, lo correcto es insertar hasta que todos los registros pasen y si no hubo un cruce, entonces insertas, esto lo puedes hacer con una variable de control, te pongo la correccion:

declara NoDisponible como boolean = falso

consultar fecha y aula (el select)
si hay registros entonces
*******un bucle para un chequeo por cada registro encontrado
···bucle para numregistros=1 hasta registrosencontrados
······Si "miNuevaHorainicial" >= hora_inicial y "miNuevaHorainicial" <= hora_final entonces
·········NoDisponible=verdadedo
·········Rompe el bucle
······sino si "miNuevaHoraFinal" >=hora_inicial y "miNuevaHoraFinal" <=hora_final entonces
·········NoDisponible= verdadero
·········Rompe el bucle
······fin si
···fin bucle
···Si NoDisponible sigue siendo falso entonces
······Guarda el registro
···sino
······mensaje "horario no disponible"
sino
···insertar registro
fin si

Asi si la variable de control se afecta significa que ya esta ocupado el espacio, si no entonces es posible que almacenes.
Disculpa el error :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando Tobon

Un algoritmo que busque entre horas

Publicado por Fernando Tobon tobonfer1956@yahoo.com (5 intervenciones) el 25/03/2017 18:55:44
Hola David. El algoritmo deja ingresar horario intermedio de uno existente. ejemplo:

Existe esté en la tabla "03/03/2017 8 7:00 10:00", y si trato de ingresar esté "03/03/2017, sala8, 8:00 a 9:00" lo esta dejando ingresar; esto no se puede porque queda asignada la misma sala y el horario se monta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando Tobon

Un algoritmo que busque entre horas

Publicado por Fernando Tobon tobonfer1956@yahoo.com (5 intervenciones) el 27/03/2017 22:12:04
David, estoy haciendo pruebas con el ultimo algoritmo que me enviaste, luego les cuento como quedo. de antemano gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad