Relatório sem dados
Uma maneira prática de impedir a abertura de um relatório sem dados é fazer uma verificação prévia, utilizando a função DCount.
Considerando que usamos um botão para abrir o relatório:
Private Sub NomeBotão_Click()
If DCount("*", "NomeTabela/Consulta") < 1 Then
MsgBox "O relatório não tem dados a exibir."
Exit Sub
Else
DoCmd.OpenReport "NomeRelatório", acPreview
End If
End Sub
Mas a função DCount sabidamente causa perda significatica de desempenho no BD, então devemos evitar seu uso sempre que possível.
Como alternativa podemos usar o evento Se nenhum dado do relatório:
Private Sub Report_NoData(Cancel As Integer)
Cancel = True
MsgBox "O relatório não tem dados a exibir."
End Sub
Um inconveniente neste caso é que o Access exibe a mensagem de ação cancelada:
"A ação OpenReport foi cancelada."
Para inibir esta mensagem, o código do botão que abre o relatório seria assim:
Private Sub NomeBotão_Click()
On Error GoTo Trato
DoCmd.OpenReport "NomeRelatório", acViewPreview
Exit Sub
Trato:
If Err.Number = 2501 Then
Exit Sub
Else
MsgBox Err.Description
End If
End Sub