Validar fecha del cuadro de texto con la tabla

Tengo una tabla en la que hay un campo fecha, y hay un formulario que hace referencia a dicha tabla.

En el formulario debo de agregar la fecha, por medio del almanaque para que no haya error de escritura, y al hacer clic en un botón este la agrega.

El problema se presenta que se duplican la fechas, por lo que necesitaría que me ayuden en, si la fecha del textbox existe en la tabla emitir mensaje "ya existe", sino agregarla.

1 Respuesta

Respuesta
1

Cristian: En el Procedimiento Antes de actualizar (BeforeUpdate) de ese control Fecha que tengas le pones.

Private Sub TxtFecha_BeforeUpdate(Cancel As Integer)
Dim CriterioCuenta As String
Dim CantFecha As Byte
'Compruebo si esa Fecha realmente existe
CriterioCuenta = "TuNombreCampoFecha =#" & Format(Me.TxtFecha, "mm/dd/yyyy") & "#"
CantFecha = Nz(DCount("[TuNombreCampoFecha]", "TuTabla", CriterioCuenta), 0)
If CantNum > 0 Then
        MsgBox "Esta Fecha Ya existe en la Tabla TuTabla........" & vbCrLf & "Repasa la entrada e intenta de nuevo", vbCritical, "FECHA EXISTENTE"
        DoCmd.CancelEvent
        Me!TuNombreCampoFecha.Undo
End If
End Sub

Los nombre tendrás que adaptarlos a los que tengas. Se puede hacer de otras maneras como DLookup, con la Función Eval..., y te las comento por si las quieres mirar. Saludos >> Jacinto

Gracias, ¿por la rapidez y con Dlookup como seria? Porque había empezado algo con eso.

Cristian: Te pongo las dos que te he mencionado "juntas" y así me ahorro la respuesta del Eval.

If (Eval("DLookUp(""[TuNombreCampoFecha]"",""[TuTabla]"",""[TuNombreCampoFecha] = Form.[TxFecha] "") Is Not Null")) Then
    'Aquí el código que quieras si existe. Si quieres un Mensaje>>
     MsgBox "La Fecha que has introducido ya existe." & vbCrLf & "Introduce una que sea Unica.", vbCritical, "FECHA DUPLICADA"
Else
     'Aquí el código que quieras si la Fecha no existe, que en tu caso sería "Nada"
End If

Mis saludos >> Jacinto

Lamentablemente Jacinto no me ha funcionado de ninguna de las 2 formas que me has pasado, he puesto esto

Private Sub FechaTxt_BeforeUpdate(Cancel As Integer)
If (Dlookup("[fecha]", "FechaCaja", "[Fecha]=" & Me.FechaTxt)) Then
MsgBox "Ya exite la fecha", vbOKOnly + vbInformation, "Aviso"
Else
CurrentDb.Execute "Insert into FechaCaja(Fecha) Values ('" & Me.FechaTxt & "')"
End If
End Sub

Pero me duplica la fecha. Porque había encarado con el dlookup era mi consulta.

Cristian: No acabo de ver el motivo del INSERT .. salvo que estés trabajando con un Formulario "desconectado". Access guarda por omisión.

Independientemente de eso, dale Formato americano a la Fecha en el Criterio y como observación el Campo Fecha, si puedes cambiale el Nombre a FechaAlgo >> FechaC por ejemplo.

If Dlookup("[Fecha]", "FechaCaja", "[Fecha] =#" & Format(Me.FechaTxt, "mm/dd/yyyy") & "#") Then

Un saludo >> Jacinto

Cristian: Además ahora he reparado en que no cancelas el Evento, ni deshaces si la Fecha existe.

Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas