Como impedir registros duplicados por dos campos iguales?.

Mis felicitaciones por la labor que hacen.
En relación con el tema del asunto tengo un formulario "FrmMntoBDActCul" basado en una tabla de nombre "Actividad" que entre otros, tiene un campo Clave principal y otros llamados “Actvdad” y “Deque”. La idea es evitar que la combinación de estos dos últimos no se repitan y en tal caso el usuario reciba un aviso del tipo "Registro repetido".

2 respuestas

Respuesta
1

Podrías revisar este link haber si te ayuda

https://www.facebook.com/110278063867760/posts/149899163238983/?app=fbl 

Respuesta
1

Lo puedes hacer de mil formas distintas. Todo depende de como trabajes.

1º Voy a usar una tabla que ya tengo. Tiene los campos Marca y Modelo. Le añado un campo Union y lo pongo como clave. Luego con ella hago un formulario (no haría falta que estuviera el campo Union, pero lo pongo para que lo veas. A medida que voy rellenando registros

En este caso le digo, en el código del evento Después de actualizar del cuadro de texto Modelo

Union=[marca]&[modelo]. Como de momento no se ha repetido ninguno no ha habido problemas. Vamos a suponer que lo repito(última línea que ves). Pulso Enter y en unión me lo repite, pero en cuanto quiero irme a otro registro o cerrar el formulario o lo que sea

Y no te guarda el registro, porque como Union es clave no se puede repetir. En este caso, le dejo el control a Access.

Puedo no crear ese campo Union y dejar la tabla sólo con Marca y modelo, de forma que

Repito el registro y cuando pulso Enter

Me aparece este mensaje y cuando acepto el cursor se vuelve al control Modelo para que cambies el modelo.

En este caso el código del evento Antes de actualizar del cuadro de texto Modelo es

Private Sub Modelo_BeforeUpdate(Cancel As Integer)
If DCount("*", "coches", "marca='" & Me.Marca & "' and modelo='" & Me.Modelo & "'") >= 1 Then
MsgBox "Esa combinación ya existe", vbOKOnly + vbCritical, "Deberá cambiar alguno"
DoCmd.CancelEvent
End If
End Sub

Es decir, que "antes" de guardar lo que has escrito, cuenta si ya existe esa combinación. Si ya la hay te sale el mensaje y etc.

En fin, que hay muchas formas de hacerlo.

Buenos días.

Gracias por su respuesta. Lo he hecho desde cero como usted y funciona perfectamente.

Pero para mi BBDD no, da error, como le mostraré en las imágenes que le adjunto. Como puede ver los campos "Actvdad" y "Deque" (Los suyos, Marca y Modelo) de la tabla "Actividad" están basados en columnas de búsquedas de las tablas "Actividades" y "Cultivos".

El Frm "FrmMntoBDActCul" esta basado en la tabla ""Actividad" donde inserto su rutina en base al campo "Deque". Entiendo que esto es lo que debe de dar lugar al mensaje de error.

Espero que la exposición de lo que le cuento, haya salido bien. Es un poco complicado.

Saludos.

Normalmente ese aviso de error se da cuando quieres comparar un campo texto con uno numérico o viceversa . Si miras la tabla verás que el campo Deque es numérico y sin embargo tu le estás diciendo que lo compare con un campo texto del formulario. Prueba a poner

..........and deque=" & me.deque & "")>=1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas