Access - No duplicar un campo Fecha que esta condicionado a otro campo numero

 
Vista:
sin imagen de perfil
Val: 15
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

No duplicar un campo Fecha que esta condicionado a otro campo numero

Publicado por Jose Antonio (9 intervenciones) el 27/12/2020 17:47:08
Hola, tengo el siguiente código que lo que hace es pasar a la Tabla T_Reservas, las reservas por día de la T_AltasHotel, es decir; mediante un Formulario que doy las entradas en el hotel de un cliente, entre otros datos tengo los campos de F_Entrada y F_Salida (sólo un registro) y paso a la T_Reservas , los días uno a uno que hay entre F_SAlida y F_Entrada, de cada cliente con su num. de habitación, y quiero evitar que tenga días de Reservas duplicado en cada habitación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub GrabarReservas_Click()
 
Dim Ok As String
Ok = MsgBox("VAMOS A DAR DE ALTA UNA HABITACION EN LA TABLA DE RESERVAS?", vbYesNo, "Security Question")
If Ok = vbYes Then
 
DoCmd.SetWarnings False
 
Dim i As Byte, c As Byte
i = F_Salida - F_Entrada
For c = 1 To i
DoCmd.RunSQL "insert into T_Reservas(Id_AltasHotel,Id_Clientes,N_Habitacion,Dias,Estado,F_Entrada,F_Salida,Fechas)values(Id_AltasHotel,T_AltasHotel.Id_Clientes,N_habitacion,Dias,Estado,F_Entrada,F_Salida,F_Entrada + " & c & "-1)"
Next
 
DoCmd.SetWarnings True
 
Else
MsgBox "NO QUIERES DAR LA NUEVA ALTA EN RESERVAS!", vbExclamation, "Acción Cancelada"
DoCmd.CancelEvent
End If
End Sub

HASTA AQUI FUNCIONA CORRECTAMENTE EL CODIGO,
ESTE PROCEDIMIENTO ES EL QUE ME DA ERROR SI LE CONTINUO CON EL ANTERIOR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'comprabar que la fecha no esta duplicada en reservas
Dim FechaEntrada As Date
Dim FechaReserva As Date
Dim Hab As Integer
Dim hab1 As Integer
 
FechaEntrada = Me.F_Entrada.Value
FechaReserva = "SELECT Fechas.Value FROM T_Reservas"
Hab = Me.N_habitacion.Value
hab1 = "SELECT N_Habitación.Value FROM T_Reservas"
 
If FechaEntrada = FechaReserva And Hab = hab1 Then
Exit Sub
MsgBox "Esta Reserva ya esta duplicada", vbExclamation, "SALIMOS SIN GRABAR"
 
End If
 
End Sub

El error se produce ya que los datos se deben comparar con otra tabla en la misma BD.

Muchas gracias por vuestra 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

No duplicar un campo Fecha que esta condicionado a otro campo numero

Publicado por Anonimo (3316 intervenciones) el 28/12/2020 17:49:08
Me ajustare a la pregunta original.

Para no repetir registros en una base de datos hay cuando menos dos caminos:

.- Crear un ID con varios campos que conformaran la llave, Access no permitirá que se repita el mismo conjunto que da lugar al ID.

.- Crear un INDICE con los campos (en este caso Habitación + Fecha) y exigir que la combinación sea única (pero no principal).

La primera opción es conflictiva a la hora de relacionar y es que mantener relaciones con IDs formados por varios campos es bastante limitante y a veces complicado.

La segunda opción tiene casi todas las características que la primera, pero los campos no condicionan nada fuera de la regla de no poder repetirse (en el caso actual: la misma habitación en la misma fecha en cualquiera de sus variantes).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar