Access - Problema al filtrar cuadro de lista (Desesperado con el problema)

 
Vista:

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Principiante Access (9 intervenciones) el 23/03/2016 11:38:41
Buenas, tengo un problema con mi base de dato access,

Tengo un formulario en el que tengo un cuadro de lista principal y otros 3 cuadros de lista aparte. Cuando pulso en el cuadro de lista principal, los otros 3 cuadros se filtran dependiendo del registro del cuadro de lista principal que he pulsado.

Basicamente, el cuadro de principal, selecciona un registro y actualiza los otros 3 filtrando cada uno de ellos con una expresión de este estilo:

Como "*" & [Pedido]![Id] & "*" O 0


Bien, ahora viene el problema: El formulario funciona a la perfección PERO al abrir el formulario, a veces (digamos un 30% de las veces) sale el siguiente mensaje.

"Introduzca el valor del parámetro
Pedido!Id"

Me huele a que aún no se ha cargado el primer registro por defecto y no sabe qué dato filtrar y por eso lo pregunta. Como hay 3 cuadros de lista dependientes, aunque le des a cancelar, lo pregunta 3 veces (3 pop-ups)

Alguien me puede echar una mano por favor? Ya no sé qué más hacer.

Muchas gracias de antemano.
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
sin imagen de perfil

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Enrique Heliodoro (1664 intervenciones) el 23/03/2016 18:27:52
Lo que le falta es un registro seleccionado en el primer cuadro de lista, pues por defecto no suele seleccionar ninguno (a la espera de que lo seleccione el usuario).

Opciones hay dos cuando menos:
.- Seleccionar por defecto el primer item del primer cuadro de lista
.- Modificar el origen de datos, con el fin de que si no hay un elemento seleccionado en el principal, el resto no efectuae selección alguna (que queden en blanco, bien porque se selecciona un dato inexistente ya sea inventado o fuera de parametros)
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Principiante Access (9 intervenciones) el 28/03/2016 10:39:37
Muy buenas Enrique Heliodoro.

Lo primero agradecerte la respuesta que me has dado. Efectivamente era lo que me imaginaba, que no conseguía cargar ningún dato por defecto.

El problema ahora lo tengo en que no sé como hacer que seleccione un valor por defecto. He probado este método pero sigue danto error.

Sabes algún modo de hacerlo? Estaría genial que cargara el primer registro siempre por defecto.

Un saludo.
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Enrique Heliodoro (1664 intervenciones) el 28/03/2016 11:02:07
El método indicado en el enlace es correcto, ¿Cómo y donde lo has aplicado tú? .....

Solo así (sabiendo que has intentado) se podrá indicar el punto del error o la posible solución, entretanto (en una total oscuridad y en lugar desconocido) moverse sin orientación es 'perder el tiempo'..... (y jugarse algún golpe).
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Principiante Access (9 intervenciones) el 28/03/2016 11:33:11
Tengo un cuadro de lista que coge datos de una tabla llamada "pedido", la tabla contiene las siguientes columnas: "Id", "Nombre" y "Descripción". Id es la key primaria.

En las propiedades del cuadro de lista, en el apartado "Valor predeterminado" he puesto "[Id].ItemData(0)" con la intención de que seleccione por defecto la Id=1. También con un igual antes de la expresión y otras pruebas y ninguna ha dado resultado.

Lo he probado poniendo "Id" como origen de control y también sin poner ningún origen de control y no hay manera.

Muchas gracias.
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Enrique Heliodoro (1664 intervenciones) el 28/03/2016 12:20:15
Si es en las propiedades en modo diseño, las comillas no deberían existir, pues lo considerara un texto y no lo evaluara ...

Lo adecuado seria un = ......

Y funcionaria correctamente al ir a un NUEVO registro (no seria valido para registros ya creados), entre otras cosas porque si el campo es dependiente, tomaría el valor adecuado al registro.

Si el objeto es independiente (no esta referenciado contra el origen de datos del formulario) la asignación debería hacerse con VBA en el evento 'al cargar' del formulario, partiendo de la premisa de que un objeto de ese tipo solo puede ser NULL la primera vez (cuando se abre el formulario), una vez asignado un Item no debería permitir el valor NULL en esa sesión (con la excepción de una manipulación de su origen de datos).
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Principiante Access (9 intervenciones) el 28/03/2016 13:13:09
Hola Enrique,

Perdona mi insistencia pero no consigo dar con el origen del problema.

Lo he puesto sin comillas (lo puse con comillas para que se entendiera aquí en el foro pero no en access). El origen de datos sí que es dependiente, es decir, intento seleccionar una fila ya existente que está en el origen de datos del cuadro de lista.

Por lo que me has dicho, no se puede hacer eso y hay que seleccionar un registro que no exista pero ni cogiendo un registro no existente me deja. Me sigue sin funcionar...
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Enrique Heliodoro (1664 intervenciones) el 28/03/2016 15:19:46
Aclaremos conceptos (sin la teoría, el llegar a una solución hace mas largo el camino y ... hay que superar muchas dificultades)

A un elemento de un cuadro combinado o de lista se le referencia por : ItemData (NN) siendo NN un numero ordinal que define su posición en el conjunto, la cuenta comienza en CERO y si el objeto NO ESTA vacío, se presupone que como mínimo tiene uno, esto es: el ItemData(0)

Asignárselo es tan 'sencillo' como indicárselo:
Me.[el cuadro combinado o de lista] = Me.[el cuadro combinado o de lista].ItemData(0)

Y eso funciona desde la version 1.0 de Access (simplemente porque así es la estructura básica de su diseño).

Así pues 'el problema' puede venir porque cuando se le intenta asignar el valor referente, el objeto AUN no tiene un origen de datos asignado (por ejemplo: el evento OPEN del formulario) y si funcionaria en el evento LOAD de ese mismo formulario (o el Current) pues ya tiene un origen de datos cargado tanto si es dependiente como si es independiente.

¿Cuándo NO FUNCIONARA? ... cuando se le asigne 'un origen de datos' en función de otro valor (por ejemplo espera que el usuario introduzca 'algo' para asignar un conjunto de datos filtrado) y a la vez intenta leer ese dato para hacer un calculo (algo imposible es ese momento por la simple 'lógica-ilógica' de esa acción en el flujo del programa).

Desconociendo la aplicación y su flujo, es difícil dar una pauta (sobre todo si el que tiene que hacer algo y lo hace 'asume por su cuenta' que soy como el profe 'que mira por encima del hombro', algo que la distancia física impide (y jugar a adivinar se me da muy mal: adivinar no 'lo que hace Access', sino 'lo que hace el usuario y no publica').
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Principiante Access (9 intervenciones) el 28/03/2016 17:57:28
Puede ser que el problema venga de aquí:


Así pues 'el problema' puede venir porque cuando se le intenta asignar el valor referente, el objeto AUN no tiene un origen de datos asignado (por ejemplo: el evento OPEN del formulario) y si funcionaria en el evento LOAD de ese mismo formulario (o el Current) pues ya tiene un origen de datos cargado tanto si es dependiente como si es independiente.


Siento si he sido demasiado escueto o no he publicado la suficiente información, voy a intentar explicarlo de otra manera:

- Cuadro de lista principal

- Cuadro de lista secundario filtrado dependiendo del parámetro que se haya seleccionado en el cuadro de lista principal.

El error lo da porque no encuentra el dato seleccionado (que se utiliza para filtrar el segundo cuadro) del cuadro principal. Lo que me deja descolocado es la aleatoriedad de que a veces ocurre el error y otras veces funciona perfectamente.

Creo y entiendo que es porque en el cuadro principal aún no se ha seleccionado ningún registro. Las veces que aleatoriamente funciona bien, coge el primer registro.

Por esto mismo entendía que era una buena solución darle un valor por defecto hasta que el usuario seleccionara un registro con tal de que no se produzca el error pero no ha sido posible ya que esto no funciona.

Si necesita cualquier otra información solo tiene que decirlo, no sé qué más información darle que sea relevante... Lo que sí me gustaría es pasarle mi base de datos para que viera el problema por sí mismo pero no puedo hacerlo por tratarse de una base de datos privados de empresa.
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

Problema al filtrar cuadro de lista (Desesperado con el problema)

Publicado por Enrique Heliodoro (1664 intervenciones) el 29/03/2016 00:14:07
El problema tiene una solución muy sencilla:

En el evento LOAD del formulario se le asigna el origen de datos al objeto y en la siguiente línea se le fuerza a que tome el primer valor (se parte del supuesto de que el objeto con el origen asignado tiene algún Item).

Si (por las circunstancias que fuere) el objeto en cuestión 'pudiera no tener origen de datos' o ese origen no devolviera algún elemento, la única opción seria el verificarlo y de no poder asignar un dato (la propiedad 'ListCount' devuelve un cero) ... simplemente se aborta cualquier acción con el (y con todos aquellos que de el dependan).

Si por motivos de trabajo no se puede plantear ningún ejemplo ... tendrás que acudir a los libros (son ciegos y sordos) y de ellos extraer información para solventar los problemas.
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