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.?
1 respuesta
Respuesta
1
1
Anónimo
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