From: Jim on
I have an Access 2003 report that I'm trying to filter in VBA. I have a form
setup with radio buttons for selecting year to date or everything. I have a
Select Case statement in the On Open event of the report, but I don't know
the correct syntax for the filter. Currently this is in the Filter section
of the report: Year([dtmDate]) = Year(Now()) and it works, but what is the
correct syntax forVBA and also to tell it to show all records for option 2?
Thanks

Jim


From: Marshall Barton on
Jim wrote:
>I have an Access 2003 report that I'm trying to filter in VBA. I have a form
>setup with radio buttons for selecting year to date or everything. I have a
>Select Case statement in the On Open event of the report, but I don't know
>the correct syntax for the filter. Currently this is in the Filter section
>of the report: Year([dtmDate]) = Year(Now()) and it works, but what is the
>correct syntax forVBA and also to tell it to show all records for option 2?
>

You should use the OpenReport method's WhereCondition
argument to specify the filter. That way the report has no
need to be aware of what in on some form.

The code behind the form button that opens the report would
look something like:

Dim strWhere As String
If theoptiongroup = 1 Then
strWhere = "Year(dtmDate) = Year(Date())"
End If
DoCmd.OpenReport "the report", acViewPreview, , strWhere

--
Marsh
MVP [MS Access]
From: Armen Stein on
On Thu, 01 Apr 2010 16:52:39 -0600, Marshall Barton
<marshbarton(a)wowway.com> wrote:

>You should use the OpenReport method's WhereCondition
>argument to specify the filter. That way the report has no
>need to be aware of what in on some form.

Another way to have a report prompt the user for criteria before it
runs is to open a form from the report's Open event. Open the form in
Dialog mode so that the report waits for the form to be closed or
hidden before it proceeds. That way you can collect criteria from the
user and build a Where clause for the report. You can also do other
things like hiding and showing detail sections based on the user's
preference.

It also means that you can call the report directly - you don't need
to call it from a form. The benefit is that the selection form is
reusable - it can be called from multiple reports if they need the
same criteria.

I've posted examples of this technique on our free J Street Downloads
page at http://ow.ly/M58Y
See "Report Selection Techniques".

Armen Stein
Microsoft Access MVP
www.JStreetTech.com