Abrir diferentes formularios dependiendo del valor de un cuadro de lista

Tengo un formulario en el que tengo un cuadro de texto para buscar una referencia. Una vez localizada la referencia, se actualiza un cuadro de lista que indica el tipo de referencia que es. Lo que quiero es, abrir el tipo de formulario correspondiente al tipo de referencia buscada. ¿Me pueden indicar cómo tener un botón de comando que abra el formulario correcto?

2 respuestas

Respuesta
2

Con la información que das es imposible darte una respuesta directa. Te pongo un ejemplo:

Suponiendo que el cuadro de lista se llama lstReferencia y que te devuelve un valor texto el código del botón de comando debería ser:

...

Private Sub...

Select case me.lstReferencia.value

Case "UnValorA"

docmd.openform "FormA"

Case "UnValorB"

docmd.openform "FormB"

' Y así sucesivamente para las diferentes referencias y formularios

Case Else

msgbox "No se puede abrir el formulario",vbCritical, "ERROR"

End Select

End Sub

...

Lógicamente deberás adaptar los nombres a los elementos de tu BD.

Si el valor devuelto por el cuadro de lista es un valor numérico la estructura es la misma, sólo que el número no se pone entre comillas.

¡Gracias! Ha sido perfecta la respuesta. Me funcionó a la primera!

Me ha surgido una duda. Si en el cuadro de lista incorporo más columnas, ¿sabríais decirme si puedo vincular la apertura del formulario al valor de una columna determinada?

El cuadro de lista te devuelve, por defecto, un valor, que es el que le indicas en la propiedad "Columna dependiente".

Si quieres el valor de otra columna se lo tienes que indicar así:

Me. LstReferencia. Colum(x)

Donde x es el número de columna menos uno (porque la colección empieza por 0 -cero-)

Es decir, que si tú tienes cinco columnas en el listbox y quieres el valor de la tercera tienes que escribir:

Me. LstReferencia. Column(2)

Respuesta
2

Si tu cuadro de lista se llama lstReferencias, el código del botón tendría que tener esta estructura:

Private Sub NombreBoton_Click()

Dim miRef as String

miRef=Nz(Me.lstReferencias,"")

Select Case miRef

Case "Referencia1"

DoCmd.OpenForm "NombreForm1"

Case "Referencia2"

DoCmd.OpenForm "NombreForm2"

Case Else

MsgBox "No has seleccionado una referencia"

End Select

End Sub

Tendrás que poner tantos Case "..." como referencias tengas. Si tienes varias referencias que abran el mismo formulario, puedes ponerlas en el mismo Case, separadas por coma (Case "Ref1", "Ref3")

Obviamente, has de cambiar el nombre del formulario a abrir y los valores de tus referencias (lo que está en negrita).

En el código he supuesto que la referencia es un valor de texto, si fuera numérico, has de cambiar la declaración (Dim miRef as Long, por ejemplo) dependiendo de cómo tengas definido en la tabla el campo (entero, entero largo...)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas