Obtener datos de dos tablas para presentar en un formulario

Soy nuevo en el foro. Lo primero agradecer toda la ayuda que me prestéis.

Explico lo que necesito. Tengo una tabla (Test) en Access con un formulario (Tests) para introducir los datos en ella. Se trata de que, al introducir el primer campo (NUM_PART) del formulario, otros dos campos (MODELO e IMEI) se rellenen automáticamente. Los valores deben obtenerse desde otra tabla (Pedidos) que tiene un campo (NUM_PED) relacionado con NUM_PART. En esa tabla puede haber varios registros con el mismo valor en NUM_PED, pero necesito los valores del primer registro que exista. Estos valores a obtener son:

MODELO = Ref (de la tabla Pedidos)

IMEI= Los 15 últimos caracteres del campo Detalle (de la tabla Pedidos)

Esos dos valores necesito reflejarlos en el formulario en dos campos de sólo lectura para que se vean pero no se puedan editar y que se graben en la tabla test.

Eso es todo.

Respuesta
1

Tendrás que usar la función DBúsq() (o DLookUp() )

La forma de hacerlo, ya que quieres guardar esos valores en la tabla, es generarle un código VBA asociado al evento "Despues de actualizar" del campo NUM_PART.

Para eso, abre el formulario en vista diseño, saca las propiedades del campo (Click derecho->Propiedades), vete a la pestaña Eventos, ponte en el que te comentaba, y a la derecha verás un boton con 3 puntos. Lo pulsas y eliges generador de código.

Se te abrirá el editor de VBA, y entre las lineas Private Sub... y End Sub que te aparecen, pones este código:

Dim elNumPart as Integer

elNumPart=Nz(Me.NUM_PART,-1)

If elNumPart=-1 Then Exit Sub

Me.MODELO=DLookUp("Ref","Pedidos","NUM_PED=" & elNumPart)

Me.IMEI=Right(DLookUp("Detalle","Pedidos","NUM_PED=" & elNumPart),15)

Para que no te puedan modificar esos dos campos, saca sus propiedades y ponle, en la pestaña "Datos" Bloqueado: Sí o Activado: No, la que más te guste.

Hola.

Gracias por la respuesta, pero me da un error 6 de desbordamiento. En la depuración me marca la línea:

elNumPart = Nz(Me.NUM_PART, -1)

El campo NUM_PART es tipo Número, Entero.

No sé cual será el error.

Gracias, un saludo.

Por cierto, otro detalle importante, en el campo NUM_PED no están los valores ordenados, quiero decir que un registro puede tener el valor 54848 y el anterior puede ser el 55204, no sé si por eso puede dar error. Además, como indiqué al principio, el mismo NUM_PED aparece en varios registros, pero necesito los datos Ref y Detalle del primero que aparezca.

Gracias, un saludo.

Pues si el campo lo tienes como Entero, no entiendo que te de error de desbordamiento. Prueba a declararlo como Entero largo, a ver si así se te soluciona:

Dim elNumPart as Long

La función DBúsq devuelve el primer valor que coincide con el criterio, independientemente del orden que tengan tus registros

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas