Combobox y mostrar dato en textbox

Como están todos, soy novato en visual basic 6.0, quería la ayuda de ustedes por favor ya que estoy haciendo un código para fines académicos y tengo el siguiente problema
Tengo un Combobox y quisiera que al elegir un valor de este Combobox me muestre un dato en un TextBox de una tabla, hice el siguiente código
El primero lo hice desde el formulario
Private Sub Form_Load()
On Error Resume Next
' Asignar el nombre de la base de datos
' (si la aplicación se ejecuta en el directorio raiz, quitar el \)
Dim sBase
sBase = App.Path & "\bd1.mdb"
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
rst.Open "SELECT * FROM Tabla2", cnn, adOpenDynamic, adLockOptimistic
Combo1.Text = rst("modelo")
Text1.Text = rst.Fields("ipdcn").Value
Text2.Text = rst.Fields("metro").Value
Do Until rst.EOF
Combo1.AddItem rst.Fields(9).Value
rst.MoveNext
Loop
Combo1.ListIndex = 0
rst.MoveFirst
End Sub
Y este codigo lo hice en el ComboBox
Private Sub Combo1_Change()
On Error Resume Next
' Asignar el nombre de la base de datos
' (si la aplicación se ejecuta en el directorio raiz, quitar el \)
Dim sBase
sBase = App.Path & "\bd1.mdb"
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
rst.Open "SELECT * FROM Tabla2", cnn, adOpenDynamic, adLockOptimistic
Combo1.Text = rst("modelo")
Text1.Text = rst.Fields("ipdcn").Value
Text2.Text = rst.Fields("metro").Value
End Sub
Los datos me aparecen en el Combobox pero al elegir cualquier dato de este combobox no aparece nada en el textbox, gracias y si alguien me pudiera ayudar le estaré muy agradecido
saludos
1

1 Respuesta

15.625 pts. volviii
Pues como me funciono tu código para ayudarte mejor, pues tal vez te sirva uno que hice para que tu lo pruebes, espero que sea lo que pediste:
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
Como ves, este código es prácticamente sencillo, solo lo más largo es el Módulo porque tiene que contar los registros de la tabla y mandarlos, si quieres utiliza tu código en este ejemplo, yo lo puse por si necesitabas algo más.
Espero que te sea útil esta información, si tienes dudas o algo que quieras preguntar solo dime y con gusto te resolveré tu duda.
Como estas asderpunk, disculpa la tardanza en responde, estaré viendo tu código y te avisare como me fue, gracias por la ayuda
Saludos
Ok..
No te preocupes je je y gracias por confiar, si te sirvió el código por favor cierra y evalúa la pregunta, o si necesitas algo más no dudes en preguntarme.
No se te olvide cerrar y Calificar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas