Avisar en formulario si el dato está repetido

Estoy intentando lo siguiente y no he logrado conseguirlo... Tengo un formulario donde se cargar datos, y quiero que avise si estos datos están repetidos. Ahora bien, encontré un código sw Neckkito con Dlook para el evento afterupdate que funciona perfecto, solo que yo necesitaría de ser posible lo siguiente:

1- Que tengan que coincidir mas de un campo para considerarlo como registro repetido, ej. NombreComercial y Localidad
2- Que busque entre 2 tablas los datos ej. Clientes y Contactos
3- Mi clave principal es un autonumérico, me gustaría que no aumentara el número si al final no ingreso el dato.
4- Y esto creo que ya es mucho pedir... ¿es factible que me indique que número y de que tabla es el registro repetido?

1

1 Respuesta

562.675 pts. Si no valoras las respuestas, no esperes que te...

No es difícil. Supongamos que en la tabla clientes tienes los campos citados. En cualquier evento del formulario o de un cuadro de texto(no sé como tienes hecho el formulario) puedes poner

If dcount("nombrecomercial","clientes","nombrecomercial=forms!nombredelformulario!nombrecomercial) and dcount("localidad","clientes","localidad=forms!nombredelformulario!localidad")>=1 then

Msgbox"Ese registro está duplicado", vbokonly,"Va a ser que no"

Docmd. Cancelevent

end if

Los criterios no tienen porque ser esos, puede ser fecha=...., Idloquesea=....., etc.

Si el campo nombre comercial estuviera en Clientes y Localidad estuviera en Contactos, con cambiar el nombre de la tabla en el segundo Dcount solucionado.

Con respecto a que te diga cual es el registro, suponiendo que en el formulario Localidad va después de NombreComercial, puedes poner, por ejemplo, en el evento Antes de actualizar del cuadro de texto Localidad

Dim a as variant, b as variant

a=dcount("nombrecomercial","clientes","nombrecomercial=forms!nombredelformulario!nombrecomercial")

b=dlookup("idcliente","clientes","nombrecomercial=forms!nombredelformulario!localidad")

MsgBox "hay " & a & " cliente. es el que tiene el id " & b & "", vbOKOnly, "aviso"

Los nombres de los cuadros de texto del formulario no es necesario que se llamen así, los he puesto porque como dije antes, no se como lo tienes hecho.

En fin hay un montón de posibilidades.

En el caso que Nombre comercial y Localidad estuvieran en las dos tablas, puedes, o bien poner la instrucción de antes añadiéndole además and dcount("nombrecomercial", "Contactos","nombrecomercial=forms!nombredelformulario!nombrecomercial") and dcount(...

O bien anidar instrucciones if

Lo del forms! Nombredelformulario... se puede abreviar pero he preferido dejarlo así porque es más didáctico.

Muchísimas gracias! La primer parte de lo que me has explicado lo he conseguido, pero no estoy logrando que me informe en que tabla y cual es el registro que estaría coincidiendo...

Gracias!!

Si los campos estuvieran en la misma tabla, por ejemplo, Clientes, con poner el msgbox como

MsgBox "hay " & a & " cliente de la tabla Clientes. Es el que tiene el id, " & b & "", vbOKOnly, "aviso"

De todas formas, si quieres, mándame un mensaje a [email protected],com y te mando un par de ejemplos. Si lo haces, en el Asunto del mensaje pon tu alias gmi05. Hasta el sábado por la nuit no te puedo contestar porque ahora mismo salgo de viaje.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas