Uso de dlookup con consultas o bien como llamar al campo de otra tabla relacionada con una tercera tabla

Punto primero entiendo que dlookup sólo puede buscar campos de tablas no de consultas (yo por lo menos probé pero no vi que funcionase).

Al ser así yo lo que intento es lo siguiente, no sé si es posible:

Tengo 3 tablas TIEMPOS, DATOS PRUEBA Y CATEGORIAS, a través de un formulario meto los tiempos tecleando el número de dorsal de la tabla TIEMPOS que a su vez está relacionado y proviene de 1 a varios de la tabla DATOS PRUEBA a su vez en la tabla CATEGORIAS está relacionada con la tabla DATOS PRUEBA también uno a varios. Pues bien yo lo que quería es que me mostrara el campo CIERRE META de la tabla CATEGORIAS cuando el dorsal que meto sea igual al dorsal de la tabla DATOS PRUEBA que tiene el campo en común CATEGORIAS-CATEGORIA.

1 Respuesta

Respuesta
2

Pues entiendes mal: Dlookup se puede usar con consultas con una única salvedad, que la consulta pida un parámetro al usuario.

La forma de usarlo es:

Dlookup ("[campo a buscar]","[nombre tabla/consulta]",(criterio de filtrado))

Lógicamente el campo que uses en el criterio ha de existir en la consulta

Como siempre gracias por contestar Sveinbjorn El Rojo,

Algo debo hacer mal:

Private Sub Dorsal_BeforeUpdate(Cancel As Integer)

Nombre = DLookup("[NOMBRE]", "[DATOS PRUEBA]", "DORSAL=" & Me.Dorsal)
Cierre = DLookup("[CIERRE_META]", "[CLASIFICACIONES]", Dorsal)

End Sub

En el cuadro de texto NOMBRE funciona sin problema (el que hiciera de una tabla)

En el cuadro de texto CIERRE da error o pone siempre lo mismo. El error me lo pone si le pongo un filtro a la consulta CLASIFICACIONES en el campo dorsal [teclee dorsal], sino le pongo filtro a la consulta me pone siempre la misma hora de Cierre_meta independientemente de la hora de cierre que tenga ese dorsal dependiendo de la categoría.

Vamos a ver... decir "da error" pero no decir qué error te da (número y descripción) es como no decir nada, porque no nos da pistas de por dónde puede venir el problema..

Por otro lado, si lo has puesto tal y como lo escribes en tu respuesta, normal que no te funcione (y te deberías de dar cuenta tu solito), porque el criterio no tiene ningún sentido...

Como te decía en mi respuesta, asegúrate de que tu consulta se llame realmente CLASIFICACIONES, que en ella exista el campo CIERRE_META, y además, (porque intuyo por dónde va tu criterio), que también exista el campo DORSAL.

Para terminar, fíjate que en mi respuesta te digo que puedes usar DLookup con una consulta siempre que no pida un parámetro al usuario. Si tu le pones como criterio [teclee dorsal] ¿Qué crees que estás haciendo? XD

Tienes razón Sveinbjorn el rojo,

Dejé todo un poco en el aire: me equivoqué al ponerla respuesta. Realmente yo puse esto:

Cierre = DLookup("[CIERRE_META]", "[CLASIFICACIONES]", "DORSAL=" & Me.Dorsal)

La consulta se llama CLASIFICACIONES, el campo se llama CIERRE_META, y el campo DORSAL sí está en la consulta y en el formulario. Lo del parámetro pensé que era al revés, yo ahora mismo no le pongo parámetro ninguno y sin embargo no aparece nada. La otra instrucción similar de la tabla funciona sin problema (Nombre = DLookup("[NOMBRE]", "[DATOS PRUEBA]", "DORSAL=" & Me.Dorsal))

Solo viendo la imagen del resultado de tu consulta, la expresión te tendría que funcionar... ¿Puedes poner una imagen de la vista diseño de la consulta, para ver si tienes algún criterio de filtrado sobre ella? Si es así, deberías quitar el criterio de la consulta y añadirlo al DLookUp()

Listo! Cómo siempre tienes razón sí que funciona!. En mi consulta no estaban todos los registros la estaba liando, creé una nueva consulta sólo con dorsal y cierre_meta y perfecto. Cómo siempre muchas gracias Sveinbjorn el rojo!!!!

Pues me alegra ver que lo has solucionado!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas