Access evitar registros

Hola Angeles, mi pregunta es la siguiente: tengo un formulario con tres campos Fecha, Hora y Pax como haría para evitar que se introduzcan más registros si coinciden la fecha, ¿la hora y el numero de pax ya ha llegado al limite de 8 p.e.?
Respuesta
1
Como no sé de que forma lo tienes planteado te diré la manera en que yo lo haría (supongo que solo hay un salón para comidas y que su capacidad es de 8 personas):
Tabla: Reservas Campos: Fecha, Hora y Pax
formulario independiente (no pones nada en origen del registro)
Control Calendario que llamamos selFecha (En el formulario, en la aación Al cargar pones Form!selFecha.Value=Date()), esto es para que cuando abras el formulario el calendario, por defecto se posicione en la fecha del día. El control calendario lo obtienes picando en el cuadro Más Controles.
Dos cuadros de texto que llamamos txtHoras y txtPax
Un botón Enviar con el siguiente código:
Dim db As Database
Dim rs As Recordset
Me.Refresh
Set db = CurrentDb
Set rs = db.OpenRecordset("Select Fecha, Hora, Pax from Reservas where Fecha=cDate('" & Form!selFecha.Value & "') and Hora=cDate('" & Form!txtHoras.Value & "')")
If Not rs.EOF Then
    If Val(Form!txtPax.Value) + rs!Pax > 8 Then
        MsgBox "Nº de Personas mayor de lo permitido, Nº Permitido: " & 8 - rs!Pax
    Else
        DoCmd.RunSQL "Update Reservas Set Pax=val('" & rs!Pax & "')+val('" & Form!txtPax.Value & "') where Fecha=cDate('" & Form!selFecha.Value & "') and Hora=cDate('" & Form!txtHoras.Value & "')"
    End If
Else
    If Val(Form!txtPax.Value) > 8 Then
        MsgBox "Nº de Personas mayor de lo permitido, Nº Permitido: 8"
    Else
        DoCmd.RunSQL "Insert Into Reservas (Fecha, Hora, Pax) Values (cDate('" & Form!selFecha.Value & "'), cDate('" & Form!txtHoras.Value & "'), " & Form!txtPax.Value & ")"
    End If
End If
Me cuentas.
Simplemente aclararte que se trata de una base de datos para gestionar las reservas de un restaurante y cuando hablo de pax son personas
Esto tiene muy buena pinta, antes de probarlo he de preguntarte lo siguiente, ¿dado qué el restaurante lo dividimos en varios turnos en vez de ejecutar el código al guardar o enviar la reserva seria posible que se ejecutara al actualizar el campo Pax? Así no tendrían que rellenar todo los datos de la reservas.
¿Por otro lado que el formulario sea independiente es necesario? Ya que ademas de los datos que te comente hay que cumplimentar algunos otros como nombre y reservas de taxi (estos no son relevantes).
Puedes ponerlo en cualquier evento de cualquier control, puedes ponerlo por ejemplo en la acción al perder el enfoque del cuadro de texto Pax
Hola Angeles, disculpa que haya tardado tanto en responder, te comento el código es genial e incluso me indica la disponibilidad, pero cuando sucede esto (introduzco 3 pax y solo hay disponible 2) no me deja modificar este dato solo puedo cambiar la fecha y la hora.
Perdón Angeles tampoco me deja cambiar la hora, y si cambio la fecha graba el registro con los pax, aunque este sea superior al numero que le hemos dicho.
No entiendo lo que dices, el código lo que hace es:
1º.- Mira si existe en la tabla la fecha y la hora elegidas
2º.- Si está, mira si el pax elegido es mayor que el disponible
3º.- Si es menor o igual ---> Actualiza, si no ---> Mensaje
4º.- Si no está mira si el pax elegido es mayor que 8
5ª.- Si es menor o igual ---> Inserta, si no ---> Mensaje
Cuando sale Mensaje no hace nada, ni inserta ni actualiza, deja el formulario libre para elegir otra opción (cambiar fecha, cambiar hora o cambiar pax).
Me cuentas.
Muchas Gracias por tu ayuda, el ultimo problema era debido a que el formulario no permitía ediciones.
Ademas ahora me hay variado los turnos de los restaurantes por los que dependiendo del turno habrá más o menos capacidad. Intentare variando la parte de Hora=cDate por Hora=19,00 y poniendo las personas, para el siguiente turno variare el valor de la hora y los pax.
Espero que funcione
Muchas Gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas