Como programar para que a partir de un menu despegable multivalor muestre visible uno o más subformularios

Tengo un formulario que tiene varios campos pero uno es un campo multivalor que se llama ASEFURAMIENTOD (que es cuadro de lista con opción de elegir varios multivalores )y quisiera que cuando el usuario seleccionara una o varias opciones se mostraran los subformularios que corresponden a la elección (los sub formularios son subfarma, subfdetenido, subfdroga, subfvehiculo, mi código actual solo funciona cuando selecciono una opción mostrándome el subformulario seleccionado ya que cuando selecciono más de una me dice uso no válido del null

Private Sub ASEGURAMIENTOD_AfterUpdate()

Dim valor As String
valor = Me.ASEGURAMIENTOD.Column(1)

Select Case valor

Case "ARMA"
Me.SubfArma.Visible = True

Case "PERSONA"

Me.SubfPersona.Visible = True

Case "DROGA"
Me.SubfDroga.Visible = True

Case "VEHICULO"

Me.SubfVehiculo.Visible = True

End Select

End Sub

2 respuestas

Respuesta

Sería conveniente subiera una imagen para tener más claridad y no entrar en respuesta incoherentes.

En la tabla reporte en el campo aseguramiento en tipo de dato le puse asistente de búsqueda y active la opción de multivalos así que al agregarlo al formulacio me permite que sea multivalor

La respuesta que le dan NADA tiene que ver para manipular campos multivalor y en consecuencia no se pude recorrer como un cuadro de lista con FOR EACH. No es recomendable utilizar campos multivalor, en su defecto, utilice un cuadro de lista. En este caso si aplica en parte lo que le indican, pero en alguna columna de ir el nombre del subformulario.

Para recorrer campos multivalor se puede hacer con un recordset algo como lo explica Microsoft

Manipule campos multivalor con daO | Documentos de Microsoft

Respuesta

Para abrir formularios que se pueden seleccionar en un cuadro de lista ...

¿Qué diferencia hay entre que se abran según se seleccionan y abrirlos al final de una selección múltiple?.

Con Select Case se evalúa un dato que puede tener varias posibilidades y aquí se trata de evaluar múltiples datos y cada uno solo tiene una posible acción, por lo que la opción Select Case no es la mejor entre las posibles.

Para conseguir que se abran cuando se finaliza la selección múltiple, habrá que detectar que se finalizo la selección (por ejemplo desplazándose a otro objeto: el evento 'perder el foco' es una posibilidad).

Para procesar la selección, basta con recorrer los objetos seleccionados y (como todos los Ítems tienen su formulario asociado), simplemente se abren.

Basándome en que la asociación entre el dato referente es :
Case "ARMA"
Me.SubfArma.Visible = True

Deduzco que el nombre del formulario se puede recrear así:

"Subf" & Me.ASEGURAMIENTOD.Column(1)

Reutilizare un código ya publicado:

Private Sub ASEGURAMIENTOD_AfterUpdate()
Dim Bucle
If Me.ASEGURAMIENTOD.ItemsSelected.Count = 0 Then Exit Sub
For Each Bucle In Me.ASEGURAMIENTOD.ItemsSelected
Me.Controls("subf" & Me.Aseguramientod.colunm(1)).Visible = True
Next Bucle
End Sub

Esta escrito sobre la marcha por lo que puede haber algún error de sintaxis
Propongo una alternativa que conmute su estado (verificarla no cuesta nada y en algún momento habrá que esconderlos).

Esta línea:
Me.Controls("subf" & Me.Aseguramientod.colunm(1)).Visible = True
Por esta:
Me.Controls("subf" &  Me.Aseguramientod.colunm(1)).Visible = NOT Me.Controls("subf" & Me.Aseguramientod.colunm(1)).Visible

El autor ha publicado:


Tengo un formulario que tiene varios campos pero uno es un campo multivalor que se llama ASEFURAMIENTOD (que es cuadro de lista con opción de elegir varios multivalores )y quisiera que ...


Mi respuesta comienza así:
Para abrir formularios que se pueden seleccionar en un cuadro de lista ...


Sera el autor (y no el traductor) el que aplique la opción que le dé el resultado que desea y (conociendo los recursos): si los nombres siguen una constante al crearlos, nada impide recrear los nombres de los objetos en base a los datos aportados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas