Problemas al llenar una lista

De todo expertos, singo teniendo dificultades con esto de VBA, estoy tratando de llenar un cuadro de lista, de una consulta pero no se como hacerlo, lo que estoy intentando es con un ciclo irlo llenando, esto es lo que he intentado

Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
If IsNull(Me.id_tabla.Value) Then
MsgBox "NO EXISTE REGISTRO "
Else
id_tablax = Me.id_tabla.Value
strSQL = "SELECT * " & "FROM " & id_tablax & " "
Set rsSQL = db.OpenRecordset(strSQL, dbOpenSnapshot)
rsSQL.MoveFirst
Do While Not rsSQL.EOF
piezax = rsSQL("pieza")
obtener = "SELECT * " & "FROM inventario " & "WHERE nombre_pieza='" & piezax & "'"
Set valor_pieza = db.OpenRecordset(obtener, dbOpenSnapshot)
prueba = valor_pieza("cantidad_pieza")
MsgBox "Recorriendo(" & prueba & ")"
Listax. AddItem prueba
RsSQL. MoveNext
Loop

2 Respuestas

Respuesta
2

Veo que sigues insistiendo en rellenar un listbox a base de recordsets...

Pregunto yo: el código que tienes ¿te funciona o no? ¿Te da algún error o no? ¿Qué error y descripción? ¿En qué parte del código te lo marca?

Además, te deberías a acostumbrar a declarar todas las variables (no veo declaraciones para id_tablax, piezax, obtener, valo_pieza ni prueba...)

me anda un error 6014 con la leyenda    para poder utilizar este método la propiedad tipo de origen de la fila debe establecerse en lista de valores, sin embargo   cuando quieto la linea siguiente   

Listax. AddItem prueba

no llena el cuadro de lista, pero si manda mensajes uno por uno de los valores que deseo aparezcan en el cuadro de lista 

La clave está en la descripción del error: tu cuadro de lista tiene como "tipo de origen de la fila" la opción "Tabla/Consulta", y para rellenar "a mano" tienes que ponerlo en "lista de valores".

Lo puedes hacer en las propiedades del cuadro de lista o por código (vete a propiedades, localízala en la pestaña "Datos" y pulsa F1)

¡Gracias! :O fantástico, funciona, muchas gracias eres un amo en esto :D, una duda más ¿cómo puedo hacer que se muestren 2 columnas? Estoy pensando en concatenar, pero no se si se pueda hacer algo directo

Respuesta
2

En mi opinión para rellenar un ListBox, solo tienes que añadir el "Control" con el asistente, y te dará la opción directa de elegir el Origen de la Fila.

Si después quieres maquillar el diseño, puedes hacerlo. Mis saludos >> Jacinto

Lo que pasa es que el cuadro de lista es dinámico, con un campo combinado, elijo una POR tabla, de todos los campos de la tabla POR, voy a ir buscándolos en la tabla inventario y mostrar los registros que coincidan en el cuadro de lista de la inventario, creo que por eso usar el asistente no me funcionaria

Lo quepasa es que el cuadro de lista es dinámico, con un campo combinado, elijo una X tabla, de todos los campos de la tabla X, voy a ir buscándolos en la tabla inventario y mostrar los registros que coincidan en el cuadro de lista de la inventario, creo que por eso usar el asistente no me funcionaria

Quizá es que no entiendo el problema en su conjunto, pero si no lo entiendo mal, un tema es el Origen de Fila del Cuadro de Lista, que al parecer es la Tabla Inventario, y otra distinta la cantidad de Registros que cada vez quieres mostrar, de acuerdo a un o a unos Filtros.

Ejemplo: De todos los Productos de Inventario, mostrar los de Categoría 24 (El 24 es un invento).

Si eso fuera así, entonces lo que necesitas es:

De un lado la Fuente de Datos y otra el Filtro, o los filtros.

Te adjunto un par de enlaces, a ver si te pueden ayudar.

1.- En la Web de Neckkito, tienes un Cuadro de Lista independiente, alimentado por código y Filtros.

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/97-ejemplos-explicados/ejemplos-especiales/313-multibuscador 

2.- Un ejemplo que adapté para un usuario, y que tengo en Mediafire.

http://www.mediafire.com/file/c6ms6z88tyhe1rq/BuscarTBoxCboBoxLBox.rar 

2A.- Este otro que es casi igual y ahora no recuerdo la diferencia.

http://www.mediafire.com/file/zwllu6q930k74b2/BuscarTBoxCCboLBox.rar 

Espero que entre uno y otros resuelvan tu problema. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas