Imprimir página | Cerrar ventana

Posicionarse en item de un cuadro lista

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84876
Fecha de impresión: 26/Marzo/2026 a las 17:28


Tema: Posicionarse en item de un cuadro lista
Publicado por: rokoko
Asunto: Posicionarse en item de un cuadro lista
Fecha de publicación: 07/Diciembre/2019 a las 18:59
A ver si consigo explicarme.
Mediante unos botones voy insertando registros en una tabla mediante consulta en SQL. Si es el mismo producto se va acumulado en el mismo registro. Una vez insertado un registro automaticamente se ne actualiza el cuadro de lista su cantidad y se muestra. Hasta hay todo bien.
Ahora lo que quiero en que esa lista se me marque en negro(selecionada) el ultimo registro(producto) que he metido. 
La unica forma de identificar ese registro en la lista es mediante su IDProducto.  Lo que no se es como mediante ese IDProducto decir en que fila esta posicionado y que se seleccine(marque en negro)

Por ejemplo si el IDproducto es el 10, como se en que fila esta ese producto en la lista.
Una vez tenga ese numero de la fila(numero de item) ir hasta ella ya sabria.

Saludos



Respuestas:
Publicado por: raipon
Fecha de publicación: 07/Diciembre/2019 a las 19:21
Hola, si IDProducto es una de las columnas del ListBox (y si no, puedes agregarla oculta), recorre los elementos de la lista hasta encontrar el valor. Crea un bucle utilitzando:

- ListCount
- Column (nColumn As Long, [Row])

Saludos.



-------------
Ramon desde Terrassa.

http://www.sqlraipon.blogspot.com/" rel="nofollow - Mi blog


Publicado por: Mihura
Fecha de publicación: 07/Diciembre/2019 a las 19:56
Basta con que asignes a la lista el valor que buscas, siempre que la columna dependiente sea IDProducto:

Me.Lista = IdProducto


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 07/Diciembre/2019 a las 20:38
Publicado originalmente por Mihura Mihura escribió:

Basta con que asignes a la lista el valor que buscas, siempre que la columna dependiente sea IDProducto:

Me.Lista = IdProducto

Voy a empezar por la que parece mas "facil".
He puesto la columna dependiete la que tiene el IDProducto, en esta caso la 7 contando que empezamos a contar por la 0.

Y no me funciona....algo me estoy perdiendo.....


Publicado por: rokoko
Fecha de publicación: 07/Diciembre/2019 a las 22:40
No acababa de entender bien lo de raipon, y buscando encontre justo lo que quiero y lo que me explicaba raipon, ahora si lo veo.

El varProducto lo saco de un recordset o un DLookup.....

Dim I As Integer
Me.Lista0.SetFocus
For I = 0 To Me.Lista0.ListCount
If Me.Lista0.Column(7, I) = varProducto Then
Me.Lista0.Selected(I) = True
Exit For
End If
Next I



https://www.lawebdelprogramador.com/foros/Access/271304-Buscar-un-dato-en-un-cuadro-de-lista.html

Muchas gracias. Se puede cerrar


Publicado por: Mihura
Fecha de publicación: 08/Diciembre/2019 a las 10:05
Importante: 

"siempre que la columna dependiente sea IDProducto"

Es mucho más fácil así ... y eficiente.

De todas formas, ¿quieres cerrar el tema?




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 08/Diciembre/2019 a las 14:02
No cierres voy a probar este metodo de nuevo, no se que estaría haciendo mal, ya puse la columna dependiendo id producto y no funcionaba.....


Publicado por: mounir
Fecha de publicación: 08/Diciembre/2019 a las 16:23
Publicado originalmente por rokoko rokoko escribió:


Voy a empezar por la que parece mas "facil".
He puesto la columna dependiete la que tiene el IDProducto, en esta caso la 7 contando que empezamos a contar por la 0.

Y no me funciona....algo me estoy perdiendo.....


Creo que la columna dependiete empieza por 1.

-------------
Un Saludo.


Publicado por: Mihura
Fecha de publicación: 08/Diciembre/2019 a las 16:29
Mounir,

La numeración de columnas de un Combo (o de un ListBox) empiezan siempre en cero.

La columna dependiente es la que va a tener el valor significativo y puede ser cualquiera de todas ellas.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: mounir
Fecha de publicación: 08/Diciembre/2019 a las 16:51
Hola!

Muchas gracias por la aclaración.

En etse ejemplo de microsoft habla de que para refrirse a la columna (0) habrá que establecer elvalor de la columna depndiente en (1) y de ahí la confusión.

https://docs.microsoft.com/es-es/office/vba/api/access.combobox.boundcolumn#example" rel="nofollow - https://docs.microsoft.com/es-es/office/vba/api/access.combobox.boundcolumn#example

-------------
Un Saludo.


Publicado por: rokoko
Fecha de publicación: 08/Diciembre/2019 a las 18:13
A ver...
La columna dependiente la tengo en la 7. Es la que tiene el IDPoducto. Para otras operaciones pillo el dato de la 7 y es el correcto.
Numero de columnas 8
Ancho: 1cm;4cm;1,515cm;1,515cm;1cm;1,515cm;2,51cm;0cm

La que tiene anchura 0cm en la 7 empezando de 0.

Hasta aqui esta todo correcto.

El codigo que me funciona es este

'**********
''Posicionarse en la lista de frmTPV del producto que acabamos de meter
'Dim A As Integer
'For A = 0 To Forms!frmTPV!Lista0.ListCount
'If Forms!frmTPV!Lista0.Column(7, A) = varProducto Then
'Forms!frmTPV!Lista0.Selected(A) = True
'Exit For
'End If
'Next A
'******************

Pero con el metodo de Mihura no hay forma, algo me pierdo...mira que estoy probbando diferente formas y no hago carrera, mas vale que era el facil  Ouch


Publicado por: Mihura
Fecha de publicación: 08/Diciembre/2019 a las 20:19
Acabo de probar con un cuadro de lista con 3 columnas ..., la tercera es la que esta declarada como dependiente:

me.lista = 4                           -> siendo 4 el valor del código que quiero que coja

y me la marca.

¡Ojo! ... que como decía Mounir (y detalla el enlace que ha puesto), mi listbox tiene tres columnas (0 - 1 - 2), pero la columna dependiente es la 3. Para que vamos a hacer algo fácil si podemos liarlo Ouch.

En tu caso es la columna 7 (la de ancho = 0) que es la columna dependiente 8.





-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 08/Diciembre/2019 a las 22:14
Por fin!!!!!  Vaya lio con el orden de la dependiente y las Column,  por que no seguira Microsoft el mismo criterio para las dos cosas....

En resumen para la columna dependiente se empieza a contar de la columna 1
Para pillar el dato con Column se empieza de la columna 0

Muchas gracias.

Se puede cerrar





Imprimir página | Cerrar ventana