Firstly don't be tempted to include a column in the base table to indicate
this. The availability of the information by the two-day deadline is
something which can, and should, be computed on the fly, not stored. To
store it would constitute redundancy. Redundancy is to be avoided as it
leaves a database open to the risk of update anomalies.
You can do this in a query in the way I suggested, e.g.
SELECT *,
DATEDIFF("d",[Date Received], [ConferenceDate]) >= 2 AS [Report available to
chair]
FROM YourTable;
Note that I've used the DateDiff function here rather than a simple
subtraction. This is more reliable as date/time values can inadvertently
contain a time of day element, which will be unseen if the value is formatted
as a date, so a simple subtraction would not necessarily give the correct
result, whereas the DateDiff function does.
A form based on this query can include a check box bound to the [Report
available to chair] column in the query.
A further refinement could be to filter the form to show only those records
where [Report available to chair] is TRUE. To do this you could have a
button on the form with the following in its Click event procedure:
Me.Filter = "[Report available to chair] = True"
Me.FilterOn = True
You might have another button to show only records where its FALSE:
Me.Filter = "[Report available to chair] = False"
Me.FilterOn = True
To turn off the filter and show all records you can either use the built in
button on the toolbar or have another button on the form with the following
in its Click event procedure:
Me.FilterOn = False
You can probably get a lot of your aggregated data by queries too. For
instance a query to count the number of records where information was
received for a user entered conference date within the deadline would be
along these lines:
PARAMETERS [Enter Conference Date:] DATETIME;
SELECT [Conference Date], COUNT(*) AS NumberWithinDeadline
FROM YourTable
WHERE DATEDIFF("d",[Date Received], [ConferenceDate]) >= 2
AND [ConferenceDate] = [Enter Conference Date:]
GROUP BY [Conference Date];
Or the same thing can be done with the DCount function. You could for
instance have an unbound control on a form with the following as its
ControlSource property:
=DCount("*", "YourTable", " DateDiff("d",[Date Received], [ConferenceDate])
= 2 And [Conference date] = #" & Format([txtConferenceDate,"mm/dd/yy") & "#")
where txtConference Date is the name of an unbound text box control on the
form into which the date is entered. An even better option would be, rather
than having a text box, to have a combo box on the form which lists the dates
of all conferences, so a user simply selects one from the list. With a bit of
ingenuity you'd probably find you can compute most of the aggregate data you
need in similar ways to the above.
There are also various tricks you can use in reports to aggregate data
there. For instance you could have a report grouped by conference date which
gives the numbers of records within or outside the two day deadline for each
conference, and probably many other aggregated values for each conference.