Necesito ayuda con mi base de datos para que los artículos que preste no se me crucen

Mi nombre es Luis Alberto, Tengo una base de datos que maneja el préstamo de unos recursos audiovisuales de una institución, la base de datos maneja lo siguiente:
Una Fecha Reservación, en esa fecha pueden reservar(prestar) varios recursos, se crean registros por recurso, me explico ejemplo:
Un usuario pide prestado 1 video beam, 1 computador, 1 grabadora y 1 cámara, la base de datos le crea un registro a cada elemento; cada elemento se ingresa con una hora de ingreso y una hora de término, ejemplo:
Video beam inicia 8.00 mañana y termina 12.00 del medio día. Mi problema es que necesito validar, que entre la hora de inicio y la hora que termina, en el momento de asignar o prestar el mismo elemento a otra persona, no se me cruce con este rango de tiempo, ejemplo:
Otra persona viene y me pide el mismo video beam pero de 9.00 a.m a 11.00 a.m. Cruzándose con la primera, necesito hacer algo utilizando funciones o macros o lo que sea para validar ese problema.
En lo que me puedas ayudar muchas gracias.

1 Respuesta

Respuesta
1
Debes hacer una búsqueda sql de los elementos prestados, en un día determinado y hacer una verificación de horario. Es decir si el horario está disponible.
Debe ser un sql
"Select * from tabla1 where elemento='" & txtelemento & "' and fecha='" & txtfecha & "'"
Ello lo cargas en un recorset (rs).
Luego tendrás en el recorset los turnos del día del elemento. Haz una matriz con las (¿24? O las necesarias) horas del día y elimina los rangos reservados. Luego muestra los disponibles para una selección.-
Debes conocer un poco de VBA para ello. Si no estás familiarizado, puedes consultar un curso en este link:
http://www.olaz.net/descargas/access/curso_vba/vba_entregas.htm
Saludos. Jorge
Que pena molestarlo, acá tengo un poco más de información acerca de las tablas y campos y como debe ir la consulta o validación.
Esta es la tabla que contiene la información principal como la fecha que se hizo la solicitud el usuario y el estado del movimiento del préstamo en la Base de Datos.
SELECT
TbvbMovPrestEquipos.[Codigo Movimiento],
TbvbMovPrestEquipos.[Fecha solicitud],
TbvbMovPrestEquipos.[Codigo Usuario],
TbvbMovPrestEquipos.[Codigo Estado Movimiento]
FROM TbvbMovPrestEquipos
y esta maneja toda la información de los movimientos el día que se prestó la hora de inicio la hora final el equipo, codcateg
SELECT
TbvbDetaMovPrestEquipos.CodigoDtlleMovimiento,
TbvbDetaMovPrestEquipos.[Codigo Movimiento],
TbvbDetaMovPrestEquipos.[Fecha Prestamo],
TbvbDetaMovPrestEquipos.[Hora Inicio],
TbvbDetaMovPrestEquipos.[Hora termino],
TbvbDetaMovPrestEquipos.[Dependencia Destino],
TbvbDetaMovPrestEquipos.[Codigo equipo],
FROM TbvbDetaMovPrestEquipos
esta validación va en el formulario para ingresar los datos a la tabla , esto debe buscar en el campo fecha prestamo del formulario que es el que me suministra el criterio, si hay un equipo prestado(codigo equipo)(criterio), buscar la hora de inicio de la reserva de este y no debe permitir que se asignen próximos registros entre la hora de inicio y la hora de termino del prestamo de ese equipo, si se puede generando un mensaje informandole al usuario del sistema que ya esa asignado ese rango de tiempo a ese equipo
que pena molestarlo tanto, lo que me pueda ayudar mil gracias..
Luego debes verificar el horario. Si el textbox donde preguntas el horario de inicio es textInicio, la fecha de préstamo es txtfecha y el equipo es txtcodequipo:
Con este código pasas el contenido de la consulta a un recordset ( lo cargas en memoria para hacer el cálculo)
    Dim rs1 As Object
    Dim sql As String
    dim i as integer
    sql= "select * from TbvbDetaMovPrestEquipos where [fecha Prestamo]=" & txtfecha & ", and [Codigo equipo]=" & txtcodequipo & " order by [Hora Inicio]"
    Set rs1 = CurrentDb().OpenRecordset(sql)
Luego de ejecutada esta consulta en el recordset tienes los registros de un equipo en particular que se presta en un día determinado.
Acá hay varias posibilidades. Una como planteas es ver si el horario de préstamo solicitado está entre el horario de inicio y fin. Lo que pasa es que si el mismo día hay 2 o más prestamos, y cae en los recreos (tanto el horario de inicio como el de fin) el sistema te va a permitir el préstamo, aunque no pueda ser.
Por ejemplo el equipo se presta de 09 a 12 y de 14 a 18
¿Luego si pides de 08 a 19? , o de 08 a 13? El sistema no va a dar problema con esa única verificación.
SELECT sum(IIf(Formularios!Formulario1!Texto0 Between Tabla1.[hora inicio] And Tabla1.[hora fin],1,IIf(Formularios!Formulario1!Texto2 Between Tabla1.[hora inicio] And Tabla1.[hora fin],1,0))) AS Valida
FROM Tabla1
Esta consulta da 1 si el horario de entrada está dentro de los de préstamo o si el de salida esta en dicho rango.
Lo que no resuelve es el otro tema. Le busco la vuelta y te aviso.
Saludos. Jorge

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas