Problema con uso de DCount

Tengo un problema al utilizar DCount, no me esta alertando si ya existen los datos que digite en el formulario que están en la tabla, lo que más me tiene frustrado es que en otro formulario estoy utilizando la misma valiadacion solo que con los campos de otra tabla y funciona a la perfección pero en las otras 2 tablas restantes no esta funcionando.

Hasta hice varios access desde cero con las tablas, formulario y campos pero no funciona:

------------------------------------------------------------------------------------------------------------------------------------

Campos de mi base datos:

identificacion_vacaciones = campo de la tabla (identificacion del empleado, tipo Texto)

Fecha_inicio_vac = campo de la tabla (Fecha/Hora)

Fecha_fin_vac = campo de la tabla (Fecha/Hora)

estado_vacaciones = campo de la tabla (Texto)

tbl_vacaciones = tabla

-------------------------------------------------------------------------------------------------------------------------------------

txt_identificacion = campo de texto del formulario

txt_rige_desde = campo de texto del formulario (formato fecha corta)

txt_rige_hast = campo de texto del formulario (formato fecha corta)

-----------------------------------------------------------------------------------------------------------------------------------

codigo validacion:

If DCount("identificacion_vacaciones", "tbl_vacaciones", "identificacion_vacaciones = '" & Me.txt_identificacion & "' And Fecha_inicio_vac = #" & Me.txt_rige_desde & "# AND Fecha_fin_vac=#" & Me.txt_rige_hast & "# AND estado_vacaciones <> 'Cancelada'") > 0 Then
 MsgBox "El funcionario " & Form_Formulario1.txt_identificacion & " ya se ha registrado anteriormente con el contrato que va del día " & Form_Formulario1.txt_rige_desde & " al " & Form_Formulario1.txt_rige_hast & "", vbCritical, "Registro doble!!!!"
        Exit Sub
    End If

Necesito de su ayuda y detectar donde esta el error porque no se que esta pasando, como lo mencione en el otro formulario si me da la alerta y el código tiene la misma estructura.

1 Respuesta

Respuesta
1

La verdad es que me confunde un poco, conceptualmente hablando lo del contrato y Vacaciones, pero tu sabes como tienes la estructura de datos.

Entonces >>

1.- Veo un Me.txt_rige_hast que pudiera ser que en realidad se llamara >>Me.txt_rige_hasta

2.- Mi sugerencia es que hagas trozos pequeños del problema, declarando variables parciales para cada parte de los Criterios, con lo que te quedaría algo así:

Dim FiltroIdent As String, FiltroFIni As String, FiltroFFin As String, FiltroEstado As String, FiltroTotal As String
FiltroIden = "[identificacion_vacaciones] = '" & Me.txt_identificacion & "'"
FiltroFIni = "[Fecha_inicio_vac] =#" & Format(Me.[txt_rige_desde], "mm/dd/yyyy") & "#"
FiltroFFin = "[Fecha_fin_vac] =#" & Format(Me.[txt_rige_hast], "mm/dd/yyyy") & "#"
FiltroEstado = "[estado_vacaciones] <> 'Cancelada'"
FiltroTotal = FiltroIdent & " AND " & FiltroFIni & " AND " & FiltroFFin & " AND " & FiltroEstado
'Y el DCount te quedaría
If DCount("identificacion_vacaciones", "tbl_vacaciones",FiltroTotal) Then

'...

De ese modo, si ejecutas el código paso a paso, porás leer los valores que va tomando cada filtro y detectar el fallo. Un saludo >> Jacinto

¡Gracias!

Tu código me funciono a la perfección !

El problema de mi DCount lo solucione tomando tu idea de ponerle formato (Format(Me.[txt_rige_desde], "mm/dd/yyyy"))

Muy agradecido por tu ayuda

Nota: perdón si te confundiste con esas cosas, es que como no lograba solucionarlo hice varios ejemplos y no modifique los MsgBox

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas