Por predefinição, pode imprimir relatórios que não contenham registos. Para resolver este problema, pode utilizar uma macro ou um código VBA (Microsoft Visual Basic for Applications) para detetar a ausência de registos num relatório e, em seguida, cancelar a operação de impressão. Os passos neste artigo explicam como utilizar ambas as técnicas.
O que pretende fazer?
É provável que queira cancelar a impressão de um relatório quando este não contém registos. Por exemplo, se estiver a começar a vender um novo produto, é provável que haja um período de tempo em que ainda não registou quaisquer vendas. Por conseguinte, deve considerar a possibilidade de alguns dos seus relatórios não conterem registos detalhados e que as funções de agregação, como a função Contar , não tenham nada para contar. Para lidar com esta ocorrência corretamente, pode criar uma macro que cancele a tarefa de impressão. Também pode adicionar algumas linhas de código VBA cuidadosamente colocado para fazer a mesma coisa. O VBA é a linguagem de programação que Access utiliza.
Pode adicionar a macro ou o código VBA ao procedimento de evento No Data do relatório. Access aciona o evento Sem Dados sempre que executar um relatório sem registos. A macro e o código VBA descritos neste artigo apresentam uma mensagem adequada e cancelam a impressão do relatório quando esse relatório não contém dados. Quando adiciona uma macro ou código VBA ao procedimento de evento Sem Dados , a macro ou o código VBA são executados sempre que abrir um relatório que não contenha registos. Quando clica em OK para fechar uma das mensagens de alerta, a macro também fecha o relatório em branco. Quando adiciona a macro ou o código VBA ao relatório, não é aberto um relatório em branco quando tenta apresentá-lo na vista relatório ou na vista Esquema, mas pode abrir o relatório na vista Estrutura.
Utilizar uma macro para cancelar a impressão
A macro descrita nesta secção apresenta uma mensagem de alerta quando tenta imprimir um relatório em branco. Quando clica em OK para fechar a caixa de mensagem, a macro cancela automaticamente a operação de impressão. Se não incluir uma mensagem de alerta, esta aparecerá como se nada acontecesse quando tentar imprimir o relatório — algo que provavelmente confundirá os utilizadores do relatório.
Criar a macro
-
No Painel de Navegação, clique com o botão direito do rato no relatório que pretende alterar e clique em Vista Estrutura.
-
No separador Estrutura, no grupo Mostrar/Ocultar, clique em Folha de Propriedades.
-ou-
Faça duplo clique na caixa no canto superior esquerdo ou direito do relatório, consoante as definições regionais e de idioma.
-
Clique no separador Evento e, na caixa de propriedade Sem Dados , clique em .
É apresentada a caixa de diálogo Escolher Construtor .
-
Clique em Construtor de Macros e, em seguida, clique em OK.
O estruturador de macros é iniciado e apresenta uma macro em branco.
-
Na lista pendente de ações de macro na janela de estrutura da macro, selecione MessageBox na lista.
-
na caixa Mensagem , escreva o texto da mensagem de alerta.
Por exemplo, pode introduzir o seguinte: Não existem registos para comunicar.
-
Opcionalmente, altere o valor do argumento na caixa Aviso Sonoro de Sim para Não e, na lista Tipo , selecione o tipo de ícone que pretende que seja apresentado na sua mensagem de alerta.
-
Na caixa Título , escreva o título da mensagem de alerta.
Por exemplo, pode introduzir Sem Registos.
-
Selecione a lista pendente de ações de macro abaixo da ação Caixa de Mensagens e, em seguida, selecione CancelarEvento.
-
No separador Estrutura , no grupo Fechar , clique em Guardar.
-
No separador Estrutura, no grupo Fechar, clique em Fechar. Se for apresentada uma mensagem de alerta e perguntar se pretende guardar as alterações à macro e à propriedade do relatório, clique em Sim, feche o relatório, guarde as alterações, se lhe for pedido, e avance para os passos seguintes para testá-lo.
Testar a macro
-
No Painel de Navegação, clique com o botão direito do rato no relatório que contém a macro e clique em Imprimir. Consoante as opções que escolheu, o Access apresenta uma mensagem de alerta.
Quando clica em OK para fechar a mensagem, a ação CancelarEvento interrompe a operação de impressão. Uma vez que não especificou outro evento (como abrir o relatório para visualização), o relatório é fechado.
Utilizar código VBA para cancelar a impressão
O código VBA descrito aqui funciona muito como a macro descrita na secção anterior— apresenta uma mensagem de alerta quando abre um relatório em branco e, em seguida, cancela a operação de impressão quando fecha a mensagem de alerta.
Adicionar código VBA
-
No Painel de Navegação, clique com o botão direito do rato no relatório que pretende alterar e clique em Vista Estrutura.
Nota: Para concluir este procedimento, utilize um relatório que não contenha registos.
-
No separador Estrutura, no grupo Mostrar/Ocultar, clique em Folha de Propriedades.
-ou-
Faça duplo clique na caixa no canto superior esquerdo ou direito do relatório, consoante as definições regionais e de idioma.
-
Clique no separador Evento e, na caixa de propriedade Sem Dados , clique em .
É apresentada a caixa de diálogo Escolher Construtor .
-
Clique em Construtor de Código e, em seguida, clique em OK.
O Visual Basic Editor inicia e apresenta um procedimento de evento em branco.
-
Escreva o seguinte código no Visual Basic Editor para que o procedimento Report_NoData seja exatamente semelhante ao seguinte quando terminar:
Private Sub Report_NoData (Cancel As Integer)
MsgBox "There are no records to report", vbExclamation, "No Records"
Cancel = True
End Sub -
Quando tiver terminado, clique em Ficheiro e, em seguida, clique em Guardar.
-
Clique em Ficheiro e, em seguida, clique em Fechar e Regressar ao Microsoft Access.
-
Feche o relatório aberto e, em seguida, clique em Sim para confirmar a gravação.
-
No Painel de Navegação, clique com o botão direito do rato no relatório que acabou de alterar e clique em Imprimir. Consoante as opções que escolheu, o Access apresenta uma mensagem de alerta.
O procedimento Report_NoData utiliza a função MsgBox para apresentar a mensagem Não existem registos para comunicar e um botão OK . Quando clica em OK, a linha "Cancel=True" no procedimento indica ao Access para cancelar o relatório. Cancelar é um argumento que é transmitido automaticamente para o procedimento de evento e é sempre verificado pelo Access quando o procedimento do evento é concluído.