No marca el error y cómo debe tratarse vba access

Estoy observando que en la siguiente rutina, al escribir un código de un cliente que aun no está de alta en el sistema simplemente pasa al siguiente textbox donde debe ir el nombre sin más ni más, obviamente al dar un tratamiento de error no va a funcionar porque no existe un error. He intentado con

Private Sub TxtCarnet_AfterUpdate()
On Error GoTo SolucionError
Me.TxtNomCSol.Visible = True
Me.TxtNomCSol = DLookup("[Nombres]&', '&[Apellidos]", "[06CLIENTES]", "[Carnet]='" & TxtCarnet & "'")
Me.otroCampo.SetFocus 'a propósito para provocar un error
Me.TxtCarnet.SetFocus
Salir:
Exit Sub
SolucionError:
Me.TxtCarnet = "(Rectifique)"
Me.TxtCarnet.SetFocus
End Sub

 Da error de compilación pero con tratamiento ineficaz.

1 respuesta

Respuesta
1

Una cosa es un error de código y otra cosa es un error de proceso. Si lo que buscas es un error de código tu argumento no es correcto, dado que lo que tienes es un error de proceso (atribuible a una programación deficiente, pero no incorrecta).

Si quieres provocar un error de código añade una variable bajo el on error goto de la siguiente manera:
dim nomCSol as String
Y luego cambia la línea del me.txtNomCSol por estas líneas:

nomCSol = DLookup("[Nombres]&', '&[Apellidos]", "[06CLIENTES]", "[Carnet]='" & TxtCarnet & "'")

Me.TxtNomCSol = nomCSol

Eso te provocará un error de código (siempre que no exista el cliente)

Si lo que quieres es arreglar el error de proceso reescribe tu código así:

Private Sub TxtCarnet_AfterUpdate()
On Error GoTo SolucionError
Me.TxtNomCSol = DLookup("[Nombres]&', '&[Apellidos]", "[06CLIENTES]", "[Carnet]='" & TxtCarnet & "'")
If isnull(me.txtNomCSol) then
msgbox "No existe el cliente indicado"
me.txtCarnet=null
Me.TxtNomCSol.Visible = False 'Por si acaso estaba visible
Else
Me.TxtNomCSol.Visible = True
End if
'Y resto de código

A ver si así te sale.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas