Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

El contenido aquí puede aplicarse a Northwind 2.0 Developer Edition y Starter Edition. 

VBA (Visual Basic para Aplicaciones) es el lenguaje de programación usado en todos los productos de Office. Aprendizaje de VBA le permite trabajar con todos los productos de Office (no solo con Access).
Al buscar "procedimientos", asegúrese de buscar ejemplos específicos de Access e incluir Microsoft Access en la búsqueda. A menudo, las soluciones para los demás productos de Office funcionarán, pero no hay ninguna garantía. Microsoft Access es un producto para adultos; eso significa que hay muchos ejemplos por ahí; que es genial para ti. 

También significa que los libros más antiguos sobre programación de Access aún son viables para que lo mire. Muchos de los libros más antiguos todavía están disponibles en sitios de libros usados a una fracción de su costo original. Consulte el sitio web de Microsoft para determinar qué versiones de Access siguen recibiendo soporte técnico y seguir con ellas.

Recursos de finalización del soporte para Office: Implementar Office | Microsoft Learn  

A continuación se muestran algunos vínculos a la documentación de Access en Microsoft.

Los archivos de Microsoft Access son archivos de Office. Los archivos de Office deben estar en una "Ubicación de confianza" o tener su "contenido habilitado". Estos elementos se consideran "seguros" porque los creó o provienen de una fuente de confianza. La búsqueda de ubicaciones de confianza se produce cada vez que abre cualquier archivo de Office. A partir de aquí, nos referiremos a este como De confianza/Habilitado. NOTA: Si se publica una nueva versión de la aplicación y se abre desde una ubicación que no es de confianza, se repetirá el proceso de habilitar el contenido.

Obtenga más información sobre las ubicaciones de confianza: 

Las macros, las funciones y los subs son la forma de implementar la lógica de negocios en la base de datos de Access. Es importante que comprenda el ámbito y la visibilidad antes de empezar.


Los eventos (como hacer clic en un control) de controles de un formulario (por ejemplo, botones, cuadros de texto, etiquetas, etc.) desencadenan otros procesos, como agregar, eliminar registros o abrir formularios. Estos procesos se pueden implementar con macros o VBA. Northwind Starter Edition usa principalmente macros y algunas VBA donde las macros no pueden realizar las funciones necesarias. Northwind Developer Edition usa principalmente VBA. 

Algunos tipos de control tienen asistentes integrados para crear automáticamente una macro. Por ejemplo, agregar un botón de comando a un formulario abre un asistente que ofrece varias opciones de funcionalidad para el botón. Agregar un cuadro combinado abre un asistente que se puede configurar para buscar un registro determinado en el formulario. 

El panel de navegación es la forma principal de ver y obtener acceso a todos los objetos de base de datos y se muestra en el lado izquierdo de la ventana de Access de forma predeterminada. 
El panel de navegación de Northwind se ha personalizado. Hemos creado una categoría personalizada denominada Northwind Starter 2.0. Esto nos permite organizar los objetos por área funcional.

A veces es necesario que una variable exista después del objeto que lo creó va fuera del ámbito. Consulte Ámbito y visibilidad arriba. Hay tres formas principales de hacerlo: Variables públicas, TempVars y Almacenamiento de los valores en una tabla local. Muchos desarrolladores usan una mezcla de estos. Cada uno tiene sus ventajas y desventajas.  Más información sobre cada uno de ellos aquí: 

Variable pública del módulo VBA: 

TempVars: 

Almacenamiento de los valores en una tabla local

  • Existen variables públicas y TempVars para la sesión actual y salen del ámbito cuando se cierra la aplicación. ¿Qué sucede si desea mantener variables específicas del usuario entre sesiones? Puede almacenar estos tipos de valores en una tabla local. En Northwind 2.0 se guarda una variable en una tabla llamada SystemSettings. El valor de la tabla es ShowWelcome. Este valor indica a Access si desea ver la pantalla de inicio de sesión cada vez que inicie sesión o no.

Las macros creadas con asistentes para controles en Access rara vez incluyen control de errores; VBA creado, con asistentes de control puede limitarse a un MsgBox Err.Description genérico.

En Northwind 2.0 le mostramos cómo hacerlo mejor, al menos para el código VBA. Hemos implementado lo que se denomina controlador de errores global. Los errores que se producen en cualquier procedimiento llaman a una función en el nivel global para mostrar el error. La gran ventaja es que el control de errores es coherente. Y si el mensaje necesita cambiar (por ejemplo, para mostrar adicionalmente el número de error o registrar el error en un archivo), debe hacerse en un solo lugar. 

clsErrorHandler es el módulo de clase que implementa el código de control de errores. Un módulo de clase mantiene todas sus funciones principales y auxiliares juntas en una unidad, encapsulando así el código.

AutoExec macro llama a la función Inicio en modStartup. Crea una instancia de clsErrorHandler y la guarda como una variable global para que se pueda usar en toda la aplicación.

De hecho, el código de control de errores en los procedimientos es tan coherente que pudimos crearlo todo en menos de cinco minutos usando código VBA específico que aplicó cada procedimiento con el controlador de errores adecuado. (Código no incluido en la plantilla). 

MRU o Usados recientemente es una lista de pedidos y pedidos de compra usados recientemente. Es posible que desee volver a estos con frecuencia para ponerlos en el siguiente Estado. Las listas de MRU a menudo se ven en los productos de Office como una lista de archivos usados recientemente que puede que quiera volver a abrir.

en la edición Northwind Dev, para implementar la característica MRU (que no existe en la edición Starter), primero debe establecer los elementos siguientes: 

  1. Una tabla para almacenar información de MRU.

  2. Código para actualizar la tabla cuando se abre un pedido o pedido de compra (PO).

  3. Código para actualizar la lista desplegable de MRU en la cinta de opciones.

  4. Código para cargar el elemento cuando se selecciona un elemento MRU de la cinta de opciones.

Echemos un vistazo a cada una de ellas con más detalle. 


1. Tabla para almacenar información de MRU.

El diseño de la tabla MRU vale la pena revisar, especialmente sus índices. Tenga en cuenta que hay un índice duplicado SortIdx para ayudar a ordenar rápidamente los elementos MRU en la lista desplegable de la cinta de opciones, así como un índice único para exigir la regla de negocio que para cada usuario un elemento solo puede ocurrir una vez. Por ejemplo, abrir el mismo orden dos veces no crea dos registros en la tabla MRU.


La tabla aprovecha el hecho de que todos los campos de PK (clave principal) relacionados con MRU de la base de datos son Autonumeración, por lo que el tipo de datos Entero largo se puede usar para PKValue.

2. Código para actualizar la tabla cuando se abre un pedido o un pedido.

En NW2, decidimos agregar a la lista de MRU solo cuando se creó un registro nuevo, no cuando uno existente se actualizó de nuevo. Ciertamente, podríamos mover la llamada de AddToMRU de Form_AfterInsert a Form_AfterUpdate para apoyarlo.

Los procedimientos AddToMRU y DeleteFromMRU se implementan en modGlobal, que es un módulo estándar cuyos procedimientos públicos son visibles desde cualquier forma.

AddToMRU (como el nombre sugiere) agrega el nuevo elemento a la tabla MRU y, después, lo recorta de nuevo, eliminando el registro más antiguo, si ha crecido más allá del tamaño máximo (MAX_MRU_COUNT). El último paso es probablemente el menos conocido para los desarrolladores de Access: la lista desplegable de la cinta de opciones tiene que actualizarse y esto se consigue llamando a InvalidateControl. Esto es una señal para la cinta de opciones para volver a ejecutar su proceso de inicialización. 

3. Código para actualizar la lista desplegable MRU en la cinta de opciones. 

En el momento de inicio y después de llamar a InvalidateControl , se ejecuta un conjunto complejo de funciones para rellenar la cinta de opciones.  Estos procedimientos son llamados por el XML de la cinta de opciones en la tabla uSysRibbons que dice en parte:

<group id="gCurrentStatus" label="MRU">
    <box id="bxMRU" boxStyle="vertical">
        <dropDown id="ddMRU"
                  getItemCount="ddMRU_GetItemCount"
                  getItemLabel="ddMRU_GetItemLabel"
                  getSelectedItemIndex="ddMRU_GetSelectedItemIndex"
                  getItemID="ddMRU_GetItemID"
                  onAction="ddMRU_OnAction"
                  screentip="Most Recently Used Objects">
        </dropDown>
    </box>
</group>

Estas cuatro funciones de devolución de llamada rellenan la lista desplegable. Tenga en cuenta que esta es muy la misma idea que se describe aquí para los cuadros combinados estándar.

Si descommenta las líneas Debug.Print en modRibbonCallback y reinicia la aplicación, la Ventana inmediata presentará una secuencia como esta: 

ddMRU_GetItemCount    ddMRU    6 
ddMRU_GetItemLabel    ddMRU    0      Order 60, Proseware, Inc.
ddMRU_GetItemID       ddMRU    0       2 
ddMRU_GetItemLabel    ddMRU    1      Order 62, Best For You Organics Company
ddMRU_GetItemID       ddMRU    1       4 
ddMRU_GetItemLabel    ddMRU    2      Order 63, Wide World Importers
ddMRU_GetItemID       ddMRU    2       5 
ddMRU_GetItemLabel    ddMRU    3      Order 66, Proseware, Inc.
ddMRU_GetItemID       ddMRU    3       8 
ddMRU_GetItemLabel    ddMRU    4      Order 67, Best For You Organics Company
ddMRU_GetItemID       ddMRU    4       9 
ddMRU_GetItemLabel    ddMRU    5      Order 68, Adatum Corporation
ddMRU_GetItemID       ddMRU    5       10 
ddMRU_GetSelectedItemIndex  ddMRU    0


Aquí podemos ver que Access llama primero a un procedimiento que devuelve el número de elementos que se cargan en el argumento ByRef de ddMRU_GetItemCount. Este es también el momento en que se abre la consulta en la tabla MRU y se almacena en caché porque está a punto de usarse varias veces. 

A continuación, la cinta llama repetidamente a dos procedimientos para obtener los valores Id. y Etiqueta de la lista desplegable de dos columnas. 

Por último, llama a un procedimiento para desover el elemento que se debe seleccionar. (En nuestro caso, es el primero). 

4. Código para cargar un elemento cuando se selecciona el elemento MRU de la cinta de opciones.

Al igual que con cualquier otro elemento de la cinta de opciones, la propiedad OnAction en el XML de la cinta de opciones especifica una función de devolución de llamada que se usará para realizar la acción:

onAction="ddMRU_OnAction

Este procedimiento se implementa en modRibbonCallback. Vuelve a usar el conjunto de registros ya abierto para buscar el registro con el elemento seleccionado y, a continuación, según tableName obligatorio, abre el formulario correspondiente, pasando el valor de PK que se va a cargar.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?

¡Gracias por sus comentarios!

×