Extracción de datos de otra tabla

De nuevo pido vuestra ayuda. Poco a poco voy aprendiendo gracias a vosotros.

Resulta que tengo dos tablas VEHÍCULOS y AVERÍAS, cada una de ellas con su formulario. Lo que quiero hacer es en el formulario correspondiente a la tabla AVERÍAS, elegir la matrícula del vehículo mediante un cuadro combinado y que obtenga de la tabla VEHÍCULOS los campos MARCA, MODELO e IMAGEN.. El campo MATRICULA es texto y aparece en las dos tablas. Adjunto imagen del formulario AVERÍAS para aclarar un poco.

Muchísimas gracias anticipadas

1 respuesta

Respuesta
1

Puedes hacerlo de varias formas, te explico un par de ellas muy sencillas:

1º/ Usando la función DLookUp() en el evento "después de actualizar" de tu cuadro combinado:

Me.Marca=DLookUp("Marca","Vehiculos","Matricula='" & Me.Matricula & "'")

Me.Modelo=DLookUp("Modelo","Vehiculos","Matricula='" & Me.Matricula & "'")

Suponiendo que esos son los nombres que manejas. El primero del DLookUp es el campo del que quieres sacar el valor, el segundo la tabla, y el tercero es el criterio ( para indicar a qué registro quieres ir).

2º/ Si a tu cuadro de lista le pones todos los campos que necesitas (aunque ocultos), los puedes recuperar por medio de la propiedad Column:

Me.Marca=Me.Matricula.Column(1)

Me.Modelo=Me.Matricula.Column(2)

Solo has de tener en cuenta que la primera columna es la 0, y saber en qué posición está la columna correspondiente a cada campo.

Un saludo.

Gracias de nuevo. Seguramente he copiado algo mal porque recibo un error de sintaxis. Te pongo el código para que por favor me diga donde me he equivocado. Tengo dudas con las comillas que en unos sitios las veo normales y en otras dobles. Por ejemplo las comillas que van despues de matricula y antes del &

Perdona mi torpeza y gracias de nuevo

Private Sub Cuadro_combinado23_AfterUpdate()
Me.marca = DLookup("Marca", "Vehiculos", "matricula=" & Me.matricula & "")
Me.modelo = DLookup("modelo", "Vehiculos", "matricula=" & Me.matricula & "")
End Sub

Si el cuadro combinado matrícula devuelve un valor numérico (como podría ser el ID de la tabla, si lo tuvieras), sería así:

...."matricula=" & Me.matricula)

Si por el contrario, el cuadro de texto devuelve una texto (la cadena alfanumérica de la matrícula), sería:

...."matricula='" & Me.matricula & "'")

Es decir, después del signo igual (=) va una comilla simple (') y luego una doble (") y antes del paréntesis de cierre va comilla doble ("), simple (') y doble (")

¡Gracias! Ahora si. Muchísimas gracias 

Una cosilla más si me lo permites. Está perfecto con los dos campos de textos pero el tercero y último es un campo OLE que se llama FOTO. Como sería la sintaxis? Gracias de nuevo

Pues desconozco la sintaxis en ese caso, principalmente porque nunca uso objetos OLE como campos.

Si me permites una sugerencia, evítalos en la medida de los posible. Si quieres almacenar fotos, sería preferible que almacenes el nombre y extensión de las mismas en un campo texto, y guardes todas las fotos en una carpeta en el mismo directorio que tu BD. Luego, para mostrarlas en un formulario, simplemente colocas un control imagen, y en el evento "al activar registro" le pones:

Me.ControlImagen.Picture=Me.CuadroTextoImagen (o en tu caso un DLookUp al campo)

Tienes explicado el proceso en detalle aquí: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/66-imagenes-en-formulario 

En la misma web tiene cómo hacerlo con informes, pues cambia un poco.

¡Gracias!  Una vez más, gracias

Hola de nuevo. Podrías decirme por favor como sería la sintaxis si el campo es de tipo fecha?. Muchísimas tracias.

En vez de comillas simples (') usa almohadillas (#):

...."CampoFecha=#" & ValorFecha & "#")

¡Gracias! Muchas gracias

Ufff, perdona de nuevo. Que torpe soy!

Este es mi código

Private Sub Cuadro_combinado23_AfterUpdate()
Me.marca = DLookup("Marca", "Vehiculos", "matricula='" & Me.matricula & "'")
Me.modelo = DLookup("modelo", "Vehiculos", "matricula='" & Me.matricula & "'")
Me.Fechacompra = DLookup("fechacompra", "Vehiculos", "matricula='" & Me.matricula & "'")
End Sub

Marca y modelo funcionan bien pero el de la fecha de compra...

Ayúdame una vez más, por fa

Te tiene que funcionar tal como lo tienes, siempre y cuando en la tabla Vehiculos exista efectivamente el campo fechacompra (con ese nombre exactamente)

En mi anterior respuesta pensé que querías buscar un dato usando un criterio de fecha en vez de un texto (como la matricula).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas