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 de Neckkito Nck
1
1
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
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