I wonder if I'm reading the question differently than the others did...
I believe you want something that will ENUMERATE the dates between (including) two dates in your record, even if the given date isn't actually named in the table. I.e. in your example, 7/1/03 isn't on an actual record in the table but because it is enclosed in the range of your record #111, you want to see it.
I'm not sure if that is a correct interpretation of your question, but if it is, you can do this in a couple of steps that involve a bizarre join. To make this work, you need to do a one-time action to manually create a table that contains every date from some arbitrary starting date to some arbitrary ending date. (Fer instance, from the earliest date in your table based on your BegDate field to the latest date in your table based on your EndDate field.)
So this table contains one field (unless you have issues in mind...), a date. And the records are 1/1/03, 1/2/03, 1/3/03, etc. etc. for as many days as there are, one record per date, from the selected start to the selected end.
Now you can do a pseudo-join. Something like
SELECT [UniqueKey],[ADate] FROM DATELIST, EVENTLIST WHERE
DATELIST.ADate >= EVENTLIST.BegDate AND
DATELIST.ADate <= EVENTLIST.EndDate;
WARNING: This might take a while to run. It is a permutation join. Access will try to do it anyway.
Then, you can use this query to either populate a table via append or maketable. Then you can run a query to eliminate duplicates when the dates overlap.
The other way to do this would be to write VBA code, which isn't always easy if you're not comfortable with it. But actually, it would run faster because then you could use the DateAdd function suggested by Malcy to generate new entries in a recordset for each record in your list that has this key in it.
Then you would run the "eliminate duplicates" query as suggested before.
For ME, the VBA code would be easier, but I don't know how comfortable you are with VBA, so I mentioned the alternative (and its drawback - speed or lack thereof).