15
MENÚ PERSONALIZADO CON ACCESS 2010 1 INTRODUCCIÓN A través de este ejemplo veremos cómo: Podemos crear un menú personalizado en la cinta de opciones Podemos crear un menú contextual para determinados objetos de Access. Todo lo anterior utilizando macros. Ya os advierto que este es un proceso bastante “laborioso”, por lo que este ejemplo se desarrollará con unas pocas opciones de menú. De todas maneras, una vez entendáis la sistemática no hay mayor secreto (quizá el único problema que nos pueda surgir es saber cómo hacer determinadas cosas con macros, pero eso ya se sale del objetivo de este ejemplo. Habrá que “buscarse la vida” con la ayuda que nos dé Access o que podamos encontrar por Internet). Dicho lo anterior os planteo la idea general: vamos a crearnos un menú personalizado para realizar algunas tareas “comunes” al trabajar con formularios. Y, aprovechando la sistemática, nos crearemos un menú contextual personalizado para trabajar sobre un campo en concreto de un informe. Aprovecharemos la ocasión también para ver cómo podemos añadir notas accesorias a un registro en concreto a través de un formulario, utilizando macros también. Vamos a preparar el terreno... PREPARANDO NUESTRA BD Vamos a crearnos una tabla, a la que llamaremos TDatos, simplemente para tener “material” para poder crear un formulario y un informe. Esta tabla será muy simple, y tendrá la siguiente estructura: La rellenamos con algunos datos. Por ejemplo: 1 La BD de ejemplo os la podéis bajar aquí . 1 Visítame en http://neckkito.eu5.org

Menu Macros 2010

Embed Size (px)

Citation preview

Page 1: Menu Macros 2010

MENÚ PERSONALIZADO CON ACCESS 20101

INTRODUCCIÓNA través de este ejemplo veremos cómo:– Podemos crear un menú personalizado en la cinta de opciones– Podemos crear un menú contextual para determinados objetos de Access.Todo lo anterior utilizando macros.

Ya os advierto que este es un proceso bastante “laborioso”, por lo que este ejemplo se desarrollará con unas pocas opciones de menú. De todas maneras, una vez entendáis la sistemática no hay mayor secreto (quizá el único problema que nos pueda surgir es saber cómo hacer determinadas cosas con macros, pero eso ya se sale del objetivo de este ejemplo. Habrá que “buscarse la vida” con la ayuda que nos dé Access o que podamos encontrar por Internet).

Dicho lo anterior os planteo la idea general: vamos a crearnos un menú personalizado para realizar algunas tareas “comunes” al trabajar con formularios. Y, aprovechando la sistemática, nos crearemos un menú contextual personalizado para trabajar sobre un campo en concreto de un informe.

Aprovecharemos la ocasión también para ver cómo podemos añadir notas accesorias a un registro en concreto a través de un formulario, utilizando macros también.

Vamos a preparar el terreno...

PREPARANDO NUESTRA BDVamos a crearnos una tabla, a la que llamaremos TDatos, simplemente para tener “material” para poder crear un formulario y un informe. Esta tabla será muy simple, y tendrá la siguiente estructura:

La rellenamos con algunos datos. Por ejemplo:

1 La BD de ejemplo os la podéis bajar aquí.

1Visítame en http://neckkito.eu5.org

Page 2: Menu Macros 2010

Vamos a crearnos un formulario en blanco, al que llamaremos FMenu. Este formulario será nuestro “panel de control”. En este formulario vamos a insertar tres botones de comando, que nos servirán para abrir FDatos, RDatos y RNotas. Insertamos pues un primer botón de comando, sacamos sus propiedades y nos vamos a la pestaña Otras → Nombre, y ahí le escribimos cmdAbreFDatos.

Ahora nos vamos a la pestaña Eventos Al hacer click, y le→ generamos el siguiente código2:

…Private Sub cmdAbreFDatos_Click() DoCmd.Close acForm, Me.Name DoCmd.OpenForm "FDatos"End Sub…

Ahora podemos añadir un segundo botón de comando, al que pondremos de nombre cmdAbreRDatos (Propiedades Pestaña Otras Nombre) y en el evento “Al hacer click”→ → (Propiedades Pestaña Eventos) le generamos este otro código:→

…Private Sub cmdAbreRDatos_Click() DoCmd.OpenReport "RDatos", acViewReportEnd Sub…

¡Ojo! Es importante que el informe se abra en “Vista Informe” (acViewReport) para poder operar con los datos del informe.

Al último botón le llamamos cdmAbreRNotas y su código será:

…Private Sub cmdAbreRNotas_Click() DoCmd.OpenReport "RNotas", acViewPreviewEnd Sub…

Creamos un formulario basado en TDatos, que llamaremos FDatos. Nos debería quedar una cosa así:

2 Para generar código nos ponemos en la parte en blanco junto al evento que queramos, y veremos cómo nos aparece un pequeño botón de puntos suspensivos. Si hacemos click sobre él nos aparecerá una ventana. Le decimos que queremos generar código.Se nos abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas dos líneas no deben tocarse. El código lo escribimos entre dichas líneas

2Visítame en http://neckkito.eu5.org

Page 3: Menu Macros 2010

Finalmente nos creamos un informe, que llamaremos RDatos, basado en la tabla TDatos. A mí me ha quedado una cosa así:

Para el tema de las notas vamos a crearnos una nueva tabla, que llamaremos TNotas. Tendrá la siguiente estructura:

Sobre esta tabla crearemos un formulario, llamado FNotas, al cual aplicaremos las siguientes propiedades:

– Pestaña Formato Estilo de los bordes Diálogo→ →– Pestaña Formato Selectores de registro No→ →– Pestaña Formato Botones de desplazamiento No→ →– Pestaña Formato Título Alta nueva nota→ →– Pestaña Otras Emergente Sí→ →– Pestaña Otras Modal Sí→ →

Yo lo he dejado así:

3Visítame en http://neckkito.eu5.org

Page 4: Menu Macros 2010

Ya tenemos la “infraestructura”. Vamos a por nuestros menús.

CREANDO UN MENÚ PARA FORMULARIOSEl proceso de creación de un menú (y también para un menú contextual) pasa por dos fases:

– Crearnos una macro donde se recojan las acciones que va a contener dicho menú– Crearnos una macro que “cree en tiempo de ejecución” el anterior menú como menú (valga la redundancia).

PRIMERA MACRO

Vamos a confeccionar primero nuestras opciones de menú. Supongamos que las opciones deben ser las siguientes:

– Abrir FMenu, cerrando el formulario FDatos– Añadir un nuevo registro en FDatos– Añadir una nueva nota relacionada con la venta que estamos dando de alta– Exportar las ventas a Excel

Programemos pues estas opciones en nuestra macro.

Creamos una nueva macro en vista diseño. La guardaremos con el nombre de mcrMenuFDatos.

La primera acción era cerrar el formulario FDatos y abrir FMenu. Así pues, agregamos una nueva acción, que será:

• Submacro : Volver a MENU

Y detro de esta submacro añadimos las siguientes acciones:

• CerrarVentana◦ Tipo de objeto: Formulario◦ Nombre de objeto: FDatos◦ Guardar: Sí

• AbrirFormulario◦ Nombre del formulario: FMenu

4Visítame en http://neckkito.eu5.org

Page 5: Menu Macros 2010

Aquí finalizaría nuestra submacro.

Para separar las categorías, dentro de los menús, podemos crear otra submacro, y utilizar un guión como nombre, por ejemplo. Así pues añadimos una línea de guiones como nombre de la submacro.

Sigamos: vamos a programar una nueva submacro para añadir un nuevo registro.

En nombre de submacro escribimos

Añadir venta

Y como acciones seleccionamos las siguientes opciones:

• IrARegistro◦ Tipo de objeto: Formulario◦ Nombre del objeto: FDatos◦ Registro: Nuevo

Y aquí finaliza nuestra submacro

Añadimos nuestra siguiente opción de menú, que ya es un poco más “interesante”, puesto que estará condicionada.

Como nombre de submacro ponemos:

Añadir nota

Y establecemos lo siguiente:

• Si EsNulo([Formularios]![FDatos].[Id].[Valor]) entonces• Acción: CuadroDeMensaje

◦ Mensaje: No hay ninguna venta para dar de alta una nota◦ Bip: Sí◦ Tipo: Aviso: !

5Visítame en http://neckkito.eu5.org

Page 6: Menu Macros 2010

◦ Título: SIN VENTA• Acción: DetenerMacro

Y aquí finaliza nuestro Si.

Por si nos hemos “perdido” debería quedarnos una cosa así:

Ahora hemos programado la macro para realizar una acción si no había una venta dada de alta todavía. Vamos a seguir programándola para el supuesto que sí haya una venta.

• Sí No EsNulo([Formularios]![FDatos].[Id].[Valor]) entonces• Acción: Abrir Formulario

◦ Nombre del formulario: FNotas

Y aquí finaliza nuestro sí

• Acción: Ir a registro▪ Tipo de objeto: Formulario▪ Nombre del objeto: FNotas▪ Registro: Nuevo

• Acción: Establecer valor▪ Elemento: [Formularios]![FNotas].[IdVta]▪ Expresión: =[Formularios]![FDatos].[Id]

• Acción: IrAControl▪ Nombre del control: Nota

Y aquí finaliza nuestra submacro.

A continuación podemos crear otra submacro de guiones para separar el grupo

Es decir, desde el principio:

Ya sólo nos falta programar la última opción de menú: añadamos pues un nuevo nombre de macro, que será:

Exportar a Excel

y las acciones serán las siguientes:

6Visítame en http://neckkito.eu5.org

Page 7: Menu Macros 2010

7Visítame en http://neckkito.eu5.org

Page 8: Menu Macros 2010

Vamos a añadir la última submacro, de nombre

Exportar a Excel

que tendrá las siguientes características:

• Acción: ExportarConFormato▪ Tipo de objeto: Tabla▪ Nombre del objeto: TDatos▪ Formato de resultados: Libro de Excel (*.xlsx)▪ Autoinicio: Sí

Y aquí finaliza nuestra submacro.

En definitiva, nuestra macro de menú debería finalizar así:

8Visítame en http://neckkito.eu5.org

Page 9: Menu Macros 2010

SEGUNDA MACROVamos a programar nuestra segunda macro. Así, creamos una nueva macro y la guardamos con el nombre de

mcrAgregaMenuFDatos

En esta macro sólo tendremos que crear una acción, que será la siguiente:

• Acción: AgregarMenú◦ Nombre del menú: Menú FDatos◦ Nombre de macro del menú: mcrMenuFDatos

Es decir:

APLICAR EL MENÚ A NUESTRO FORMULARIOSólo nos queda aplicar el menú creado a nuestro formulario. Para ello abrimos FDatos en vista diseño, sacamos las propiedades del menú y nos vamos a la pestaña Otras Barra de menús,→ y ahí le escribimos el nombre de nuestra segunda macro: mcrAgregaMenuFDatos

PROBANDO NUESTRO MENÚVamos a situar nuestro formulario FDatos en vista Formulario. Veremos que:

– Aparece un nuevo menú, en la parte superior, que se denomina “Complementos”– Dentro de ese menú encontraremos nuestro menú para el formulario– Si hacemos click sobre nuestro menú se desplegarán las opciones que hemos

programado

9Visítame en http://neckkito.eu5.org

Page 10: Menu Macros 2010

SEGUNDA PARTE DEL EJEMPLO: MENÚ CONTEXTUALVamos a realizar un menú contextual, que será un menú de filtros, para aplicar a nuestro informe RDatos.

Veremos algunas particularidades para realizar determinadas acciones de filtro (que pueden ser extrapolables sin problemas a otras situaciones).

Vámonos...

PRIMERA MACROCreamos una macro en blanco, que llamaremos mcrMenuFiltros. Configuramos las opciones de la siguiente manera:

• Nombre de submacro: Quitar filtros◦ Acción:

▪ EjecutarComandoDeMenú• Comando: QuitarFiltroYOrden

• Finalizar submacro• Nombre de submacro: Igual a...

◦ Acción: EjecutarComandoDeMenú▪ Comando: FiltroPorSelección

• Finalizar submacro• Nombre de macro: Menor o igual a...

◦ Acción:▪ DefinirVariableTemporal

• Nombre: vImporte• Expresión: =[Informes]![RDatos].[ImpVta]

▪ AplicarFiltro• Condición WHERE: [ImpVta]<=[Variables temporales]![vImporte]

▪ QuitarVariableTemporal• Nombre: vImporte

• Finalizar submacro• Nombre de submacro: Mayor o igual a...

◦ Acción:▪ DefinirVariableTemporal

• Nombre vImporte• Expresión=[Informes]![RDatos].[ImpVta]

▪ AplicarFiltro• Condición WHERE: [ImpVta]>=[Variables temporales]![vImporte]

▪ QuitarVariableTemporal• Nombre: vImporte

• Finalizar submacro

Debería habernos quedado así:

10Visítame en http://neckkito.eu5.org

Page 11: Menu Macros 2010

SEGUNDA MACROCreamos una macro en blanco y la guardamos con el nombre

mcrAgregaMenuFiltros

Con las siguientes características:

• Acción: AgregarMenu◦ Nombre del menú: Filtros◦ Nombre de macro de menú: mcrMenuFiltros

11Visítame en http://neckkito.eu5.org

Page 12: Menu Macros 2010

Es decir,

APLICAR EL MENÚ CONTEXTUAL A NUESTRO INFORMEAbrimos RDatos en vista diseño y seleccionamos el campo [ImpVta] (ojo, la etiqueta no; el campo) y sacamos sus propiedades. Nos vamos a la pestaña Otras Barra de menús→ contextuales y le escribimos el nombre de nuestra macro, es decir, mcrAgregaMenuFiltros

PROBANDO NUESTRO MENÚ CONTEXTUALVamos a situar RDatos en vista Informe. Nos situamos sobre cualquier registro, dentro del campo [ImpVta], y hacemos click derecho con el ratón...

UN PASO MÁS. ELIMINAMOS LOS MENÚS DE ACCESSVamos a hacer que no salgan los menús predeterminados de Access.

Importante: desde el momento en que desactivemos las opciones que se explicarán más adelante, pensad que para poder operar “plenamente” con la BD tendremos que abrirla manteniendo la tecla Shift (Mayúsculas) pulsada.

Hacemos click sobre el botón de “Archivo” y a continuación clickamos sobre el boton Opciones.

12Visítame en http://neckkito.eu5.org

Page 13: Menu Macros 2010

Seleccionamos la opción “Base de Datos Actual”, y nos vamos al apartado Opciones de barra de herramientas y de la cinta de opciones, y desmarcamos los checks de “Permitir...”

13Visítame en http://neckkito.eu5.org

Page 14: Menu Macros 2010

Si hubiéramos confeccionado un menú general, o un menú contextual general, podríamos especificarlos en las opciones que podemos ver, de nombre “Barra de menús” y “Barra de menús contextual”.

Si desmarcamos también, en el apartado Exploración la opción “Mostrar panel de exploración” lógicamente tampoco podríamos ver dicho panel.

Aceptamos y nos saldrá un mensaje de advertencia, diciéndonos que debemos cerrar la BD para aplicar los cambios. Si la cerramos y la volvemos a abrir veremos que sólo se nos permite el menú de Inicio. Si abrimos FDatos veremos cómo también nos aparece nuestro menú “Complementos”, con nuestro menú para FDatos.

Además, si hacemos click sobre el botón de Office veremos que se han desactivado prácticamente todas sus opciones.

Y si hacemos click con el botón derecho del ratón sobre cualquier formulario veremos que ya no tenemos menús contextuales (más que los que hubiéramos podido programar nosotros).

FINALIZANDO EL EJEMPLOPara aquellos que no tengan muy claro cómo obtener un informe con las notas que hayamos podido escribir en las ventas os explico a continuación cómo podría hacerse:

1.- Creamos, en vista diseño, una consulta, a la que pondremos de nombre CNotas. Añadimos las tablas TDatos y TNotas.

2.- De TDatos, seleccionamos el campo [Id] y lo “arrastramos” sobre el campo [IdVta] de la tabla TNotas. Se debería haber creado una línea de relación.

3.- En el grid de la consulta situamos los campos que queramos. Por ejemplo, mi consulta ha quedado así:

4.- Creamos un informe sobre nuestra consulta CNotas. Lo guardaremos como RNotas.

14Visítame en http://neckkito.eu5.org

Page 15: Menu Macros 2010

Como ya tenemos nuestro botón en FMenu programado sólo tendremos que hacer click sobre él para ver nuestro informe.

Y eso es todo. Espero que hayáis entendido la mecánica de “cómo funciona esto”, y lo podáis adaptar sin problemas a vuestras BD's.

Un saludo, y...

¡suerte!

15Visítame en http://neckkito.eu5.org