Is there a way to set up a Schedule for a Report so that the Report is triggered/sent ONLY if the Report is populated with information? Therefore, if I schedule it to run once every day but the majority of days it's blank, I don't want it to actually send on the majority of those days, I want it to send ONLY on the days that it actually populates with information.
Is this possible?
Yes, although it depends on how the report is populated. You need to throw something like the below into a stored procedure and then schedule the stored procedure to run a bit before the report is due to run.
E.g. this one checks a local view to see if there is a show on tonight before running a show report for Visitor Services:
CREATE PROCEDURE [dbo].[LRP_Report_Check]ASBEGIN TRYif((select COUNT(ROW_NO) FROM LV_FOH_OVERVIEW)<1)BEGIN update gooesoft_schedule_queue SET status = N'c' WHERE schedule_id = 462ENDEND TRY
BEGIN CATCH PRINT 'Error = ' + CAST(@@ERROR AS VARCHAR(8))
END CATCH
> Is this possible?
Not via the current Report Server service without customization, no.
Some orgs have created workarounds, e.g. customizations to query the data and insert a standard request if any is found. In some cases I've found it simpler to query and, if data is found, send the desired data in a formatted HTML e-mail created and sent via a SQL Agent Job rather than going through the gyrations required by the Report Server.
With an Exchange server groaning under the weight of innumerable saved PDF attachments we are slowly moving away from e-mailed reports these days, and toward more auto-refreshing SSRS report "dashboards".
Yes, if the report is in SSRS and you use a data-driven subscription (another good reason to move away from Infomaker!). I've written one where my team only gets emailed about entries in TX_MACHINE_LOCATION being "Unassigned" if there are any...
Slightly tricky to set up, but works well for us.
I built a small suite of tools to help me do exactly this, which are shared on Bitbucket: https://bitbucket.org/TN_WebShare/report-server-tools (This is a "community resource", request access here: https://www.tessituranetwork.com/Support/Resources/Developer)
It's designed so that any end user can convert an existing schedule to a conditional one just by running a quick utility from the client. This requires that the admin configures a condition in System Tables (like "Report Not Empty") for each report type you wish to use, and you also have the option of creating more advanced conditions by writing stored procedures that resolve based on the request's parameters. (For example, I have a condition called "Yes Cash Income" that only resolves if the Income By Payment Method report has cash on it.)