Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUCCIN
A travs de este ejemplo veremos cmo: 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 entendis la sistemtica no hay mayor secreto (quiz el nico problema que nos pueda surgir es saber cmo 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 sistemtica, nos crearemos un men contextual personalizado para trabajar sobre un campo en concreto de un informe. Aprovecharemos la ocasin tambin para ver cmo podemos aadir notas accesorias a un registro en concreto a travs de un formulario, utilizando macros tambin. 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:
Vistame en http://neckkito.eu5.org
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 servirn para abrir FDatos, RDatos y RNotas. Insertamos pues un primer botn de comando, sacamos sus propiedades y nos vamos a la pestaa Otras Nombre, y ah le escribimos cmdAbreFDatos. Ahora nos vamos a la pestaa Eventos Al hacer click, y le generamos el siguiente cdigo2: Private Sub cmdAbreFDatos_Click() DoCmd.Close acForm, Me.Name DoCmd.OpenForm "FDatos" End Sub Ahora podemos aadir un segundo botn de comando, al que pondremos de nombre cmdAbreRDatos (Propiedades Pestaa Otras Nombre) y en el evento Al hacer click (Propiedades Pestaa Eventos) le generamos este otro cdigo: Private Sub cmdAbreRDatos_Click() DoCmd.OpenReport "RDatos", acViewReport End Sub
Ojo! Es importante que el informe se abra en Vista Informe (acViewReport) para poder
operar con los datos del informe. Al ltimo botn le llamamos cdmAbreRNotas y su cdigo ser: Private Sub cmdAbreRNotas_Click() DoCmd.OpenReport "RNotas", acViewPreview End Sub Creamos un formulario basado en TDatos, que llamaremos FDatos. Nos debera quedar una cosa as:
Para generar cdigo nos ponemos en la parte en blanco junto al evento que queramos, y veremos cmo nos aparece un pequeo botn de puntos suspensivos. Si hacemos click sobre l nos aparecer una ventana. Le decimos que queremos generar cdigo. Se nos abrir el editor de VB, con dos lneas por defecto (Private Sub... y End Sub). Esas dos lneas no deben tocarse. El cdigo lo escribimos entre dichas lneas
Vistame en http://neckkito.eu5.org
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: Pestaa Pestaa Pestaa Pestaa Pestaa Pestaa Formato Estilo de los bordes Dilogo Formato Selectores de registro No Formato Botones de desplazamiento No Formato Ttulo Alta nueva nota Otras Emergente S Otras Modal S
Yo lo he dejado as:
Vistame en http://neckkito.eu5.org
PRIMERA MACRO
Vamos a confeccionar primero nuestras opciones de men. Supongamos que las opciones deben ser las siguientes: Abrir FMenu, cerrando el formulario FDatos Aadir un nuevo registro en FDatos Aadir 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 diseo. La guardaremos con el nombre de mcrMenuFDatos. La primera accin era cerrar el formulario FDatos y abrir FMenu. As pues, agregamos una nueva accin, que ser: Submacro : Volver a MENU
Y detro de esta submacro aadimos las siguientes acciones: CerrarVentana Tipo de objeto: Formulario Nombre de objeto: FDatos Guardar: S AbrirFormulario Nombre del formulario: FMenu 4
Vistame en http://neckkito.eu5.org
Aqu finalizara nuestra submacro. Para separar las categoras, dentro de los mens, podemos crear otra submacro, y utilizar un guin como nombre, por ejemplo. As pues aadimos una lnea de guiones como nombre de la submacro.
Sigamos: vamos a programar una nueva submacro para aadir un nuevo registro. En nombre de submacro escribimos Aadir venta Y como acciones seleccionamos las siguientes opciones: IrARegistro Tipo de objeto: Formulario Nombre del objeto: FDatos Registro: Nuevo
Y aqu finaliza nuestra submacro Aadimos nuestra siguiente opcin de men, que ya es un poco ms interesante, puesto que estar condicionada. Como nombre de submacro ponemos: Aadir nota Y establecemos lo siguiente: Si EsNulo([Formularios]![FDatos].[Id].[Valor]) entonces Accin: CuadroDeMensaje Mensaje: No hay ninguna venta para dar de alta una nota Bip: S Tipo: Aviso: ! 5
Vistame en http://neckkito.eu5.org
Ttulo: SIN VENTA Accin: DetenerMacro Y aqu finaliza nuestro Si. Por si nos hemos perdido debera quedarnos una cosa as:
Ahora hemos programado la macro para realizar una accin si no haba una venta dada de alta todava. Vamos a seguir programndola para el supuesto que s haya una venta. S No EsNulo([Formularios]![FDatos].[Id].[Valor]) entonces Accin: Abrir Formulario Nombre del formulario: FNotas
Y aqu finaliza nuestro s Accin: Ir a registro Tipo de objeto: Formulario Nombre del objeto: FNotas Registro: Nuevo Accin: Establecer valor Elemento: [Formularios]![FNotas].[IdVta] Expresin: =[Formularios]![FDatos].[Id] Accin: IrAControl Nombre del control: Nota
Y aqu finaliza nuestra submacro. A continuacin podemos crear otra submacro de guiones para separar el grupo Es decir, desde el principio:
Ya slo nos falta programar la ltima opcin de men: aadamos pues un nuevo nombre de macro, que ser: Exportar a Excel y las acciones sern las siguientes:
Vistame en http://neckkito.eu5.org
Vistame en http://neckkito.eu5.org
Vamos a aadir la ltima submacro, de nombre Exportar a Excel que tendr las siguientes caractersticas: Accin: 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 debera finalizar as:
Vistame en http://neckkito.eu5.org
SEGUNDA MACRO
Vamos a programar nuestra segunda macro. As, creamos una nueva macro y la guardamos con el nombre de mcrAgregaMenuFDatos En esta macro slo tendremos que crear una accin, que ser la siguiente: Accin: AgregarMen Nombre del men: Men FDatos Nombre de macro del men: mcrMenuFDatos
Es decir:
Vistame en http://neckkito.eu5.org
PRIMERA MACRO
Creamos una macro en blanco, que llamaremos mcrMenuFiltros. Configuramos las opciones de la siguiente manera: Nombre de submacro: Quitar filtros Accin: EjecutarComandoDeMen Comando: QuitarFiltroYOrden Finalizar submacro Nombre de submacro: Igual a... Accin: EjecutarComandoDeMen Comando: FiltroPorSeleccin Finalizar submacro Nombre de macro: Menor o igual a... Accin: DefinirVariableTemporal Nombre: vImporte Expresin: =[Informes]![RDatos].[ImpVta] AplicarFiltro Condicin WHERE: [ImpVta]<=[Variables temporales]![vImporte] QuitarVariableTemporal Nombre: vImporte Finalizar submacro Nombre de submacro: Mayor o igual a... Accin: DefinirVariableTemporal Nombre vImporte Expresin=[Informes]![RDatos].[ImpVta] AplicarFiltro Condicin WHERE: [ImpVta]>=[Variables temporales]![vImporte] QuitarVariableTemporal Nombre: vImporte Finalizar submacro
Vistame en http://neckkito.eu5.org
10
SEGUNDA MACRO
Creamos una macro en blanco y la guardamos con el nombre mcrAgregaMenuFiltros Con las siguientes caractersticas: Accin: AgregarMenu Nombre del men: Filtros Nombre de macro de men: mcrMenuFiltros 11
Vistame en http://neckkito.eu5.org
Es decir,
Vistame en http://neckkito.eu5.org
12
Seleccionamos la opcin 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...
Vistame en http://neckkito.eu5.org
13
FINALIZANDO EL EJEMPLO
Para aquellos que no tengan muy claro cmo obtener un informe con las notas que hayamos podido escribir en las ventas os explico a continuacin cmo podra hacerse: 1.- Creamos, en vista diseo, una consulta, a la que pondremos de nombre CNotas. Aadimos las tablas TDatos y TNotas. 2.- De TDatos, seleccionamos el campo [Id] y lo arrastramos sobre el campo [IdVta] de la tabla TNotas. Se debera haber creado una lnea de relacin.
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. 14
Vistame en http://neckkito.eu5.org
Como ya tenemos nuestro botn en FMenu programado slo tendremos que hacer click sobre l para ver nuestro informe.
Y eso es todo. Espero que hayis entendido la mecnica de cmo funciona esto, y lo podis adaptar sin problemas a vuestras BD's. Un saludo, y... suerte!
Vistame en http://neckkito.eu5.org
15