** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - llenar un listbox de una tabla de Sql
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradollenar un listbox de una tabla de Sql

 Responder Responder
Autor
Mensaje
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Tema: llenar un listbox de una tabla de Sql
    Enviado: 11/Septiembre/2013 a las 05:59
Saludos a todos.

Agradecere su ayuda en lo siguiente:
  • Tengo mi base de datos en sql server y dentro mi base tengo la siguiente tabla llamada B_final, de esta tabla genere un pivot de la siguiente forma:

  

ruta PP SU


0
0 809 3052
1 508 496
2 312 580
3 503 389
4 552 359
5 494 577
6 522 272
7 429 411
8 417 384
9 334 428
10 256 636
11 628 732
12 444 643
13 382 718

el dato de campos rutas puede seguir incrementando y no hay ningun problema porque es vertical y hacia abajo, el problema lo tengo es cuando se incrementa un columna mas a la derecha.

  • lo que busco es que en el listbox me coloque esas tres columnas y si mas adelante se tiene otra columna no se debe de estar seleccionando; lo que habia hecho anterior no me funciono y no deseo hacer un consulta paso a paso, sino por medio de un codigo.

Supongamos que la conexion a la bdd en sql server todo bien.. pero cuando deseo que los datos se muestren en el listbox no me funciona..

Ejemplo del codigo:

Sql=("Select * from consulta where ruta= & me.Text1")

reg.open sql,conexion


List3.Rowsource=

acá el problema ya no lo supero.


gracias






Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 12/Septiembre/2013 a las 15:58
Intentalo asi (esa SQL esta mal diseñada):
 
Original:

Ejemplo del codigo:

Sql=("Select * from consulta where ruta= & me.Text1")

reg.open sql,conexión

OPCION:

Ejemplo del codigo:

Sql="Select * from consulta where ruta=" & me.Text1

reg.open sql,conexion

Arriba
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 18/Septiembre/2013 a las 14:00
Gracias el codigo lo corregi pero el resultado que busco en el list3 no me lo muestra
Se qué se puede hacer por medio de list3.additem reg.fields(0) & ";" & reg.fields(1) ....etc

Pero la verdad es que en la sentencia sql se me van a ir incrementando las columnas ya que depende de una consulta con la sentencia pivot.







Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 18/Septiembre/2013 a las 14:17
Creo que el objeto cuadro de lista no es el adecuado a lo que pretendes, para llegar a esa conclusión me baso en que:
 
Al objeto cuadro de lista (al igual que a los combos) hay que 'decirle' en diseño cuantas columnas va a tener (y cuantas/cuales va a mostrar) y según indicas este numero (el de columnas) en tu caso es variable.
 
Por otra parte, para que sea aplicable lo de 'additem' el origen de datos del objeto ha de ser 'lista de valores' y la indicación anterior sigue siendo la misma (respecto al numero de columnas).
 
Y si el origen de datos no es una lista de valores, lo normal (como origen de datos para objeto, esto es su 'rowsource') puede ser directamente la sql
Arriba
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 19/Septiembre/2013 a las 05:42
Gracias

Todos los cambios en el listbox ya los hice en el modo de diseño, define 15 columnas y lo deje como lista de valores cuando el additem, también ya lo hice dejándolo como tabala/consulta y el resultado no me da, no sí tu has hecho el ejemplo en Access. Para qué puedas ver el resultado...

Gracias
Arriba
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Enviado: 19/Septiembre/2013 a las 07:31
Aún más fácil de lo que había puesto anteriormente:


Private Sub Command0_Click()
    Dim dbs     As DAO.Database
    Dim rst     As DAO.Recordset
    Dim strSql  As String
    Dim i       As Long
   
    Set dbs = CurrentDb
    strSql = "Select * From tblAuthors"
    Set rst = dbs.OpenRecordset(strSql)
   
    With rst
        .MoveLast
        .MoveFirst
        i = .Fields.Count
    End With
   
    With Me.List1
        .RowSource = ""
        .RowSourceType = "Table/Query"
        .ColumnCount = i
        .ColumnHeads = True
        Set .Recordset = rst
    End With

    Set rst = Nothing
    Set dbs = Nothing
End Sub

"To VBA or not to VBA... that's the question" DFP
Arriba
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 20/Septiembre/2013 a las 06:25
gracias Genomma111 por el codigo

Pero me da el siguiente error cuando lo llevo a la practica, aca dejo el archivo con la pantalla del formulario de prueba y el codigo que hice con tu ayuda.




aca el codigo
Private Sub Command4_Click()
Dim dbs As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim Sql As String
Dim Cadena As String
Dim I As Long
Cadena = "driver={Microsoft Access Driver (*.mdb)};" & _
          "dbq=F:\mibase\Aplicativos\Demo120813.mdb;uid=admin;pwd="
         
Set dbs = New ADODB.Connection
dbs.Open Cadena
 
Set Rst = New ADODB.Recordset
 
Sql = ("Select * from comparativo" _
    & " where ruta=" & Me.Text0)
 
Rst.Open Sql, dbs
 
With Rst
    .MoveLast
    .MoveFirst
    I = .Fields.Count
End With
 
With Me.List2
    .RowSource = ""
    .RowSourceType = "table/Query"
    .ColumnCount = I
    .ColumnHeads = True
    Set .Recordset = Rst
End With
Set Rst = Nothing
Set dbs = Nothing
Text0 = ""
End Sub






Arriba
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Enviado: 20/Septiembre/2013 a las 08:45
No dices cuál error te da, pero de cualquier manera esta línea no me parece que tenga sentido:

Rst.Open Sql, dbs

"To VBA or not to VBA... that's the question" DFP
Arriba
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Enviado: 20/Septiembre/2013 a las 11:33
Estoy teniendo algunos problemas con una dll de ADO, por lo que no puedo hacer las pruebas de manera "convencional", lo que para este caso no es necesariamente malo, pues esto funciona aún en mi casol.

Private Sub Command0_Click()
    Dim rst     As ADODB.Recordset
    Dim cnn     As ADODB.Connection
    Dim strCnn  As String
    Dim strSQL  As String
    Dim i       As Long
    Dim j       As Long
    Dim strR    As String
    Dim strP    As String   

    strCnn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" & _
             "Dbq=C:\Users\genoma111\Documents\Buscador_CIE.accdb"
            
    Set cnn = New ADODB.Connection
   
    cnn.Open strCnn
   
    strSQL = "SELECT * FROM CapituloCUPS ORDER BY CapituloID"
   
    Set rst = New ADODB.Recordset

    With rst
       .CursorType = adOpenKeyset
       .LockType = adLockOptimistic
       .Open Source:=strSQL, _
          ActiveConnection:=cnn, _
          Options:=adCmdText
    End With
   
    With rst
        i = .Fields.Count
    End With
   
    With Me.List1
   
        .RowSource = ""
        .RowSourceType = "Value List"
        .ColumnCount = i
        .ColumnHeads = True
       
        With rst
            Do While Not .EOF
                For j = 0 To .Fields.Count - 1
                    strP = Replace(Replace(.Fields(j).Value, ",", ""), ";", "")
                    strR = strR & strP & ";"
                Next j
                Me.List1.AddItem strR
                strR = ""
                .MoveNext
            Loop
        End With
       
    End With
   
    cnn.Close
   
    Set rst = Nothing
   
End Sub

"To VBA or not to VBA... that's the question" DFP
Arriba
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 21/Septiembre/2013 a las 14:29
Gracias genoma111

Hice la prueba y menciona cuando la tabla pivot contiene todos las filas llenas, no así cuando una de las filas no contiene registros, mi tabla como lo menciono es un pivot que la utilizo como un pareto, en este caso cuando encuentra valores nulo, esta da un error, el me señala después del for j e identifique que es por eso, las a veces contienen valores nulos.

En este caso como tu puedo obviar ese error, gracias por fina ayuda.
Arriba
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Enviado: 21/Septiembre/2013 a las 15:00
Yo no te puedo ayudar para el caso específico de pivot tables. Uso la versión Access 2013 x64 y en ella ya no existe ese objeto.

Tal vez alguien más te pueda dar una mano.
"To VBA or not to VBA... that's the question" DFP
Arriba
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Enviado: 21/Septiembre/2013 a las 15:04
Acá hay una implementación para Excel... imagino que debe ser similar con Access.

Solo tendrías que hacer las adaptaciones necesarias: http://stackoverflow.com/questions/16365200/userform-listbox-filled-with-pivot-table-values-excel
"To VBA or not to VBA... that's the question" DFP
Arriba
jacmar Ver desplegable
Asiduo
Asiduo


Unido: 12/Noviembre/2010
Localización: El Salvador
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 21/Septiembre/2013 a las 22:33
Gracias por tu ayuda, lo importante era de que funcionar el código.

Ahora ya pueden cerrar el hilo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable