Relacionar una consulta y tabla

¿Cómo podría lograr que al introducir los datos en una tabla me enviase un mensaje de que el registro ( contiene nombre y apellido) ya está contenido en una consulta creada sobre la misma tabla?.

1 respuesta

Respuesta
1
Lo más fácil es que el campo que contiene nombre y apellido lo declares en el diseño de la tabla como
Indexado (Si, sin duplicados). Entonces al introducir el mismo nombre el propio Access te indicará un mensaje de Error como que ya existe ese registro.
Aunque esto es muy efectivo tiene el inconveniente que si no introduces exactamente los mismos caracteres incluido acentos no te avisará.
Por lo que yo te recomendaría que hicieras un formulario basado en la tabla o en la consulta y que introdujeras un evento de comprobación en el campo que comprobara si existe algún nombre similar, aunque esto es más complicado. Un consejo la mejor manera de identificar a las personas es por su DNI o similar o bien por un número que tu les asignes, así aunque introduzcas los datos de forma similar pero no igual podrás detectar sin problema la duplicidad.
Espero te haya servido, si quieres alguna aclaración, estoy a tu disposición. Félix
Hola Félix!
Y muchas gracias por contestarme.
El tema de " sin duplicados" no me vale pues se trata de clientes que no pagan, hay otros clientes que repiten visita y no tienen activo el campo moroso, me imagino que sabes por donde voy, además el tema del D.N.I no es posible pues aveces no se toma ese dato, ya se que con nombre y apellidos existen problemas pero bueno...
¿Me podrías explicar cómo realizarías ese evento de comprobación? Se trataría de comprobar que el nombre que estoy introduciendo en la base no pertenece ya a una consulta ( se crea a partir de la propia base en la cual un campo del mismo indicaría que es moroso).
Gracias y perdona por el rollo.
Bueno no es muy profesional pero puede servirte.
En el evento después de actualizar del cuadro de texto donde introduces los datos (Debe ser un formulario) insertas este código que busca si ya existe el nombre en la consulta que tu quieras ("Tienes que cambiar los nombres del ejemplo por los tuyos).
-----------
Dim textX As String
textX = DLookup("[Nombre_del_campo_ Apellidos]", "Nombre_Consulta ", "[Nombre_del_campo_del_Formulario] Like '" & Me.Texto4 & "*'")
If textX = "" Then
Exit Sub
ElseIf textX = Me.Texto4 Then
MsgBox "Ya existe ese nombre"
Else
Exit Sub
End If
----------
Bueneo si tienes alguna duda, consúltame de nuevo.
Perdona pero he estado fuera y no pude contestar.
He introducido el evento y no pita, no se que pude haber hecho mal, lo he ejecutado en el cuadro de texto FechaNacimiento de la tabla clientes en fin... me han comentado que con una macro se podría realizar más sencillo, lo estoy intentando, te doy los datos:
[clientes]! [Apellidos]=[Moroso]![Apellidos] Y [Moroso]! [FechaNacimiento]=[CLIENTES]![FechaNacimiento], con un cuadromsj me da un error "EL OBJETO NO CONTIENE EL OBJETO DE AUTOMATIZACIÓN "CLIENTES" ???
Saludos.
Bueno Félix, soy un Tarugo que le vamos hacer porque esto me da error, te explico como tengo el tema.. el evento está en su sitio (creo..)en el cuadro de texto "FechaNacimiento" del Formulario "Frm_Cliente -después de actualizar", en ese formulario anteriormente existe el cuadro de texto "Apellidos", datos procedentes de la tabla CLIENTES.
Quiero comparar ambos datos con "Apellidos y FechaNacimiento" que se encuentran en la consulta "Morosos" creada de las tablas "CLIENTES" y "TIENDAS" y que envíe un mensaje de duplicidad. Espero que me haya explicado bien.
Perdona nuevamente por lo bruto que soy.
No te preocupes, todos empezamos así. El problema es que para hacer lo que dices es más complicado. El problema del código es que tiene que estar bien referenciado a los campos, y además si también quieres comparar fechas se complica un poco más. El código que te he puesto funciona pues es algo sencillo y comprobado. Si quieres añadir la comprobación de la fecha la cosa se complica y habría que hacerlo con parámetros que es un poco más complicado. Lo siento pero sin tener la base de datos no te lo puedo aclarar más.
Te recuerdo que esto es un código que debe introducirse en el evento de un cuadro de texto de un FORMULARIO,(No se puede hacer en una tabla) deberías hacerlo en el cuadro de texto donde introduces el nombre del moroso, en su evento de Después de actualizar.
Dim textX As String
textX = DLookup("[Apellidos]", "Moroso", "[Nombre_del_campo_del_Formulario] Like '" & Nombre_del_campo_del_Formulario & "*'")
If textX = "" Then
Exit Sub
ElseIf textX = Nombre_del_campo_del_Formulario Then
MsgBox "Ya existe ese nombre"
Else
Exit Sub
End If
También se puede hacer con una macro pero yo creo que es más complicado.
Espero, te sirva... Félix

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas