Principales respuestas
Llenar Combo Box usando función que contiene RecordSet

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 Functionademá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
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 Functionenmanuel 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
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 Functionenmanuel 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
-
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
-
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 Subfuente:
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