Formularios e informes: interfaces de usuario
Introducción
Es posible personalizar los formularios e informes con el lenguaje VBA. Por ejemplo, es posible:
-
modificar la apariencia de un control en un informe o un formulario (tamaño, posición, color, etc.),
-
añadir o eliminar controles en un informe o un formulario,
-
ver sobre la marcha formularios, haciendo clic en botones,
-
imprimir un informe,
-
etc.
El objeto Form
El objeto Form pertenece a la colección Forms y se corresponde con un formulario Forms que da la lista del resto de los formularios abiertos. El objeto Activeform apunta al formulario activo.
1. Sintaxis
Para referirse a un formulario, hay varias sintaxis posibles, directamente relacionadas con el recorrido de los elementos de la colección Forms.
Forms!NombreFormulario
'Ejemplo Forms!Empleados
Forms![NombreFormulario]
'Ejemplo: Forms![Empleados]
Forms("NombreFormulario")
'Ejemplo: Forms("Empleados")
Forms(Index)
'Ejemplo: Forms(2)
La sintaxis más frecuente es Forms![NombreFormulario], permitiendo el uso de un nombre de formulario con un espacio, lo que la primera sintaxis no permite hacer.
Para referirse a un subformulario a partir del formulario padre, es necesario pasar por el nombre del objeto que contiene el subformulario, seguido de la palabra clave Form.
[SubFormulario].Form!ZonaDeTexto
'Ejemplo: [Empleados Detalle].Form.Txt_Nombre
2. Equivalencia modo Creación/VBA
a. Pestaña Formato
En la pestaña Formato del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos.
La siguiente tabla lista las propiedades en la interfaz, su equivalente en VBA, así como el tipo de dato de la propiedad.
Etiqueta IHM |
Propiedad VBA |
Tipo de dato |
Título |
Caption |
String |
Vista predeterminada |
DefaultView |
Byte |
Permitir vista Formulario |
AllowFormView |
Boolean |
Permitir vista Hoja de datos |
AllowDatasheetView |
Boolean |
Permitir vista Presentación |
AllowLayoutView |
Boolean |
Tipo de imagen |
PictureType |
Byte |
Imagen |
Picture |
String |
Mosaico de imágenes |
PictureTiling |
Boolean |
Distribución de la imagen |
PictureAlignment |
Byte |
Modo de tamaño de la imagen |
PictureSizeMode |
Byte |
Ancho |
Width |
Integer |
Centrado automático |
AutoCenter |
Boolean |
Ajuste de tamaño automático |
AutoResize |
Boolean |
Ajustar a la pantalla |
FitToScreen |
Boolean |
Estilo de los bordes |
BorderStyle |
Byte |
Selectores de registro |
RecordSelector |
Boolean |
Botones de desplazamiento |
NavigationButtons |
Boolean |
Título de exploración |
NavigationCaption |
Boolean |
Separadores de registros |
DividingLines |
Boolean |
Barras de desplazamiento |
ScrollBars |
Byte |
Cuadro de control |
ControlBox |
Boolean |
Botón Cerrar |
CloseButton |
Boolean |
Botones Minimizar Maximizar |
MinMaxButtons |
Byte |
Movible |
Moveable |
Boolean |
Tamaño del formulario dividido |
SplitFormSize |
Long |
Orientación del formulario dividido |
SplitFormOrientation |
Byte |
Barra divisora del formulario dividido |
SplitFormSplitterBar |
Boolean |
Hoja de datos del formulario dividido |
SplitFormDatasheet |
Byte |
Impresión del formulario dividido |
SplitFormPrinting |
Byte |
Guardar la posición de la barra divisora |
SplitFormSplitterBarSave |
Boolean |
Hoja secundaria de datos expandida |
SubDatasheetExpanded |
Boolean |
Alto de hoja secundaria de datos |
SubDatasheetHeight |
Integer |
Línea X |
GridX |
Integer |
Línea Y |
GridY |
Integer |
Diseño a imprimir |
LayoutForPrint |
Boolean |
Orientación |
Orientation |
Byte |
Origen de la paleta |
PaletteSource |
String |
b. Pestaña Datos
En la pestaña Datos del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos:
Etiqueta IHM |
Propiedad VBA |
Tipo de dato |
Origen... |
El objeto Report
El objeto Report, que pertenece a la colección Reports, corresponde a un informe, Reports, que da la lista de todos los informes abiertos. El objeto ActiveReport apunta al informe activo.
1. Sintaxis
Para referirse a un informe, hay varias sintaxis posibles, directamente relacionadas con el recorrido de elementos de la colección Reports.
Reports!NombreInforme
'Ejemplo Reports!Contratos
Reports![NombreInforme]
'Ejemplo: Reports![Contratos]
Reports("NombreInforme")
'Ejemplo: Reports("Contratos")
Reports(Index)
'Ejemplo: Reports(1)
Como para los formularios, la sintaxis más frecuente es Reports![Nombre Informe], permitiendo el uso de un nombre de informe que tiene un espacio, cosa que no es posible con la primera sintaxis.
2. Equivalencia modo Creación/VBA
a. Pestaña Formato
En la pestaña Formato del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos:
La tabla siguiente lista las propiedades en la interfaz, su equivalente en VBA, así como el tipo de dato de la propiedad.
Etiqueta IHM |
Propiedad VBA |
Tipo de dato |
Título |
Caption |
String |
Vista predeterminada |
DefaultView |
Byte |
Permitir vista Informes |
AllowReportView |
Boolean |
Permitir vista Presentación |
AllowLayoutView |
Boolean |
Tipo de imagen |
PictureType |
Byte |
Imagen |
Picture |
String |
Mosaico de imágenes |
PictureTiling |
Boolean |
Distribución de la imagen |
PictureAlignment |
Byte |
Modo de tamaño de la imagen |
PictureSizeMode |
Byte |
Ancho |
Width |
Integer |
Centrado automático |
AutoCenter |
Boolean |
Ajuste de tamaño automático |
AutoResize |
Boolean |
Ajustar a la página |
FitToPage |
Boolean |
Estilo de los bordes |
BorderStyle |
Byte |
Barras de desplazamiento |
ScrollBars |
Long |
Cuadro de control |
ControlBox |
Boolean |
Botón Cerrar |
CloseButton |
Boolean |
Botones Minimizar Maximizar |
MinMaxButtons |
Byte |
Movible |
Moveable |
Boolean |
Mostrar márgenes de página |
ShowPageMargins |
Boolean |
Línea X |
GridX |
Integer |
Línea Y |
GridY |
Integer |
Diseño a imprimir |
LayoutForPrint |
Boolean |
Mantener junto el grupo |
GrpKeepTogether |
Byte |
Páginas de la imagen |
PicturePages |
Byte |
Encabezado de página |
PageHeader |
Byte |
Pie de página |
PageFooter |
Byte |
Orientación |
Orientation |
Byte |
Origen de la paleta |
PaletteSource |
String |
b. Pestaña Datos
En la pestaña Datos del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos:
Etiqueta IHM |
Propiedad VBA |
Tipo de dato |
Origen del registro |
RecordSource |
String |
Filtro |
Filter |
String |
Filtrar al cargar |
FilterOnLoad |
Boolean |
Ordenar por |
OrderBy |
String |
Ordenar por al cargar |
OrderByOnLoad |
Boolean |
Permitir filtros |
AllowFilters |
Boolean |
c. Pestaña Evento
En la pestaña Evento del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos:
Los diferentes eventos se han tratado en el capítulo anterior.
d. Pestaña Otras
En la pestaña Otras del panel de navegación Hoja de propiedades, pueden aparecer los siguientes elementos:
Etiqueta IHM |
Propiedad VBA |
Tipo de dato |
Emergente |
Popup |
Boolean |
Modal |
Modal |
Boolean |
Agrupación de fechas |
DateGrouping |
Byte |
Ciclo |
Cycle |
Byte |
Bloqueos del registro |
RecordLocks |
Boolean |
Nombre de banda de opciones |
RibbonName |
String... |
El objeto Control
El objeto Control, que pertenece a la colección Controls, corresponde a un control, Controls, que da la lista de todos los controles de un formulario, subformulario, informe o subinforme. El objeto ActiveControl apunta al control activo.
1. Sintaxis
Para hacer referencia a un control, hay varias sintaxis posibles, directamente relacionadas con el recorrido de los elementos de la colección Controls.
FormularioOInforme!NombreControl
'Ejemplo Me!Txt_Nombre
FormularioOInforme![NombreControl]
'Ejemplo: F_Empleado![Txt_Nombre]
FormularioOInforme("NombreControl")
'Ejemplo: Me("Txt_Nombre")
FormularioOInforme.NombreControl
'Ejemplo: Me.Txt_Nombre
Podemos también pasar por la colección Controls con las sintaxis siguientes:
FormularioOInforme.Controls!NombreControl
'Ejemplo Me.Controls!Txt_Nombre
FormularioOInforme.Controls![NombreControl]
'Ejemplo: F_Empleado.Controls![Txt_Nombre]
FormularioOInforme.Controls("NombreControl")
'Ejemplo: Me.Controls("Txt_Nombre")
FormularioOInforme.Controls(Indice)
'Ejemplo: Me.Controls(3)
2. Propiedades genéricas comunes de la mayoría de los controles
Cada control tiene propiedades, métodos y eventos que le son propios. Las propiedades que se listan en este capítulo son propiedades genéricas de la mayoría de los controles.
a. Propiedades relacionadas con las dimensiones
Propiedad |
Descripción |
Height |
Representa la altura del control. |
Left |
Representa la ubicación del control... |
Los controles de Access
Los controles de Access son los elementos que permiten enriquecer una aplicación y vienen a completar las interfaces que el desarrollador pone a disposición del usuario final. Como cualquier aplicación profesional, debe ser intuitiva, y la gran variedad de controles directamente disponibles en el motor de Access, así como la posibilidad de llamar a controles adicionales (llamados controles ActiveX) hace que la realización de formularios e informes sea muy exitosa.
El objetivo de esta sección es permitir al lector tener un inventario de los controles directamente disponibles, asociados a su tipo VBA correspondiente.
Para añadir nuevos controles a un formulario o a un informe, puede abrir el formulario o el informe en modo Creación. Una vez que se activa este modo, aparece en la cinta de opciones una pestaña Diseño de formularios en la que podemos ver el grupo Controles, que se muestra a continuación:
A continuación se muestra la lista de los controles mostrados en el orden de lectura (de izquierda a derecha, de arriba hacia abajo):
Etiqueta del control |
Objeto VBA equivalente |
Zona de texto |
TextBox |
Etiqueta |
Label |
Botón de comando |
CommandButton |
Control de pestaña |
TabControl |
Enlace |
Hyperlink |
Control de navegación |
NavigationControl |
Grupo de opciones |
OptionGroup |
Insertar un salto de página |
PageBreak |
Zona de lista desplegable |
ComboBox |
Curva |
Line |
Botón... |