Error 3464 esto me lo da cuando paso al otro campo

Quien me podrá ayudar con esto.:

Private Sub Codigo_familiar_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "TDatos", "CODIGO_ID='" & Me.Codigo_familiar & "'"

Creo que es porque el campo CODIGO_ID, es de numero y no texto y el campo Codigo_familiar es de texto. Como podría corregir ese código, yo no se hacerlo ya que ee código lo copie.

2 Respuestas

Respuesta
1

Como no dices lo que tiene que hacer en cada caso, si tengo la tabla Tdatos con Codigo:id numérico

Y en un formulario, en el cuadro de texto Codigo_familiar escribo texto

Cuando pulso Enter

En este caso, el código es

Private Sub Codigo_familiar_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "tdatos", "codigo_id=val('" & Me.Codigo_familiar & "')")) >= 1 Then
MsgBox "Ese código ya está en la tabla Tdatos"
End If
End Sub

También podrías usar la función CInt, pero es lo mismo.

If Nz(DCount("*", "TDatos", "CODIGO_ID='" & Me.Codigo_familiar & "'")) = 0 Then
MsgBox "Debe estar registrado en la BD para continuar", vbOKOnly, "El Codigo no existente"
DoCmd.Close
DoCmd.OpenForm "Agregar Datos"

ElseIf Nz(DCount("*", "TDatos", "CODIGO_ID='" & Me.Codigo_familiar & "'")) >= 1 Then
MsgBox "¡¡ Puede continuar !!", vbOKOnly, "Codigo Fliar Verificado en la Data"
' lo que quieres que haga en este caso
End If

Este código es que estoy tratando de usar, y me genera el error 3464

Lo que quiero es que al introducir un código familiar que no este en la base de datos, este de el aviso, cancele el proceso, y luego me abra el form de registro

Pero tu estabas diciendo que en la tabla Tdatos el Codigo_id es numérico, mientras que en el formulario Codigo_Familiar es texto. Por eso puse la función Val que lo que hace es "extraer" el valor numérico de un valor texto y así si puede comparar ambos campos.

Hola, sin en la Tabla TDatos que es de donde se verificara si existe el registro, es de campo numérico. Y este es de nombre CODIGO_ID.

La idea es que cuando coloquen un dato en el campo "Codigo_familiar", este sea verificado en la tabla TDatos, si no esta, se cancela se le da un aviso que este no existe y que debe registrarse en la BD, luego se abra el formulario, "Agregar Datos o Nuevo Registro", para su respectivo Registro en la BD

Saludos y gracias por responder Sr Julián

Si lo que quieres es hacer un formulario de Login o algo parecido es sencillo. Voy a provechar tablas y formularios que ya tengo. Mira la tabla Tdatos

Hay 93. Codigo_id es numérico. En un formulario tengo un cuadro de texto Codigo_familiar donde voy a escribir algo como texto( al ponerle los ceros delante el sistema lo interpreta como texto)

Cuando pulso Enter, como este código SÍ está en la tabla Tdatos

Voy a poner un código que no está,

Cuando pulso Enter

Y al pulsar aceptar, se me abre en vista diálogo y en un registro nuevo un formulario( que debería llamarse datos, pero ya te digo que uso algo que tengo)

El código es el mismo que antes

Private Sub Codigo_Familiar_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "tdatos", "codigo_id=val('" & Me.Codigo_Familiar & "')")) >= 1 Then
MsgBox "Esta usted registrado. Puede continuar", vbOKOnly * vbexlcamation, "Enhorabuena"
Else
MsgBox "No está registrado, deberá darse de alta", vbOKOnly + vbInformation, "Le vigilo estrechamente"
DoCmd.OpenForm "clientes1", , , , acFormAdd, acDialog
End If
End Sub
Respuesta
1

Pruebe con esta instrucción

DCount("*", "TDatos", "CODIGO_ID=" & Me.Codigo_familiar)

Sobra NZ() porque la función Dcount() retorna 0 si no hay datos que cumplan la condición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas