Mensaje cuando el cliente o dato se repite

Son un poco novata en el tema de bases de datos, estoy creando una base de datos en access donde tengo un formulario y un sub formulario, y deseo ingresar un cliente, necesito que al ingresar el No de cedula me envíe un mensaje ejemplo" este cliente ya está registrado", y me deja registrarlo nuevamente, es solo para controlar si existe, tengo el siguiente código donde me arroja el mensaje pero lo arroja sin importar si existe o no, y no se que me falta para que solamente el mensaje aparece si el cliente ya existe.

El cuadro texto

Private Sub No_cedula_AfterUpdate()
If Not IsNull(DLookup("No_cedula", "facturas", "[No_cedula]=" & No_cedula)) Then
MsgBox "este usuario tiene una factura"
DoCmd.CancelEvent
Exit Sub
End If
End Sub

Por otro lado en el subformulario tengo un campo llamado cod_venta, necesito realizar lo mismo que en el anterior, si ya esta registrado ese producto "cod_venta" me arroje el mensaje "producto ya registrado" pero me deje ingresar el dato, "el mensaje solo es para saber que existe".

Respuesta
2

En ambos casos ponlo en el evento Antes de actualizar. Me explico, supongamos que la tabla se llama Clientes. En el evento Antes de actualizar del cuadro de texto No_cedula pon

If dcount("*","clientes","n0o_cedula=" & me.no_cedula & "")>=1 then

msgbox("Ese cliente ya existe",vbokonly,"Hay que prestar más atención"

docmd.cancelevent

end if

Me explico, si escribes un número de cédula, cuenta en la tabla si ya hay alguno. Si lo hay te aparece el mensaje y cuando aceptas, el cursor se vuelve al cuadro de texto para que lo cambies.

Otra forma, podrías poner en la tabla el campo No_cedula como indexado sin duplicados.

En el caso del subformulario sólo tienes que eliminar lo de docmd. Cancelevent

1 respuesta más de otro experto

Respuesta
1

Puedes utilizar el siguiente código.

Dim rst As dao.Recordset

Set rst = CurrentDb.OpenRecordset("Select No_cedula from facturas where No_cedula  ='" & No_cedula & "'")

If rst.EOF = False And rst.EOF = False Then

MsgBox "este usuario tiene una factura"

Else

MsgBox "este usuario no tiene factura"

End If
rst.Close
Set rst = Nothing

Nota: Si el campo cédula es numérico debes cambiar la parte en negrita por esta: where No_cedula  =" & No_cedula 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas