** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Seleccionar registro en combobox al entrar
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Seleccionar registro en combobox al entrar

 Responder Responder
Autor
Mensaje
Kiket Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 28/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 200
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Kiket Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Seleccionar registro en combobox al entrar
    Enviado: 01/Julio/2022 a las 05:03

Hola de nuevo, aunque parezca sencilla la pregunta, me está llevando un quebradero de cabeza y recurro a ustedes para ver si me pueden ayudar..

Tengo una lista con muchos registros donde al hacer click en uno de estos me captura el número de registro (su index) del siguiente modo:

      Index = Me.Lista.ListIndex

 

Luego este valor capturado lo paso a otro formulario donde existe un “combobox” con los mismos registros que se tenían en la lista (anterior mencionada) donde quisiera que este registro fuese seleccionado (por defecto) al entrar en este combo y que realizo del siguiente modo:

       Me.Combo. Dropdown ‘..primero lo despliego

       Me.Combo = Me.Combo.ItemData(Index)

 

Esto funciona bien excepto en el caso de que el texto de los registros coincidan donde me coje el primer valor coincidente y no el correspondiente al index; a continuación muestro el ejemplo del error:

     Lista     -             Valor del index que es capturado

              Jose                             0                         

              Antonio                         1

              Patricia                         2

              Pedro                            3

              Antonio                         4

              Rebeca                          5

 

Si selecciono el último registro con nombre “Antonio”, el valor que es guardado (Me.Lista.ListIndex = 4); .. pero luego al entrar en el combobox y ejecutar (Me.Combo = Me.Combo.ItemData(Index)) selecciona el primer nombre Antonio y debería seleccionar el último ¿?¿?..

 

He probado también para la selección con estas opciones:

Me.Combo. Dropdown

Me.Combo.Selected(Index) = True

              ---

Me.Combo.Dropdown

Me.Combo.ListIndex = Index

              ---

El problema con estas opciones anteriores es que selecciona el registro en el combo y sale el enfoque de este control (ejecutando otros eventos) y quiero que se quede de manera visual el registro seleccionado por si deseo seleccionar otro que no sea el que tiene el enfoque (por defecto)

 

¿Alguna sugerencia?, ¿Algo que esté realizando mal?.. gracias de antemano



Editado por Kiket - 01/Julio/2022 a las 05:07
Kike
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14017
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Julio/2022 a las 08:47
No, lo estás haciendo bien.

Para asegurar el valor la forma correcta es:

Me.Combo.Selected(Index) = True

Si te ejecuta eventos del cambo, tendrás que ponerte una variable booleana (semáforo o flag) que te permita salir del evento sin ejecutarlo.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kiket Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 28/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 200
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Kiket Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Julio/2022 a las 15:07
Gracias Mihura, es como dices..; descarté la sentencia "Selected" porque me actualizaba el valor del campo y se producia el evento "AfterUpdate" donde se ejecutaba cierto código (personal) que me bloqueaba el campo posteriormente y entonces busque otras maneras de hacerlo dando palos de ciego..

Teniendo esto en cuenta pondré algún marcador (True/False) para que me ejecute el "AfterUpdate" cuando sea necesario

A veces, por ser (yo) tan cabezota busco alternativas que me desvían del objetivo y luego todo resulta más fácil.. jeje..Guiño

Un abrazo y gracias..

Se puede cerrar el hilo
Kike
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14017
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Julio/2022 a las 15:23
Publicado originalmente por Kiket Kiket escribió:

A veces, por ser (yo) tan cabezota busco alternativas que me desvían del objetivo y luego todo resulta más fácil.. jeje..Guiño

Eso nos pasa a todos  Unhappy
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kiket Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 28/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 200
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Kiket Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Julio/2022 a las 14:35

              Reabro el tema porque al parecer no quedó zanjado el asunto.., sorry

              Yendo al primer mensaje que expuse, el problema sucede al pasar el valor capturado (Lista.Index) a otro formulario para que luego al entrar en un combo de este (con los mismos registros que se tenían en la lista) quede seleccionado por defecto el mismo

              Esta selección la realizo en un proyecto de esquemas donde tengo que poner encabezados con subencabezados y pueden haber incluso más de 1000 registros en una lista, así que me facilita el trabajo la selección por defecto para no tener que ir buscando en que punto del esquema me quedé..; luego añado comentarios al esquema y otras cosas, pero para no liar el asunto volvamos al problema en cuestión

 

              En un mismo formulario todo funciona bien, es decir, capturo el valor de la lista en un campo llamado Index (que no es editable pero que tengo  visible para ver su valor) donde en el evento -Al hacer click- de la lista he puesto “Me.Index = Me.Lista.ListIndex” y luego envío el foco al control combo donde en su evento -Al entrar- he puesto:

Me.Combo.Dropdown ‘..con esto despliega los registros

                            Me.Combo.Selected(Me.Index) = True ‘..con esto lo selecciona el deseado

                                                                                                                               Esto funciona perfecto!!

 

              Pasando el argumento capturado a otro formulario es donde no sucede lo mismo y ocurre el error cuando los registros coinciden con su misma definición, donde es seleccionado el primero, para ello sigo los mismos pasos que en el caso anterior; es decir, capturo el valor -Al hacer click en la lista- en un campo del mismo formulario con “Me.Index = Me.Lista.ListIndex” que luego envío -Al hacer click en un botón- a otro formulario del siguiente modo:

              DoCmd.OpenForm "Formulario2"   ‘..Abrimos el 2º formulario

                            '--

              Form_Formulario2.Index = Me.Index ‘..guardo el valor del Index en un campo del formulario2 (que no es editable pero que tengo visible para ver su valor y que es mostrado correctamente)

                            ..lo podría hacer con variables (que ya he probado) pero siguen dando el mismo error

 

              Y luego al entrar en el combo (de este segundo formulario) he puesto lo mismo que indique anteriormente y que si funcionaba en el caso de un solo formulario, es decir:

Me.Combo.Dropdown ‘..con esto despliega los registros

                       Me.Combo.Selected(Me.Index) = True ‘..con esto lo selecciona el deseado

             

El error sucede (como ya indiqué) cuando la definición de un registro es la misma (como en el caso de tener 2 nombres “Antonio” coincidentes), donde si seleccionamos el segundo de la lista, al entrar en el combo quedaría seleccionado el primero (aunque los valores mostrados en los campos Index son correctos)¿?¿?

 

.. ¿Alguna sugerencia?, ¿Algo que esté realizando mal?, gracias de antemano por la paciencia..

Kike
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable