none
Llenar Combo Box usando función que contiene RecordSet RRS feed

  • Pregunta

  • Buen día, mi duda es bastante básica, puesto que ya tengo casi todo, pero desafortunadamente, no tengo la más mínima idea de como meter la información que me trae mi recordset dentro de un combo o una lista, aquí adjunto el código completo,

    Option Explicit

    Public error_num
    Public error_msg
    Private connSucursal As New ADODB.Connection

    Private Sub Command1_Click()

    Combo1.Text = LlenaTerritorial()

    End Sub

         Public Sub Open_Sucursales()
            Dim v_Dsn
            On Error GoTo errOpen
       
           error_num = 0: error_msg = ""
           connSucursal.ConnectionTimeout = 60
            v_Dsn = "DSN=;UID=;PWD=;DATABASE=Sucursales"
            connSucursal.Open (v_Dsn)
           Exit Sub
         
    errOpen:
           error_num = Err.Number
           error_msg = Err.Description
           End Sub

    Function LlenaTerritorial()
    Dim cmd As New ADODB.Command
    Dim fld As ADODB.Field
    Dim rsTerritorial As New ADODB.Recordset
    rsTerritorial.CursorLocation = adUseClient
    Call Open_Sucursales
    Set cmd.ActiveConnection = connSucursal
    cmd.CommandText = "CR_SEL_TerritoriAL"
    cmd.CommandType = adCmdStoredProc
    Set rsTerritorial = cmd.Execute()
        Do Until rsTerritorial Is Nothing
            If rsTerritorial.State = adStateClosed Then
                Print "No hay datos"
            Else
                Do Until rsTerritorial.EOF
                    For Each fld In rsTerritorial.Fields
                        Print fld.Value 'sé que aquí esta el problema, pero no sé que poner en lugar del print
                      
                    Next
                    rsTerritorial.MoveNext
                Loop
            End If
            Set rsTerritorial = rsTerritorial.NextRecordset
        Loop
    End Function

    además de último me trae este error:

    error 3251 Current provider does not support returning multiple recordsets from a single execution

    Saludos y gracias por anticipado

    viernes, 17 de septiembre de 2010 17:41

Respuestas

  • hola,

    Si lo registro lo quieres poner una lista o combo te mustro  por favor me dice si te fue de utilidad

    Function LlenaTerritorial()
    Dim cmd As New ADODB.Command
    Dim fld As ADODB.Field
    Dim rsTerritorial As New ADODB.Recordset
    rsTerritorial.CursorLocation = adUseClient
    Call Open_Sucursales
    Set cmd.ActiveConnection = connSucursal
    cmd.CommandText = "CR_SEL_TerritoriAL"
    cmd.CommandType = adCmdStoredProc
    Set rsTerritorial = cmd.Execute()
        Do Until rsTerritorial Is Nothing
            If rsTerritorial.State = adStateClosed Then
                Print "No hay datos"
            Else
                Do Until rsTerritorial.EOF
                    For Each fld In rsTerritorial.Fields           
                       Me.Combo1.AddItem fld
                    Next
                    rsTerritorial.MoveNext
                Loop
            End If
            Set rsTerritorial = rsTerritorial.NextRecordset
        Loop
    End Function

     

    enmanuel grullard 

    republica dominicana


    • Propuesto como respuesta Enmanuel Grullard viernes, 17 de septiembre de 2010 18:19
    • Marcado como respuesta jose_lv sábado, 18 de septiembre de 2010 13:32
    viernes, 17 de septiembre de 2010 18:19

Todas las respuestas

  • hola,

    Si lo registro lo quieres poner una lista o combo te mustro  por favor me dice si te fue de utilidad

    Function LlenaTerritorial()
    Dim cmd As New ADODB.Command
    Dim fld As ADODB.Field
    Dim rsTerritorial As New ADODB.Recordset
    rsTerritorial.CursorLocation = adUseClient
    Call Open_Sucursales
    Set cmd.ActiveConnection = connSucursal
    cmd.CommandText = "CR_SEL_TerritoriAL"
    cmd.CommandType = adCmdStoredProc
    Set rsTerritorial = cmd.Execute()
        Do Until rsTerritorial Is Nothing
            If rsTerritorial.State = adStateClosed Then
                Print "No hay datos"
            Else
                Do Until rsTerritorial.EOF
                    For Each fld In rsTerritorial.Fields           
                       Me.Combo1.AddItem fld
                    Next
                    rsTerritorial.MoveNext
                Loop
            End If
            Set rsTerritorial = rsTerritorial.NextRecordset
        Loop
    End Function

     

    enmanuel grullard 

    republica dominicana


    • Propuesto como respuesta Enmanuel Grullard viernes, 17 de septiembre de 2010 18:19
    • Marcado como respuesta jose_lv sábado, 18 de septiembre de 2010 13:32
    viernes, 17 de septiembre de 2010 18:19
  • Buen día, de hecho, si funciona, pero... bueno este es el problema un poco más a detalle

    todo eso que se ve ahí, va a ser una clase, la cual estoy probando, esta clase en vb6 se va a consumir

    en una página de asp clásico y pues es "capricho" de quien me la pide que se haga así, que el combo se llene

    mandando llamar al método que esta dentro de la clase, si pudieras ayudarme a llenarlo de esa forma, te estaría muy agradecido

     

    Saludos

     

    Ya quedó, únicamente moví todo el Until

    y en lugar de rsTerritorial.NextRecordset

    usé

    Set rsTerritorial = cmd.Execute()
    Set LlenaTerritorial = rsTerritorial

    • Editado jose_lv sábado, 18 de septiembre de 2010 13:35
    viernes, 17 de septiembre de 2010 20:21
  • pues te dejo este link solo pasalo a una clase y ejecutalo como mas te convenga.

    Dim rs as ADODB.Recordset
    Dim Co as ADODB.Connection
    Dim ssql as String
    Const strCon =_
    “DSN=Contacts;Description=Contacts;SERVER=ServerName;UID=sa;Password=;”

    Private Sub combo1_DropDown()

    Set Con = New ADODB.Connection
    Set rs = New ADODB.Recordset
    Con.Open strCon

    ’sql statement to select items on the drop down list
    ssql = “Select LastName From Contacts”
    rs.Open ssql, Con

    Do Until rs.EOF
    combo1.AddItem rs(”LastName”) ‘Adds lastnames to dropdown
    list
    rs.MoveNext
    Loop

    ‘Close connection and the recordset
    rs.Close
    Set rs = Nothing
    Con.Close
    Set Con = Nothing
    End Sub

     

    fuente:

    http://zoneinformatica.blogspot.com/2008/02/llenar-combobox-con-una-db.html


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    viernes, 17 de septiembre de 2010 21:25