Access ¿Por qué no me funciona la función DLookup?

Pues, pregunto de modo simple y concreto:

Tengo dos tablas y un formulario.

Tabla: Denominaciones

Tabla: Clasificación

Formulario: Denominación (para cargar los registros de la tabla Denominación)

Hasta ahí, no hay problemas.

Luego agrego un Cuadro Combinado y le digo que tome los valores del campo CLASIF_DEN de la tabla Clasificación.

Por último, al Cuadro Combinado le agrego un código en el Evento: Al cambiar

Por si no se lee, se los dejo aquí:

-----------------------------------------------------------------------------------------------------------------------

Private Sub Cuadro_combinado25_Change()

Me.CLASIF.Value = DLookup("IDNUM", "Clasificacion", "CLASIF_DEN='" & Cuadro_combinado25 & "'")

End Sub

-----------------------------------------------------------------------------------------------------------------------

Lo que yo creo que he escrito es:

Estimado Sr. Access cuando el Cuadro_combinado25 cambie, usted deberá colocar en el campo CLASIF de este formulario aquello que encuentre en el campo IDNUM de la tabla Clasificacion, siempre y cuando el campo CLASIF_DEN coincida con lo que yo he seleccionado en el Cuadro_combinado25 de este formulario.

Atte. Aquel a quién Ud. Le toma el pelo.

Obviamente...

el programa acata mi orden del mismo modo en que lo haría un gato si le tiro una rama y lo mando a buscarla...

Aquí les dejo una imagen representativa de Access en el momento que yo le cambio el contenido al Cuadro_combinado25

Conclusión

Por favor, amigos, necesito ayuda para terminar esta Base de Datos

Se los agrdecería enormemente!

Respuesta
2

Creo que tu problema está en que access te está cogiendo los dos campos de la tabla clasificación (por ser el IDNUm la clave principal), y además, te coge como primer valor (que es el que devuelve) ese IDNUM, y por eso el DLookUp no te devuelve resultado alguno.

Esto es fácil de comprobar: saca las propiedades de tu cuadro combinado, y en la pestaña Datos->Origen de la fila, comprueba que no te coja los dos campos (tendrás algo como SELECT IDNUM, CLASIF_DEN FROM Clasificacion)

Si esto es así, elimina el campo IDNUM y pon la propiedad numero de columnas en 1.

Otra forma para comprobar el valor que te devuelve en cuadro combinado, es poner este código en su evento después de actualizar:

Msgbox Me.cuadro_combinado25

Te saldrá un mensaje con el valor que está tomando.

Gracias amigo! Como siempre un genio tu en estas cosas!

Tenías razón! puse la MsgBox y el valor que me arroja no es el de los elementos del campo CLASIF_DEN que le he dicho, sino que son los elementos que le corresponden en el campo siguiente IDNUM, lo cual es ilógico ya que le estoy pidiendo que trabaje con los valores del campo CLASIF_DEN pues!

Es muy loco, no entiendo con qué intención el programa hace esto...

si yo le estoy pidiendo al Cuadro Combinado utilizar los valores de un campo de una tabla determinada, y luego me muestra esos valores pero por detrás emplea los valores del campo de al lado ¿que sentido tiene?

Este es el código que me aparece en las propiedades del cuadro combinado en la ficha "Datos" propiedad "Origen de fila":

SELECT [Clasificacion].[IDNUM], [Clasificacion].[CLASIF_DEN] FROM [Clasificacion];

...y efectivamente tienes razón una vez más, aparentemente está tomando ambos valores.

Cuando lo borro, me queda así:

SELECT [Clasificacion].[CLASIF_DEN] FROM [Clasificacion];

La propiedad número de columnas no la encontré, asumo que te referías a "Columna dependiente" y si es así, su valor se encuentra en 1 ...

Pero cuando voy a probar el Cuadro combinado en el formulario, la lista desplegable aparece en blanco.

Quizás tu puedas darte cuenta en qué estoy fallando...

Mil gracias por tu respuesta y disculpa las molestias...

La propiedad número de columnas está en la pestaña Formato. Fíjate también que la propiedad Ancho de columnas tenga sólo un valor (xxx cm) y no 2 (0 cm, xxx cm)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas