Cargar ComboBox con datos desde Access
Hola a todos, estoy aprendiendo a programa en VB. Necesito cargar unos ComboBox con datos obtenidos desde unas tablas de access. Por ejemplo. La tabla en cuesti贸n tiene un campo con el nombre "numerotienda".
Lo l贸gico ser谩 hacerlo con un bucle, un for ... next por ejemplo. Cu谩l ser铆a la sentencia adecuada para al momento de cargar el formulario se carguen tambi茅n estos datos en uno de los ComboBox?
Gracias por vuestra ayuda...
Lo l贸gico ser谩 hacerlo con un bucle, un for ... next por ejemplo. Cu谩l ser铆a la sentencia adecuada para al momento de cargar el formulario se carguen tambi茅n estos datos en uno de los ComboBox?
Gracias por vuestra ayuda...
yo soy programador junior e hice mi propia funcion
aqui te dejo el codigo
Function LlenarCombo(cnnConexion As ADODB.Connection, cboLlenar As ComboBox, strTabla As String, strCampoList As String, strCampoItem As String, Optional CondicionValor As String = "", Optional CampoBuscar As String = "", Optional TipoBuscar As String = "Numero") As Long
'Esta funci贸n se encarga que completar el combo cuyo nombre recibe como parametro.
'Lo completa con los datos que se encuentran en la tabla (cuyo nombre tambien recive como parametro).
'Usando los campos referidos en el parametro para obtener la informaci贸n deseada. La funci贸n devuelva
'la cantidad de registros almacenados ahora en el combo.
'cnnconexio = Conexion a la base de datos.
'cboLlenar = Contiene todos los clientes.
'strTabla = Tabla perteneciente a la base de datos de la cual se recuperan los nombres de los clientes.
'strCampoList =
'CampoBuscar= Se llena este valor y el de CondicionValor cuando se desea agregar al combo algunos campos en especial agregando una condicion a la instruccion sql
'CondicionValor= el valor que tiene que tener el campo
'CampoBuscar= El campo donde se preguntara si response a la condicion
Dim CantRegistros As Long
Dim rs As New ADODB.Recordset
Dim sql As String
If CondicionValor <> "" Then
If TipoBuscar = "Numero" Then
sql = "SELECT * FROM " & strTabla & " WHERE " & CampoBuscar & " = " & CondicionValor
Else
sql = "SELECT * FROM " & strTabla & " WHERE " & CampoBuscar & " LIKE '" & CondicionValor & "%'"
End If
rs.Open sql, cnnConexion, adOpenForwardOnly
Else
rs.Open strTabla, cnnConexion, adOpenForwardOnly
End If
CantRegistros = 0
cboLlenar.Clear
While Not rs.EOF
cboLlenar.AddItem (rs.Fields(strCampoList))
cboLlenar.ItemData(cboLlenar.NewIndex) = rs.Fields(strCampoItem)
rs.MoveNext
CantRegistros = CantRegistros + 1
Wend
LlenarCombo = CantRegistros
rs.Close
End Function
aqui te dejo el codigo
Function LlenarCombo(cnnConexion As ADODB.Connection, cboLlenar As ComboBox, strTabla As String, strCampoList As String, strCampoItem As String, Optional CondicionValor As String = "", Optional CampoBuscar As String = "", Optional TipoBuscar As String = "Numero") As Long
'Esta funci贸n se encarga que completar el combo cuyo nombre recibe como parametro.
'Lo completa con los datos que se encuentran en la tabla (cuyo nombre tambien recive como parametro).
'Usando los campos referidos en el parametro para obtener la informaci贸n deseada. La funci贸n devuelva
'la cantidad de registros almacenados ahora en el combo.
'cnnconexio = Conexion a la base de datos.
'cboLlenar = Contiene todos los clientes.
'strTabla = Tabla perteneciente a la base de datos de la cual se recuperan los nombres de los clientes.
'strCampoList =
'CampoBuscar= Se llena este valor y el de CondicionValor cuando se desea agregar al combo algunos campos en especial agregando una condicion a la instruccion sql
'CondicionValor= el valor que tiene que tener el campo
'CampoBuscar= El campo donde se preguntara si response a la condicion
Dim CantRegistros As Long
Dim rs As New ADODB.Recordset
Dim sql As String
If CondicionValor <> "" Then
If TipoBuscar = "Numero" Then
sql = "SELECT * FROM " & strTabla & " WHERE " & CampoBuscar & " = " & CondicionValor
Else
sql = "SELECT * FROM " & strTabla & " WHERE " & CampoBuscar & " LIKE '" & CondicionValor & "%'"
End If
rs.Open sql, cnnConexion, adOpenForwardOnly
Else
rs.Open strTabla, cnnConexion, adOpenForwardOnly
End If
CantRegistros = 0
cboLlenar.Clear
While Not rs.EOF
cboLlenar.AddItem (rs.Fields(strCampoList))
cboLlenar.ItemData(cboLlenar.NewIndex) = rs.Fields(strCampoItem)
rs.MoveNext
CantRegistros = CantRegistros + 1
Wend
LlenarCombo = CantRegistros
rs.Close
End Function
Private Sub Form_Load()
Dim cmdSql As String
Combo1.Clear
cmdSql = "select * from Delitos"
rsCat.Open cmdSql, conexion
While Not rsCat.EOF
Combo1.AddItem (rsCat(0))
rsCat.MoveNext
Wend
Set rsCat = Nothing
'conexion.Close
End Sub
Dim cmdSql As String
Combo1.Clear
cmdSql = "select * from Delitos"
rsCat.Open cmdSql, conexion
While Not rsCat.EOF
Combo1.AddItem (rsCat(0))
rsCat.MoveNext
Wend
Set rsCat = Nothing
'conexion.Close
End Sub
Aqui te tengo una opcion diferente:
Private Sub 'Control'_'Evento'( )
While not Data1.RecordSet.EOF
A$ = Data1.RecordSet!'Campo'
Combo1.AddItem A$
Data1.RecordSet.MoveNext
Data1.Refresh
Wend
End Sub
Para que este procedimiento funcione, nececitas hacer una conexion a tu base de datos usando un Data control
Private Sub Form_Load ( )
Data1.DataBaseName = App.Path + "\'Baseddatos.extencion"
End Sub
La propiedad RecordSource del data control debe ser igual al nombre de la tabla, y los controles en los que veras los datos (textbox por ejemplo) los debes vincular al data control y al campo que quieres que muestren.
Private Sub 'Control'_'Evento'( )
While not Data1.RecordSet.EOF
A$ = Data1.RecordSet!'Campo'
Combo1.AddItem A$
Data1.RecordSet.MoveNext
Data1.Refresh
Wend
End Sub
Para que este procedimiento funcione, nececitas hacer una conexion a tu base de datos usando un Data control
Private Sub Form_Load ( )
Data1.DataBaseName = App.Path + "\'Baseddatos.extencion"
End Sub
La propiedad RecordSource del data control debe ser igual al nombre de la tabla, y los controles en los que veras los datos (textbox por ejemplo) los debes vincular al data control y al campo que quieres que muestren.