Mostrar datos en textbox vb excel según dato de combobox desde tabla access

7 envíos / 0 nuevos
Último envío
Giannine
Imagen de Giannine
Offline
última acción: Hace 3 años 8 meses
alta: 03/05/2020 - 19:36
Puntos: 170
Mostrar datos en textbox vb excel según dato de combobox desde tabla access

Hola, espero alguien pueda ayudarme.

Tengo una tabla "CLIENTES" dentro de una base de datos "CONTAINTEGRAL.accdb" en access 2016.

 

En excel tengo una macros que abre un formulario, un combobox que carga los datos "Razón Social" desde la tabla "CLIENTES" de access. Hasta ahí todo bien.

 

El problema es que cuando selecciono un dato en el combobox quiero que muestre el dato relacionado "RUC" en el textbox, pero no se como hacerlo.

 

Alguien sabe como obtener ese dato?

Mi código para lo que tengo avanzado es:

------------------------------------------->

MODULO:

 

-------------------------------------------->

 

Public MiConexion As New ADODB.Connection
Public Rs As New ADODB.Recordset

Sub Conectar()

Set MiConexion = New ADODB.Connection
With MiConexion
.Provider = "Microsoft.ACE.OLEDB.16.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\CONTAINTEGRAL.accdb"
.Open
End With
End Sub

------------------------------------------->

FORM_INICIO:

-------------------------------------------->

Private Sub UserForm_Initialize()

Call Conectar

Rs.ActiveConnection = MiConexion
Rs.CursorType = adOpenStatic
Rs.LockType = adLockOptimistic
Rs.CursorLocation = adUseClient
Rs.Open "Select [RAZÓN SOCIAL] From CLIENTES"
Do While Not Rs.EOF()
Cmb_RSCliente.AddItem Rs("RAZÓN SOCIAL")
Rs.MoveNext
Loop
Set Rs = Nothing
MiConexion.Close
Set MiConexion = Nothing

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Se puede hacer de varias

Se puede hacer de varias maneras. Yo lo haría modificando ligeramente tu combobox.

El combo puede tener más de una columna. Puedes modificar en propiedades para que tenga 2 columnas, y luego en la propiedad "ancho de columnas" poner la primera a 0 para que no se vea. La primera será el valor que se toma cuando llamas a Cmb_RSCliente.Value

Para llenar el combobox tendrías que hacer entonces otra cosa. En vez de utilizar AddItem así, lo haría de esta otra forma:

Do While Not Rs.EOF()

    With Cmb_RSCliente

        .AddItem

        .list(.listcount,0) = Rs("RUC")

        .list(.listcount,1) = Rs("RAZÓN SOCIAL")

    end with

Rs.MoveNext

Loop

 

Prueba y nos dices

 

Un saludo

Giannine
Imagen de Giannine
Offline
última acción: Hace 3 años 8 meses
alta: 03/05/2020 - 19:36
Puntos: 170
Gracias por responder...En el

Gracias por responder...

En el cuadro de propiedades hice esto:

BoundColumn = 1

ColumnCount = 2

TextColumn = 2

* El codigo  quedo así, pero me sale error.

----------------------------------------------------------------------------------------

Private Sub UserForm_Initialize()   

Call Conectar

        Rs.ActiveConnection = MiConexion

        Rs.CursorType = adOpenStatic

        Rs.LockType = adLockOptimistic

        Rs.CursorLocation = adUseClient

        Rs.Open "CLIENTES"

           Do While Not Rs.EOF()

              With Cmb_RSCliente

                .AddItem

                .List(.ListCount, 0) = Rs("RUC")

                .List(.ListCount, 1) = Rs("RAZÓN SOCIAL")

              End With

           Rs.MoveNext

           Loop

   Set Rs = Nothing

   MiConexion.Close

   Set MiConexion = Nothing

 End Sub

----------------------------------------------------------------------------------------

Adjunto los archivos, a ver si alguien me puede ayudar please!

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
¿Qué error te sale y en qué

¿Qué error te sale y en qué línea?

Giannine
Imagen de Giannine
Offline
última acción: Hace 3 años 8 meses
alta: 03/05/2020 - 19:36
Puntos: 170
Sale una ventana que dice

Sale una ventana que dice:

Error '381' en tiempo de ejecución: No se puede configurar la propiedad List. Índice de matriz de propiedades no valido.

Hago click en DEPURAR y me muestra el error en la linea del modulo de la macro del boton que abre el formulario y antes no tenía ese error.

 

Sub BOTON_REGISTRAR()

Load Form_Inicio  ------------------------------------> Esta linea se resalta

Form_Inicio.Show

End Sub

 
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Vale, cuando te salga ese

Vale, cuando te salga ese error, sigue dándole a F8 hasta que vuelva a fallar.

Seguramente se te pare en la línea que dice

.List(.ListCount, 0) = Rs("RUC")

Creo que el problema es que los parámetros de list empiezan en 0. Por lo tanto, como Listcount es 1 (hay una fila), tienes que poner esto:

.List(.ListCount - 1, 0) = Rs("RUC")

.List(.ListCount - 1, 1) = Rs("RAZÓN SOCIAL")


Espero que te sirva.


Un saludo

Giannine
Imagen de Giannine
Offline
última acción: Hace 3 años 8 meses
alta: 03/05/2020 - 19:36
Puntos: 170
Genio!! ese código solucionó

Genio!! ese código solucionó el error.

Ya solo quedó agregar este codigo para que copie la columna RUC del combobox al textbox y ya quedo tal como quería. Muchísimas gracias. Saludos =)

-------------------------------------------------------------------------

Private Sub Cmb_RSCliente_Change()

    If Cmb_RSCliente.Text <> "" Then

        Txt_RUC.Text = Cmb_RSCliente.List(Cmb_RSCliente.ListIndex, 0)

    End If

End Sub

-------------------------------------------------------------------------