Access - Pasar dato a consulta

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 21/09/2022 18:56:20
Hola a todos
Tengo un formulario, Formulario1 que abre una consulta1 mediante un botón, la sql de la consulta acaba:
where campo=Forms!Formulario1!Cuadro_combinado(0).Column(1)
el código del botón es DoCmd.Openquery consulta1
Me contesta con: la función Forms!... Column no está definida en la expresión
Alguien sabe como se soluciona esto.
Gracias
Pablo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 22/09/2022 09:13:12
Es difícil juzgar 'al todo' por una mínima parte.

El error puede provenir por una definición errónea de esa 'ruta absoluta' que (posiblemente) devuelva un NULL y le impida continuar.

La ruta real y correcta se puede obtener con el generador de expresiones, sin olvidar que el número de columna (según desde donde se utilice) puede comenzar a contar en cero o en uno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 22/09/2022 11:39:42
Hola
El botón en el q hago clic antes del docmdopenquery tengo un msgbox: fórums!form…Column(2) y pinta el dato correcto, continuo y es cuando me dice lo de q la función no está definida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 22/09/2022 18:57:38
Me creo lo de error de ruta pero, si antes , en el msgbox, da el resultado correcto porqué después no lo reconoce?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 22/09/2022 21:45:58
Publicas parte de la expresión (no toda la SQL de la consulta) y lo comparas con el resultado de un MsgBox que utiliza esa misma expresión.

Es complicado diagnosticar donde está el problema con solo parte de la información, si Access se queja es porque algo no está bien o no está como él lo necesita.

Revisa todo el conjunto o vuelve a crearlo, no será la primera vez que la vista engaña y se difumina una coma o una comilla y ... el mensaje de error provenga de algo anterior que le impide evaluar esa ruta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Pasar dato a consulta

Publicado por Eduardo (317 intervenciones) el 22/09/2022 22:55:37
Revise está parte where campo=Forms!Formulario1!Cuadro_combinado(0).Column(1)

Cámbiela por:


where campo=Forms!Formulario1!Cuadro_combinado.Column(1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 24/09/2022 20:19:23
Pues doy más datos del problema
En el formulario listado_muestras tengo el botón openquery, con el siguiente código en el evento al hacer cliick
MsgBox "forms!listado_muestras!Cuadro_combinado12.Column(2)=" & Forms!listado_muestras!Cuadro_combinado12.Column(2)
DoCmd.OpenQuery "consulta_muestras_criterio_form", acViewNormal, acReadOnly
La sql de la consulta es:
SELECT muestras.producto_muestra, muestras.codigo_muestra
FROM muestras
WHERE muestras.producto_muestra=Forms!listado_muestras!Cuadro_combinado12.Column(2);

Al hacer click en el botón openquery presenta forms!listado... y 2, el dato que le di antes
sigo y me da el error 3085 la función no está definida en la expresión
Espero haber planteado bien el problema
y que alguien sepa la solución
Gracias
Pablo

Si la sql de la consulta en vez de acabarla con producto_muestra=forms... la acabo sin producto_muestra=2 me la los resultados que yo quiero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 24/09/2022 22:38:06
Una curiosidad, si en lugar de abrir la consulta con el botón la abres de forma manual ¿obtienes lo que buscas?

(solo es imprescindible que el formulario este abierto y tener seleccionado un elemento del combo).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 25/09/2022 10:52:03
Si la abro haciendo doble clic sobre ella me dice lo mismo: la función no está..., , si en vez de forms!... pongo 2 sí que se abre, supongo que esto quiere decir que el problema está en la consulta, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 25/09/2022 13:29:33
Es una acertada deducción lógica.

Desde el primer mensaje en que se publico el nombre del cuadro combinado como
... =Forms!Formulario1!Cuadro_combinado(0).Column(1) ...

He sospechado que el problema está en este punto, pero también pudiera ser un error de transcripción y ante la insistencia de que en un MsgBox devolvía el resultado correcto ....

Se dan las circunstancias en las que para evitar distorsiones, lo aconsejable es obtener la ruta absoluta mediante el generador de expresiones (básicamente consiste en localizarlo en el árbol (a modo de directorio clásico desde el MS-DOS) y un doble clic sobre el objeto, transcribe su ruta absoluta en editor de expresiones)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 25/09/2022 19:28:41
Y dónde está el generador de expresiones en la consulta?
En el formulario en el que pregunto el dato(referencia), tengo un cuadro de texto, Txt14 que después de actualizar recoge el valor que está en Forms!listado_muestras!Cuadro_combinado12.Column(2), probé a poner Forms!listado_muestras!Texto14 y sigue diciendo lo mismo: la función no está definida en la expresión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Pasar dato a consulta

Publicado por Eduardo (317 intervenciones) el 25/09/2022 19:49:04
Pablo mucha teoria y ninguna solución. Si quiere envíeme la base de datos a [email protected] y con gusto la analizo para darle una respuesta objetiva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 25/09/2022 21:02:46
Presumiendo de tener mucha práctica y no aportas nada: Eduardo, sigues en 'la senda a ninguna parte'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Pasar dato a consulta

Publicado por Eduardo (317 intervenciones) el 25/09/2022 22:46:15
sabelo todo de nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 25/09/2022 21:00:36
Es que no es una función, es una ruta absoluta: la ubicación del objeto como elemento único.

El generador aparece con la consulta en modo diseño, se selecciona la línea 'criterios' bajo el campo que de desea condicionar y click en el botón derecho del ratón, aparece el menú contextual y en el se selecciona: Generar ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 25/09/2022 21:22:03
Si la interpreta como función, será porque no reconoce a Column y lo paréntesis finales le hacen creer que se trata de una función.

Si ese es el caso, quítale lo de 'Column' y en el combo (en modo diseño) poner como columna predeterminada la que tiene el dato que se desea que devuelva como valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 26/09/2022 12:14:19
Me parece buena idead lo de quitar la columna y ponerla como predeterminada, en este caso se empieza a contar en 0 o en 1?
Cuando pintaba el error acababa en column no en (2)
Cuando tenga tienpo probaré la idea
Gracias
Pablo
La pelea continua!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 26/09/2022 13:25:37
Bien!!!!!!
Tengo los datos que quiero.
Cambié la columna predeterminada y la sql de la consulta la acabé con Forms!listado_muestras!CC12.Value, no se si value es necesario o no, pero funciona bien
Ahora tengo que aplicar esto al programa que estaba haciendo.
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar dato a consulta

Publicado por Anonimo (3316 intervenciones) el 26/09/2022 14:51:34
Respondiendo a las dudas:

Las columnas comienzan en cero (en VBA porque cero es un valor: el primero, el superior o último en un byte es: 255)

'Fuera' de VBA comienza a contar en 1 (es más fácil de entender para los no iniciados en la programación)

Value: es el nombre de la propiedad que hace referencia al contenido del objeto y (salvo ocasiones extrañas de indefinición) es el que toma por defecto y lo 'peor' que puede pasar es el aumento de consumo de tinta si se imprime el código en papel.

Normalmente acostumbra a asumir como 'predeterminada' la primera columna (según el entorno sea la cero o la uno: es la primera), pero nada impide utilizar cualquiera de ellas, por ejemplo:
El origen de datos es una relación de personas en las que se muestra el apellido (primera columna), el nombre (segunda columna) y el DNI o cedulade identificación (tercera columna) que suele o puede estar oculta.

El dato que engloba a las otras dos (y más datos asociados) es la tercera por ser un identificador único (y si alguien alega que en extrañas ocasiones aparece uno duplicado: conocido el caso, las autoridades modifican uno de los dos, creo que suelen asignarle el nuevo al que tenga menos obligaciones fiscales o menos antecedentes penales).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pasar dato a consulta

Publicado por Pablo (328 intervenciones) el 27/09/2022 17:35:49
Resumiendo
La columna predeterminada del combo se puede llamar con Forms!.nomform!cuadrocombinado.value, no hace falta poner el número de columna, y value tampoco
Pasé lo recién aprendido al programa y funcionó correctamente.
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar