There's a million and one different ways you could approach this. Keep that
in mind as I present to you my typical approach.
I'm first going to make a few assumptions: I'm going to assume that you
want this run once a day, no matter how many times the database gets opened.
I'm going to assume that the database gets opened at least once a day. I'm
going to assume that there is a form that is opened everytime the database is
used. Finally I'm going to assume that you are an experienced Access
Developer, if not let me know and I'll go into fine grained detail.
First, create a new table with only one field. Make this field a Date field
with a name like "LastRan".
Secondly, build yourself a query that selects the data that you want sent.
Third, build a report based off the query you just built.
Now, enter the code screen for the form you use everyday, and in the OnLoad
event have your application check to see if today's date is present in the
table you created earlier. If it's not present, then use DoCmd.Send to send
the report by email, and use DoCmd.RunSQL to add todays date into the table.
This way, the report will be mailed out only once a day. Personally I think
this is by far the easiest method, though I know there are a lot more methods.