Contactos duplicados en access

Estoy creando una bbdd en access muy simple (nombre, apellido e e-mail) y quería saber si hay alguna forma para que si introduzco un e-mail que ya existe en la bbdd me salte un aviso diciendo que este contacto ya existe.

1 Respuesta

Respuesta
1
Para hacer lo que comentas tienes que hacer lo siguiente:
1.- Pones el formulario en vista diseño
2.- Para evitar tener que escribir toda la información (y que después el dato esté duplicado), y para que el código te funcione bien, tendrías que introducir el e-mail en primer lugar. Para ponerlo el primero basta que cambies el orden de tabulación.
2.- Sacas las propiedades del campo donde recoges el e-mail. Te vas a la pestaña Eventos y verás un evento llamado "Después de actualizar". Si clicas en la parte blanca que hay a su derecha verás que te aparece un pequeño botón con puntos suspensivos. Clicas sobre él y en la ventana siguiente le dices que quieres generar código.
3.- Escribes el siguiente código (que tiene que ir entre las líneas Private Sub... y End Sub que te aparecerán por defecto):
---
Private Sub...
Dim vDuplicado As Variant
    vDuplicado = Me.CampoConDato.Value
        'Si el campo está en blanco salta un aviso y sale del procedimiento
    If IsNull(CampoConDato) Then
        MsgBox "No ha introducido ningún dato", vbInformation, "AVISO"
        Exit Sub
    End If
        'Creamos el recordset
    Dim rst As Recordset
    Dim vBuscar As String
    Set rst = CurrentDb.OpenRecordset("NombreTabla", dbOpenSnapshot)
        'Si no hay registros sale del procedimiento
    If rst.RecordCount = 0 Then
        GoTo Salida
    End If
        'Recorre los registros de la tabla. Si encuentra un valor
'coincidente lanza un mensaje de aviso. Si no sale del proceso
'y deja seguir llenando datos
rst. MoveFirst
    Do Until rst.EOF
        vBuscar = rst.Fields("CampoConDato").Value
        If vBuscar = vDuplicado Then
            MsgBox "El valor introducido ya existe", vbInformation, "AVISO"
            Exit Do
        End If
        rst.MoveNext
    Loop
Salida:
    rst.Close
    Set rst = Nothing
End Sub
---
Te pongo las equivalencias de lo que te he marcado en negrita:
CampoConDato -> Nombre del campo donde introduces el mail
NombreTabla -> Nombre de la tabla origen del formulario
Y eso es todo. Si tienes algún problema no dudes en comentármelo. Ya me dirás qué tal te ha ido.
Un saludo, y suerte!

<div id="_mcePaste" style="position: absolute; left: -10000px; top: 576px; width: 1px; height: 1px; overflow: hidden;">    Dim vDuplicado As Variant
    vDuplicado = Me.CampoConDato.Value
        'Si el campo está en blanco salta un aviso y sale del procedimiento
    If IsNull(CampoConDato) Then
        MsgBox "No ha introducido ningún dato", vbInformation, "AVISO"
        Exit Sub
    End If
        'Creamos el recordset
    Dim rst As Recordset
    Dim vBuscar As String
    Set rst = CurrentDb.OpenRecordset("NombreTabla", dbOpenSnapshot)
        'Si no hay registros sale del procedimiento
    If rst.RecordCount = 0 Then
        GoTo Salida
    End If
        'Recorre los registros de la tabla. Si encuentra un valor
'coincidente lanza un mensaje de aviso. Si no sale del proceso
'y deja seguir llenando datos
rst. MoveFirst
    Do Until rst.EOF
        vBuscar = rst.Fields("CampoConDato").Value
        If vBuscar = vDuplicado Then
            MsgBox "El valor introducido ya existe", vbInformation, "AVISO"
            Exit Do
        End If
        rst.MoveNext
    Loop
Salida:
    rst.Close
    Set rst = Nothing
</div>
Hola,
Lo he conseguido! Me ha costado porque me salían muchos fallos pero al final ha quedado genial!
De verdad que muchísimas gracias por tu ayuda!
Un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas