I added the Cancel = True to the report's NoData event.
Because the tables are (mostly) ODBC-linked, I could not fully test, but this may work.
I normally run my reports from a form, using the Click event of a button (instead of a macro, since I think VBA is more flexible, although more complex, than using macros.) When using VBA and the Click event, I would enter the event as this:
Private Sub MyButton_Click()
On Error Resume Next
DoCmd.OpenReport "MyReport", acViewPreview
End Sub