Problemas al llenar un ListBox en Access BVA

Estoy teniendo problemas para llenar un ListBox, necesito que muestre todos los campos de la tabla, esto es lo que he intentando, pero hasta ahora me manda error

Private Sub cm5_Click()

Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String

Set dbs = CurrentDb
Dim ids As String

ids = Me.idx.Value

strSQL = "SELECT costo " & "FROM " & ids & " "
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
das = rsSQL("costo")

das.MoveFirst
Do While Not das.EOF
modeloz.AddItem das.Fields(1)
das.MoveNext
Loop

End Sub

1 respuesta

Respuesta
2

¿Y por qué no le asignas directamente la tabla como origen, ya sea en las propiedades del cuadro e lista o por código en el RowSource?

Por código sería simplemente poner esto:

Me.modeloz.RowSource="SELECT costo FROM " & ids

Suponiendo, claro está, que el valor que contiene ids sea el nombre de una tabla que exista...

hola muchas  gracias por responder, pues le platico que  pretendo que el usuario desde otro listbox en la mismo formulario elija que tabla consultar, y esta muestre todos los registros de la misma  

hola de nuevo, lo he resuelto usando el siguiente código,  pero como podría lograrlo de la primera forma? 

Private Sub cm5_Click()

ids = Me.idx.Value

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim strSQL As String

strSQL = "SELECT costo " & "FROM " & ids & " "

Set db = CurrentDb
Set qdf = CurrentDb.CreateQueryDef("", strSQL)
qdf.Connect = strConn

Set rs = qdf.OpenRecordset()

Set Me.modeloz.Recordset = rs

End Sub

Realmente lo haces complicado... NO te hace falta ni crear una consulta ni un recordset sobre esa consulta

¿Acaso probaste la forma que te dije?

El código completo sería (sin control de errores):

Private Sub cm5_Click()
Dim ids As String
ids = Me.idx.Value
Me.modeloz.RowSource="SELECT costo FROM " & ids
Me.modeloz.Requery
End Sub

Como ves mucho más sencillo.

En tu primer código tienes varios errores:

1º/ no declaras las variable das

2º/ si a la variable das le das el valor de un campo (rst("costo")) no puedes hacer un bucle sobre ella

Tendrías que hacerlo así;

....
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
rsSQL.MoveFirst
Do While Not das.EOF
modeloz.AddItem rsSQL.Fields(0)  ' o modeloz.AddItem  rsSQL("Costo")
rsSQL.MoveNext
Loop

Un saludo.


¡Gracias! Muchas gracias, recién estoy aprendiendo esto de vba, y ando en búsqueda de la forma más fácil y atendible de lograrlo, aun desconozco muchas funciones y métodos del código

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas