Base datos Access. Como relacionar dos campos de texto parecidos pero de distintas tablas

Mi objetivo es que cuando "descripcion" sea como "nombre" (no igual) entonces el valor que corresponda a IdtablaA lo pueda poner en el formulario Actividad. Idtabla A y IdtablaB no tienen ninguna relación.

He probado con Dbusq y con Silnm y no he tenido narices. Si me podéis echar una mano, me haríais un gran favor.

2 Respuestas

Respuesta
1

Estoy de acuerdo lo mejor es adicionar el campo IDTablaA a la otra tabla, no obstante, respondiendo a su pregunta en donde NO existe ninguna relación le he preparado este ejemplo, requiere de conocimiento de VBA y SQL.

Para el ejemplo utilizo 3 tablas:

- TblA, tblB y tblResultado.

TABLA tblA (Se supone que el campo Nombre es sin repetidos)

TABLA tblB

TABLA tblResultado

Como no existe una RELACION de acuerdo con su pregunta es necesario hacer el recorrido de las tablas mediante código VBA.

FORMULARIO frmActividad

CÓDIGO DEL FORMULARIO

El formulario consta de 2 funciones:

Esta función recorre la tabla tblA y verifica cuantos registros hay en la tblB que contengan el contenido del campo nombre de tblA. Si hay registros llama la función que inserta los registros en la tabla tblResultado con base en la información de los campos Descripcion e importe.

CODIGO DEL BOTON Consultar

Llama la función Llenar() y actualiza el formulario.

Lo anterior es una idea pero todo se puede evitar incluyendo el campo y relacionando, sin embargo.

Genial

Aunque no controlo mucho VBA y SQL voy a intentarlo. Así ya tengo excusa para iniciarme. je je.

Cualquier duda te digo.

¡Muchas gracias Eduardo!

Respuesta
1

Tal como tienes construidas las tablas me da la impresión de que el cuadro de texto IdTablaA del formulario es independiente. Con lo que lo que te ponga en un registro te los pondrá en todos. Te digo lo que haría y evitas complicaciones. Le añadiría un campo IdTablaA a la tablaB y en el formulario, en el evento después de actualizar del cuadro de texto Descripción poner

Private Sub Descripcion_AfterUpdate()
IdTablaA = DLookup("IdtablaA", "tablaA", "nombre like ""*"" & descripcion & ""*""")
End Sub

Hola Julián, primero de todo, gracias por tu rapidez en la respuesta, he probado lo que tu me dices y no me da ningún error pero tampoco me hace nada, es decir no me pone, en la tabla B, el valor de idtablaA que le corresponde de la tabla. El campo idtablaA que he añadido a la tabla B siempre está en blanco. He probado de hacer relacion entre idtablaA de la tabla A e idtablaA de la tabla B pero tampoco ha cambiado nada.

Mi objetivo:  Tabla A: IdtablaA (valor=1) + Nombre (valor =Sevilla) 

                                      IdtablaA (valor= 2) + Nombre (valor =Madrid)

                       Tabla B: IdtablaB (valor =1) + descripción (valor= Zaragoza C) + IdtablaA(valor= nulo)

                                      IdtablaB (valor=2) + descripción (valor=Sevilla A) + IdtablaA (valor=nulo)

Cuando yo esté en el registro 2 de la tabla B y Access vea que el campo nombre (tiene de valor Sevilla) y una parte del valor, Sevilla, coincide con una parte del campo Descripción (valor Sevilla A),  entonces me asigne automáticamente a IdtablaA de la tabla B el valor de 1que es el que le corresponde. Entonces mi registro 2 de la tabla B en el formulario que tengo quedaria así:

IdtablaB (valor=2) + descripción (valor=Sevilla A) + IdtablaA (valor=1)

Muchas gracias de antemano

Pues eso es lo que hace. Mira. Si tengo la tabla A

Tengo la tabla B

Con ella hago el formulario continuo que dices, y en descripción me basta con poner una cadena de un nombre. No hace falta que sea del principio, puede ser del medio o del final y cuando escribo algo en Descripción y pulso Enter, automáticamente

Me va poniendo el id de la tabla A, que corresponde a un registro en que el campo Nombre contenga esa cadena. En el primero, por ejemplo, corresponde a vALEncia, el segundo seVIlla, etc,

Y claro que lo guarda en la tabla

Que no quieres el IdTablaA y quieres que te muestre el nombre completo de la tabla A, pues conviértelo en campo texto, llamado Yoquese y el código del evento después de actualizar del cuadro de texto Descripcion lo pones como

Yoquese = DLookup("nombre", "tablaA", "nombre like ""*"" & descripcion & ""*""")

¡Genial!

Perfecto, no había entendido que tenia que escribir la cadena en descripción para que me diera el valor idtablaA

Muchísimas gracias, me has sacado de un gran apuro y sin utilizar código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas