Access cuadro de dialogo código ya existe

Tengo en un formulario un cuadro de texto en donde registro una serie de códigos manualmente los cuales no se pueden repetir, por ejemplo L001, L002, etc... Necesito que al momento del registro de un código que ya se encuentre en la BD de access me salga un mensaje " el código ya existe" cuando le doy enter para pasar al siguiente campo del formulario, ¿es posible hacer esto con alguna instrucción SQL o VBA que recorra los campos y verifique que el código ya existe para mostrar el mensaje?.

2 Respuestas

Respuesta

Gracias, por el aporte 

Respuesta
1

Voy hacer un par de suposiciones a la hora de darte el código, que tendrás que cambiar para adaptar a tu caso particular:

La tabla donde se guardan los datos la llamaré TDatos

El Cuadro de texto, txtCodigo (Propiedades->Pestaña Otras->Nombre)

El campo que guarda el dato, Codigo, y es de tipo texto

Bien, en el evento Despues de Actualizar del cuadro de texto txtCodigo, le generas este código de vba:

Private Sub txtCodigo_AfterUpdate()
Dim vCodigo as String, vCodigoExiste as String
vCodigo= Nz(Me.txtCodigo,"")
If vCodigo ="" Then Exit Sub
vCodigoExiste = Nz(DLookup("[Codigo]", "TDatos", "[Codigo]='" & vCodigo & "'"),"")
If vCodigo = vCodigoExiste Then
MsgBox "El código introducido ya existe", vbInformation, "AVISO"
Me.txtCodigo = Null
Me.NombreOtroControl.SetFocus
Me.txtCodigo .SetFocus
End If
End Sub

En NombreOtroControl tiens que poner el nombre de otro control (cuadro de texto, boton...) del formulario, da igual el que sea.

Otra forma sería en poner el código en el evento Antes de Actualizar, con lo que mientras no pongas un código álido no te deja salir del cuadro de texto. En este caso, el código será así:

Private Sub txtCodigo_BeforeUpdate(Cancel as Integer)
Dim vCodigo as String, vCodigoExiste as String
vCodigo= Nz(Me.txtCodigo,"")
If vCodigo ="" Then Exit Sub
vCodigoExiste = Nz(DLookup("[Codigo]", "TDatos", "[Codigo]='" & vCodigo & "'"),"")
If vCodigo = vCodigoExiste Then
MsgBox "El código introducido ya existe", vbInformation, "AVISO"
Cancel=True
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas