Datos de registro de BD a Combo Box

Hola gusto en saludarle, mire trabajo con VB 6.0, tengo una form1 con un Combo1 y una Base de Datos en Access la cual tiene una tabla que contiene código, producto y preciounitario, y deseo cargar de la BD la columna producto al Combo1. Gracias de antemano.

1 Respuesta

Respuesta
1
Create una conexion ADO de este estilo :
Me genero una clase para controlar la conexión y añado al menu de referencias las Microsoft Ado 2.5 Library.
La clase es de este estilo :
Option Explicit
Private Conexion As ADODB.Connection
Dim innerRS As ADODB.Recordset
Private Sub Class_Initialize()
On Error GoTo FalloConexion
Set Conexion = New ADODB.Connection
Conexion.ConnectionString = strMontarCad(LOGIN, PASS, "", SERVICIO)
Conexion.Open
Exit Sub
FalloConexion:
MsgBox Err.Description
End Sub
Private Function strMontarCad(ByVal PestrUsuario As String, ByVal PestrClave As String, ByVal PestrServidor As String, ByVal PestrBD As String) As String
Dim mCadenaConex As String
' Esta era la cadena para conectar a Oracle
'mCadenaConex = "Provider=MSDAORA.1;Password=" & PestrClave & ";User ID=" & PestrUsuario & ";Data Source=" & PestrBD & ";Persist Security Info=True"
' Otra cadena para conectar a Oracle, pero por OLEDB
'mCadenaConex = "Provider=OraOLEDB.Oracle.1;Password=" & PestrClave & ";User ID=" & PestrUsuario & ";Data Source= " & PestrBD & ";Persist Security Info=true"
' La que te interesa, para conectar con ACCESS
mCadenaConex = "Provider =Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDeDatos\Primarios.mdb;"
strMontarCad = mCadenaConex
End Function
Public Function ExecuteQuery(SQL As String) As ADODB.Recordset
Set innerRS = New ADODB.Recordset
innerRS.CacheSize = 30
InnerRS. Open SQL, Conexion. ConnectionString, adOpenForwardOnly, adLockBatchOptimistic, adAsyncFetch
Set ExecuteQuery = innerRS
End Function
Public Sub ExecuteSQL(SQL As String)
Conexion. BeginTrans
Conexion.Execute SQL
Conexion.CommitTrans
DoEvents
End Sub
Private Sub Class_Terminate()
If (Conexion.State <> adStateClosed) Then
Conexion.Close
End If
End Sub
Una vez creada la clase, digamos que la llamamos ClsConexion. Se usaria de este modo :
Te declaras un objeto de la clase :
Public Conexion As ClsConexion
Set Conexion = New ClsConexion
Una vez declarado el objeto, para generar una consulta solo debes hacer lo siguiente :
Dim SQL As String
Dim rsPrivado As Recordset
SQL = "Select PAGOS from TABLAPAGOS "
Set rsPrivado = Conexion.ExecuteQuery(SQL)
' A partir de esto, rsPrivado contiene los datos de la consulta. De este modo,
' rsPrivado(0).value sera el primer campo del valor resultado de la SQL Y en este caso el único...
Para el caso 2 :
SQL = "Select APELLIDOS from TABLAAPELLIDOS where APELLIDOS <> 'MEZA ALVA'
GROUP BY APELLIDOS"
Set rsPrivado = Conexion.ExecuteQuery(SQL)
En este caso, para recorrerte los campos de la consulta, tendrás que hacerlo de este modo :
' Desde el primer elemento, al último...
While Not rsPrivado.EOF
msgBox( rsPrivado(0))
' Escribir rs(Privado(0) es lo mismo que poner rsPrivado ("APELLIDOS")
' Bien, ahora pasariamos al siguiente elemento...
rsPrivado.MoveNext
' Y cerramos el bucle...
Wend
Si obteniendo los campos de ese modo y almacenas un array de IDs por registro, solo tienes que hacer los updates y los deletes por SQL
Con el objeto conexión y el método executeSQL.
Ahora si, antes de hacer la actualización o borrado del campo, puedes validar que este existe. Con la sentencia Select.
Así cargo yo un combo :
Dim rsPrivado As Recordset
Dim SQL As String
SQL = "Select " & CampoId & " , " & CampoDescripcion & _
" from " & strTabla
If Where <> "" Then
SQL = SQL & " WHERE " & Where
End If
SQL = SQL & " GROUP BY " & CampoId & " , " & CampoDescripcion
SQL = SQL & " ORDER BY " & CampoDescripcion
Set rsPrivado = Conexion.ExecuteQuery(SQL)
While Not rsPrivado.EOF
Me.Combo1.AddItem rsPrivado(1)
ReDim Preserve ArrayPosicionID(0 To Combo1.ListCount - 1)
ArrayPosicionID(UBound(ArrayPosicionID)) = rsPrivado(0)
rsPrivado.MoveNext
Wend
If Combo1.ListCount <> 0 Then
Combo1.ListIndex = 0
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas