Access - elejir en un combobox un item igual al contenido o valor que esta en un textbox

 
Vista:
sin imagen de perfil

elejir en un combobox un item igual al contenido o valor que esta en un textbox

Publicado por victor alfonso (21 intervenciones) el 19/10/2022 22:51:11
Muy buenas tardes a todos los estimados de este foro, soy nuevo en este mundo de la programación.

Estoy haciendo un proyecto de base de datos en access y vba, no se mucho de código, por esto acudo a ustedes para que desde su conocimiento me ayuden, tengo un formulario donde se encuentra un combobox con unos números de identificación de personas o registros que existen en una tabla, y también en el formulario hay un textbox donde al abrir este formulario se carga automáticamente en ese textbox un numero de identificación desde otro formulario.
utilizo un código así en el primer formulario:

Private Sub btnCrearCredito_Click()
If Len(Me.txt6Buscador) > 0 Then
DoCmd.OpenForm "CREAR_CREDITO", , , , , , Me.txt6Buscador
End If
End Sub

Esto para cargar la propiedad openargs y que al abrir el otro formulario llamado "CREAR_CREDITO" se cargue el dato requerido en el textbox
asi:
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.txtBusqueda = Me.OpenArgs

end if
end sub

hasta allí todo bien porque si carga en el campo del txtbox el valor o dato requerido., pero esto no funciona al hacerlo para un combobox. para seleccionar o cargar un valor de la lista que tiene el combo.

Lo que quiero hacer es que ese numero de identificación que se cargo en ese textbox que también esta en el cuadro combinado (combobox) se me seleccione automáticamente en el combobox, como que recorra el listado del combo box y seleccione el valor que sea igual al del textbox.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

elejir en un combobox un item igual al contenido o valor que esta en un textbox

Publicado por Anonimo (3316 intervenciones) el 20/10/2022 02:52:02
Si el campo esta en la columna predeterminada (el valor que devuelve el combo), en principio deberia ser suficiente con igualarlos (el valor esta en la propiedad OpenArgs), pero ¿tiene sentido un combo para un dato conocido y que es la referencia de ese registro?

De cualquier forma, en el evento Open del formulario:
1
2
3
Private Sub Form_Open(Cancel As Integer)
If Me.OpenArgs <> Null Then Me.[Mi_Combo] = Me.OpenArgs
End Sub

Si se le pasa un valor (que se supone existe) lo seleccionara, si no se le envía nada en esa propiedad, no hará nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

elejir en un combobox un item igual al contenido o valor que esta en un textbox

Publicado por victor alfonso (21 intervenciones) el 20/10/2022 22:51:04
muy buenas tardes, gracias por su respuesta, ya lo he intentado de esa forma y no me funciona.
solo me funciona haciéndolo con un textbox,

la verdad he y intentado varias formas hasta con una sentencia sql desde el formulario pero independiente y al guardar el registro manda un mensaje que no se puede guardar el registro porque no existe relacion con algún registro en la base de datos.


por eso se me ocurre hacer que se seleccione el el combobox el item que sea igual al que se logra capturar en el textbox, como lo manifeste en el post inicial.

he intentado hacer un bucle de dos formas pero no me da. el código que utilizo es el siguiente

Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.txtBusqueda = Me.OpenArgs

For i = 0 To cmbidEstudiante.ListCount - 1
If Me.txtBusqueda = cmbidEstudiante.ListIndex(i) Then ------- error de compilación resalta en esta linea (pero solo .ListIndex) en azul
cmbidEstudiante = cmbidEstudiante.ListIndex(i)
Exit For
End If
Next
end if
end sub

donde "txtBusqueda" es el textbox que captura el dato desde otro formulario y "cmbidEstudiante" es el combobox en el que se quiere seleccionar el item automáticamente, es decir el mismo valor que tiene el text box "txtBusqueda".

pero este código me arroja un error , dice error de compilacion y resalta en azul el fragmento de codigo

el otro código es este:

Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.txtBusqueda = Me.OpenArgs

Dim seleccionar As Integer


cmbidEstudiante.SelectedIndex = 0 ------- aqui salta el error ".SelectedIndex ="
seleccionar = Me.txtBusqueda
For i = 0 To cmbidEstudiante.Items.Count
cmbidEstudiante.SelectedIndex = i
If seleccionar = cmbidEstudiante.SelectedValue Then
cmbidEstudiante.SelectedIndex = i
Exit For
End If
Next i
end if
end sub

este código da un error de compilación "no se encontró el método o el dato miembro"

como dije inicialmente estoy apenas en proceso de aprendizaje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

elejir en un combobox un item igual al contenido o valor que esta en un textbox

Publicado por Anonimo (3316 intervenciones) el 21/10/2022 06:14:04
Hay un dato que sería necesario, saber si el cuadro combinado tiene más de una columna y cuál es la predeterminada.

Los combos solo interactúan con su columna predeterminada, el resto de las columnas son simple compañía, para obtener el dato de esa columna no se utiliza 'ListIndex', se utiliza 'ItemData', pero al final concluimos en el mismo lugar, asignar el valor al combo (y recorrerlo solo serviría para verificar que está en el conjunto)

En este código se dilapidan recursos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.txtBusqueda = Me.OpenArgs
 
Dim seleccionar As Integer
 
 
cmbidEstudiante.SelectedIndex = 0 ------- aqui salta el error ".SelectedIndex ="
seleccionar = Me.txtBusqueda
For i = 0 To cmbidEstudiante.Items.Count
cmbidEstudiante.SelectedIndex = i
If seleccionar = cmbidEstudiante.SelectedValue Then
cmbidEstudiante.SelectedIndex = i
Exit For
End If
Next i
end if
end sub

Para verificar la existencia del dato (en la columna dependiente) y asignárselo al combo, se puede hacer algo como esto:

1
2
3
4
Dim i As Long
For i = 0 To Me.cmbidEstudiante.ListCount - 1
If Me.cmbidEstudiante.ItemData(i) = Me.OpenArgs Then Me.cmbidEstudiante= Me.cmbidEstudiante.ItemData(i): Exit For
Next i

En esencia se hace lo mismo que se indicó con anterioridad: se le asigna el valor al combo (esta vez se verifica que existe para evitar posibles errores), el combo devolverá el valor que corresponda y sus colunas asociadas (si las tiene) serán accesibles con la propiedad 'column()'

Observaras que se le asigna OpenArgs (el dato que ha de existir en el combo) al combo y ese dato es igual a OpenArgs (o no lo seleccionaría el bucle), ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar