Abrir formulario desde cuadro combinado

Tengo un cuadro combinado que su nombre es cboForms al que le puesto una lista de varios formularios, el nombre de cada formulario es F_Papeleta_de_sitio_2022F_Papeleta_del_sitio_2023 F_Papeleta_de_sitio_2024,  etc  me gustaría que al desplegar el cuadro combinado y elegir cualquiera de ellos 
Que se abra, lo he intentado con una macro, pero me abre todos los de la lista.

3 Respuestas

Respuesta
1

Si deseas seguir utilizando la macro, lo ideal es que publiques las acciones y datos que utilizas (para localizar la causa).

La alternativa es utilizar VBA (que es lo que también hace la macro), pero con VBA se obtiene un mayor control.

Con VBA (y de forma genérica) la expresión se parecería a esta:

DoCmd.OpenForm Nombre_del_formulario

Si cboForms solo tiene una columna, en su evento click (o el que se considere adecuado) se escribiría así:

DoCmd. OpenForm Me.CboForms

Si tiene más de una columna y los nombres no están en la columna predeterminada (columna predeterminada: el valor que devuelve por defecto) a la sintaxis se le añade el numero de columna (que en VBA comienza a contar en cero):

DoCmd.OpenForm Me.cboForms.Column([numerode la columna])

¡Gracias! 

El cuadro combinado es donde pone independiente, eso esta en modo diseño

Ahora en vista formulario se ve el cuadro combinado, que cuando hago clic se despliegan los dos nombre de formularios que puedo abrir, ahora solo hay dos, cada año se irá incrementando uno mas con el nombre del respectivo año en curso, y lo que quiero es que al hacer clic en cualquiera de ellos me abra el formulario correspondiente, como he comentado lo intentado hacer con una macro que con el evento al hacer clic me abra el formulario en el que haga clic del cuadro combinado, y me lo abre, pero cuando eligo el otro formulario del cuadro combinado me abre los dos que hay en el cuadro combinado.

Ahora te pongo en la captura como tengo la macro, hago clic sobre el cuadro combinado, luego voy a propiedades, y en el envento al hacer clic le doy a macro, y en macro elijo el nombre del formulario que quiero abrir en el primer caso es: F_Papeleta_de_sitio_2023 y luego dentro de la misma macro le agrego una nueva acción de abrir el otro formulario que es: F_Papeleta_de_sitio_ 2024 guardo los cambios y cuando hago clic en el desplegable en modo formulario, elijo cualquiera de los dos y me abre los dos, solo quiero que se abra el que elijo.

Es que no utilizas lo que tienes de la forma correcta, la macro abre tantos formularios como acciones de abrir formulario tenga.

En los combos (y el que utilizas tiene como origen de datos una 'lista de valores' ) solo devuelve un valor, el del 'cruce' entre la línea que se seleccione y la columna predeterminada (en este caso solo hay una).

Si se selecciona la primera línea (la del el año 2023) el combo (que hace la función de una variable) devolverá "F_Papeleta_de_sitio 2023" y si se selecciona la otra: el otro nombre (o el que se seleccione cuando se tengan mas datos <=> líneas).

En la macro no hay que utilizar el nombre del formulario: se utiliza el nombre del combo y este 'devuelve' el nombre del que este seleccionado en el (es así de sencillo)


Aprecio que no se están utilizando los recursos de Access de forma eficiente.

Cada año (según ese diseño) se crea una tabla, una consulta y un formulario, además se tendrá que añadir el nombre del formulario en la lista de elementos del combo (demasiado trabajo y desperdicio de recursos).

Basta una tabla, una consulta y un formulario (además del combo para elegir: el año)

En la tabla con los datos se añade un campo mas (el año), lo que permitirá seleccionar (mediante la consulta) el año que se desea (están todos en la misma tabla)

La consulta será 'el origen de datos' del formulario (del único formulario que se necesita para visualizar los datos).

El origen de datos del combo: una consulta que seleccione de la tabla datos los años (sin repeticiones, de forma que solo aparezcan una vez).

Bastara selecciona en el combo el año de nuestro interés para que (la consulta, que tiene como condición al combo) limite los datos que se visualizaran en el formulario cuando se abra (o incluso cuando se cambie de año en el combo).

Se puede programar al combo para que abra el formulario (o actualice el contenido) con los datos del año que se elija en el.

Al crear los datos (en la tabla) de cada año, en el combo aparece el nuevo año y si se borran los datos de un año cualquiera, desaparece el año del combo.

Si lo ves interesante y tienes dudas, exponlas para poder aclararlas.

Respuesta

Independiente de la respuesta a su pregunta existe una curiosidad ¿Para qué que crear un formulario por cada año "F_Papeleta_de_sitio_2022" etc. Algo está mal en el diseño de su base de datos, no obstante, traté en lo posible de utilizar VBA y no macros. Siga las instrucciones que le ofrecen como una alternativa.

Respuesta

To open a form based on a selection from a combo box in a user interface, you can use event handling and conditional Friday Night Funkin logic to determine which form to display.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas