Como poner una tabla de access con datos en combobox

Quiero que cuando haga clip en el combox me traiga una tabla con los datos de access y que cuando clique me cargue esos cambo en los text que están identificados con los mismos datos de la tabla. Estoy utilizando adodc y lo estoy conectando manualmente.
Esto es algo de lo que quiero:
file:///C:/Documents%20and%20Settings/Administrador/Escritorio/imagen/Sin%20t%C3%ADtulo1.bmpfile:///C:/Documents%20and%20Settings/Administrador/Escritorio/imagen/Sin%20t%C3%ADtulo2.bmpfile:///C:/Documents%20and%20Settings/Administrador/Escritorio/imagen/Sin%20t%C3%ADtulo3.bmpfile:///C:/Documents%20and%20Settings/Administrador/Escritorio/imagen/Sin%20t%C3%ADtulo4.bmp

1 respuesta

Respuesta
1
Pues así como entendí tu pregunta, primero quieres que se carguen los datos en un Combobox y los muestre en los textbox, acá te dejo el código de un Modulo para que cargues los datos que quieras a un combobox.
Primero tienes que hacer un Módulo con el siguiente código:
'Módulo para cargar el Combobox
Option Explicit
' declaraciones api
Private Declare Function SendMessageByString& _
    Lib "user32" _
    Alias "SendMessageA" ( _
        ByVal hWnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As String)
' función que deshabilita el repintado de una ventana en windows
Private Declare Function LockWindowUpdate& Lib "user32" (ByVal hwndLock As Long)
Private Const CB_ADDSTRING& = &H143
Private Const LB_ADDSTRING As Long = &H180
' Función que carga el campo en el combobox
Public Function Cargar(ElControl As Object, rst As ADODB.Recordset, Columna As String) As Boolean
    Dim ret As Long
    Dim Mensaje_SendMessage As Long
    On Error GoTo error_function:
    ' verifica que el recordset contenga un conjunto de registros
    If rst.BOF And rst.EOF Then
        MsgBox " No hay registros para agregar", vbInformation
        Call LockWindowUpdate(0&)
        Exit Function 'sale
    End If
    ElControl.Parent.MousePointer = vbHourglass
' Chequea con TypeName el tipo de control enviado como parámetro
    If TypeName(ElControl) = "ComboBox" Then
       Mensaje_SendMessage = CB_ADDSTRING& ' mesanje para SendMessage
    ElseIf TypeName(ElControl) = "ListBox" Then
       Mensaje_SendMessage = LB_ADDSTRING ' mesanje para SendMessage
    End If
' deshabilita el repintado del control para que cargue los datos mas rapidamente
    Call LockWindowUpdate(ElControl.hWnd)
    DoEvents
' Posiciona el recordset en el primer registro
    rst.MoveFirst
' elimina todo el contenido del combo o listbox( opcional )
    ElControl.Clear
' recorre las filas del recordset
    Do Until rst.EOF
' chequea que el valor no sea un nulo
        If Not IsNull(rst(Columna).Value) Then
'Agrega el dato en el control con el mensaje CB_ADDSTRING o LB_ADDSTRING dependiendo del tipo de control
ret = SendMessageByString(ElControl.hWnd, Mensaje_SendMessage, 0, rst(Columna).Value)
        End If
        rst.MoveNext 'siguiente registro
    Loop
    ' selecciona el primer elemento del listado
    If ElControl.ListCount > 0 Then
        ElControl.ListIndex = 0
    End If
    ' vuelve a habilitar el repintado
    Call LockWindowUpdate(0&)
     ' retorno
    Cargar = True
    ' reestablece el puntero del mouse
    ElControl.Parent.MousePointer = vbNormal
    Exit Function
 ' rutina de error
error_function:
    MsgBox Err.Description, vbCritical
' En caso de error vuelve a activar el repintado
    Call LockWindowUpdate(0&)
    ElControl.Refresh
    ElControl.Parent.MousePointer = vbNormal
End Function
Ahora pega esto en el evento LOAD del formulario para iniciar la conexion y el recordset:
Private Sub Form_Load()
On Error Resume Next
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source =" & App.Path & "\bd1.mdb; " & _
                       "Persist Security Info=False"
cnn.CursorLocation = adUseClient
cnn.Open
Set rst = New ADODB.Recordset
rst.Open "Select * From Tabla2", cnn, adOpenStatic, adLockOptimistic
Call Cargar(Combo1, rst, "modelo") '   <-- Mandamos llamar la función del Módulo
End Sub
Y ahora cuando estes en el combobox en la propiedad "Click" iria este codigo:
Private Sub Command1_Click()
If Combo1.Text <> "" Then
Else
    MsgBox "Selecciona un modelo", vbInformation, "Aviso"
    Exit Sub
End If
rst.Filter = "modelo" & " LIKE " + Combo1.Text + ""
    Text1.Text = rst(1)
    Text2.Text = rst(2)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas