De forma predeterminada, puede imprimir informes que no contengan registros. Para solucionar este problema, puede usar una macro o código de Microsoft Visual Basic para Aplicaciones (VBA) para detectar la ausencia de registros en un informe y, a continuación, cancelar la operación de impresión. En los pasos de este artículo se explica cómo usar ambas técnicas.
¿Qué desea hacer?
Es probable que quiera cancelar la impresión de un informe cuando no contenga ningún registro. Por ejemplo, si está empezando a vender un nuevo producto, es probable que haya un período de tiempo en el que todavía no haya registrado ninguna venta. Por lo tanto, debe considerar la posibilidad de que algunos de sus informes no contengan registros detallados y que las funciones de agregado, como la función Contar , no tengan nada que contar. Para controlar esta ocurrencia correctamente, puede crear una macro que cancele el trabajo de impresión. También puede agregar algunas líneas de código VBA cuidadosamente colocado para hacer lo mismo. VBA es el lenguaje de programación que usa Access.
Agregue la macro o el código vba al procedimiento de evento On No DaTa del informe. Access desencadena el evento On No Data siempre que se ejecuta un informe que no tiene registros. La macro y el código de VBA descritos en este artículo muestran un mensaje adecuado y cancelan la impresión del informe cuando ese informe no contiene datos. Al agregar una macro o código de VBA al procedimiento de evento Al no tener datos , la macro o el código de VBA se ejecutan siempre que se abre un informe que no contiene registros. Al hacer clic en Aceptar para cerrar cualquiera de los mensajes de alerta, la macro también cierra el informe en blanco. Al agregar la macro o el código de VBA al informe, no se abrirá un informe en blanco cuando intente mostrarlo en las vistas Informe o Presentación, pero puede abrirlo en la vista Diseño.
Usar una macro para cancelar la impresión
La macro descrita en esta sección muestra un mensaje de alerta cuando intenta imprimir un informe en blanco. Al hacer clic en Aceptar para cerrar el cuadro de mensaje, la macro cancela automáticamente la operación de impresión. Si no incluye un mensaje de alerta, aparecerá como si no sucediese nada al intentar imprimir el informe, algo que probablemente confundirá a los usuarios del informe.
Crear la macro
-
En el panel de navegación, haga clic con el botón secundario en el informe que desea cambiar y haga clic en Vista Diseño.
-
En la pestaña Diseño, en el grupo Mostrar u ocultar, haga clic en Hoja de propiedades.
O bien:
Haga doble clic en el cuadro situado en la esquina superior izquierda o derecha del informe, según la configuración regional y de idioma.
-
Haga clic en la pestaña Evento y, en el cuadro de la propiedad Sin datos , haga clic en .
Aparecerá el cuadro de diálogo Elegir generador .
-
Haga clic en Generador de macros y, a continuación, haga clic en Aceptar.
Se inicia el diseñador de macros y se muestra una macro en blanco.
-
En la lista desplegable de acciones de macro en la ventana de diseño de macros, seleccione Cuadro de mensajes en la lista.
-
en el cuadro Mensaje , escriba el texto del mensaje de alerta.
Por ejemplo, puede escribir lo siguiente: No hay ningún registro para informar.
-
Opcionalmente, cambie el valor del argumento en el cuadro Pitido de Sí a No y, en la lista Tipo , seleccione el tipo de icono que desea que aparezca en el mensaje de alerta.
-
En el cuadro Título , escriba el título del mensaje de alerta.
Por ejemplo, puede escribir Sin registros.
-
Seleccione la lista desplegable de acciones de macro debajo de la acción Cuadro de mensajes y, a continuación, seleccione CancelarEvento.
-
En la pestaña Diseño , en el grupo Cerrar , haga clic en Guardar.
-
En la pestaña Diseño , en el grupo Cerrar , haga clic en Cerrar. Si aparece un mensaje de alerta y le pregunta si desea guardar los cambios realizados en la macro y en la propiedad del informe, haga clic en Sí, cierre el informe, guarde los cambios si se le solicitan y continúe con los pasos siguientes para probarlo.
Probar la macro
-
En el panel de navegación, haga clic con el botón secundario en el informe que contiene la macro y haga clic en Imprimir. Según las opciones que haya elegido, Access muestra un mensaje de alerta.
Al hacer clic en Aceptar para cerrar el mensaje, la acción CancelarEvento detiene la operación de impresión. Dado que no ha especificado ningún otro evento (como abrir el informe para verlo), el informe se cierra.
Usar código de VBA para cancelar la impresión
El código VBA descrito aquí funciona de forma muy similar a la macro descrita en la sección anterior: muestra un mensaje de alerta al abrir un informe en blanco y, a continuación, cancela la operación de impresión al cerrar el mensaje de alerta.
Agregar código VBA
-
En el panel de navegación, haga clic con el botón secundario en el informe que desea cambiar y haga clic en Vista Diseño.
Nota: Para completar este procedimiento, use un informe que no contenga registros.
-
En la pestaña Diseño, en el grupo Mostrar u ocultar, haga clic en Hoja de propiedades.
O bien:
Haga doble clic en el cuadro situado en la esquina superior izquierda o derecha del informe, según la configuración regional y de idioma.
-
Haga clic en la pestaña Evento y, en el cuadro de la propiedad Sin datos , haga clic en .
Aparecerá el cuadro de diálogo Elegir generador .
-
Haga clic en Generador de código y, a continuación, haga clic en Aceptar.
Se inicia el Editor de Visual Basic y se muestra un procedimiento de evento en blanco.
-
Escriba el código siguiente en el Editor de Visual Basic para que el procedimiento de Report_NoData aparezca exactamente igual que este cuando haya terminado:
Private Sub Report_NoData (Cancel As Integer)
MsgBox "There are no records to report", vbExclamation, "No Records"
Cancel = True
End Sub -
Cuando haya terminado, haga clic en Archivo y, a continuación, haga clic en Guardar.
-
Haga clic en Archivo y, a continuación, haga clic en Cerrar y volver a Microsoft Access.
-
Cierre el informe abierto y, a continuación, haga clic en Sí para confirmar la acción de guardar.
-
En el panel de navegación, haga clic con el botón secundario en el informe que acaba de cambiar y haga clic en Imprimir. Según las opciones que haya elegido, Access muestra un mensaje de alerta.
El procedimiento Report_NoData usa la función CuadroMsj para mostrar el mensaje No hay registros para informar y un botón Aceptar . Al hacer clic en Aceptar, la línea "Cancel=True" del procedimiento indica a Access que cancele el informe. Cancelar es un argumento que se pasa automáticamente al procedimiento de evento y access siempre lo comprueba cuando se completa el procedimiento de evento.