A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Access » Setting Up & Running Reports
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

filter report based on form filters



 
 
Thread Tools Display Modes
  #1  
Old May 24th, 2007, 12:25 AM posted to microsoft.public.access.reports
lilbit27
external usenet poster
 
Posts: 62
Default filter report based on form filters

I have a mainform called PendingsMain and a subform called
PendingsSub. You can filter the subform by different filters and this
works fine.

i want to create a report that will print out the results of the users
filters or print everything if there is no filters submitted within
the form.

Any suggestions

This is what i have so far:

Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
" AND ([opid] = """ & Me.cboopid & """)"
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


if an "opid" is not selected but another filter is like "ProdCD"
"DateIn", "Policy" it will not filter the report. I need to take in
account all of the filters that could be selected or left null just
not sure how.

  #2  
Old May 24th, 2007, 05:45 PM posted to microsoft.public.access.reports
Marshall Barton
external usenet poster
 
Posts: 5,361
Default filter report based on form filters

lilbit27 wrote:

I have a mainform called PendingsMain and a subform called
PendingsSub. You can filter the subform by different filters and this
works fine.

i want to create a report that will print out the results of the users
filters or print everything if there is no filters submitted within
the form.

This is what i have so far:

Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
" AND ([opid] = """ & Me.cboopid & """)"
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


if an "opid" is not selected but another filter is like "ProdCD"
"DateIn", "Policy" it will not filter the report. I need to take in
account all of the filters that could be selected or left null just
not sure how.



The general idea is along these lines:

With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
strWhere = " And " & .Filter
End If

If Not IsNull(Me.cboopid) Then
strWhere = strWhere & " And opid=""" & Me.cboopid & """"
End If
If Not IsNull(Me.cboProdCD) Then
strWhere = strWhere & " And ProdCD=""" & Me.cboProdCD &
""""
End If
. . .

End With

DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)

--
Marsh
MVP [MS Access]
  #3  
Old May 24th, 2007, 11:18 PM posted to microsoft.public.access.reports
lilbit27
external usenet poster
 
Posts: 62
Default filter report based on form filters

On May 24, 12:45 pm, Marshall Barton wrote:
lilbit27 wrote:
I have a mainform called PendingsMain and a subform called
PendingsSub. You can filter the subform by different filters and this
works fine.


i want to create a report that will print out the results of the users
filters or print everything if there is no filters submitted within
the form.


This is what i have so far:


Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
" AND ([opid] = """ & Me.cboopid & """)"
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


if an "opid" is not selected but another filter is like "ProdCD"
"DateIn", "Policy" it will not filter the report. I need to take in
account all of the filters that could be selected or left null just
not sure how.


The general idea is along these lines:

With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
strWhere = " And " & .Filter
End If

If Not IsNull(Me.cboopid) Then
strWhere = strWhere & " And opid=""" & Me.cboopid & """"
End If
If Not IsNull(Me.cboProdCD) Then
strWhere = strWhere & " And ProdCD=""" & Me.cboProdCD &
""""
End If
. . .

End With

DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)

--
Marsh
MVP [MS Access]- Hide quoted text -

- Show quoted text -


I get a syntax missing operator in query expression if I pick an opid,
or pick a prodcd or leave it blank

  #4  
Old May 25th, 2007, 01:40 AM posted to microsoft.public.access.reports
Marshall Barton
external usenet poster
 
Posts: 5,361
Default filter report based on form filters

lilbit27 wrote:

On May 24, 12:45 pm, Marshall Barton wrote:
lilbit27 wrote:
I have a mainform called PendingsMain and a subform called
PendingsSub. You can filter the subform by different filters and this
works fine.


i want to create a report that will print out the results of the users
filters or print everything if there is no filters submitted within
the form.


This is what i have so far:


Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
" AND ([opid] = """ & Me.cboopid & """)"
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


if an "opid" is not selected but another filter is like "ProdCD"
"DateIn", "Policy" it will not filter the report. I need to take in
account all of the filters that could be selected or left null just
not sure how.


The general idea is along these lines:

With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
strWhere = " And " & .Filter
End If

If Not IsNull(Me.cboopid) Then
strWhere = strWhere & " And opid=""" & Me.cboopid & """"
End If
If Not IsNull(Me.cboProdCD) Then
strWhere = strWhere & " And ProdCD=""" & Me.cboProdCD &
""""
End If
. . .

End With

DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)


I get a syntax missing operator in query expression if I pick an opid,
or pick a prodcd or leave it blank



First, add
MsgBox Mid(strWhere, 6)
after the End With and see if that helps you spot where the
code has a mistake (probably a missing space).

If you can't find the problem. post a Copy/Paste of your
code.

--
Marsh
MVP [MS Access]
  #5  
Old May 25th, 2007, 11:21 PM posted to microsoft.public.access.reports
lilbit27
external usenet poster
 
Posts: 62
Default filter report based on form filters

On May 24, 8:40 pm, Marshall Barton wrote:
lilbit27 wrote:
On May 24, 12:45 pm, Marshall Barton wrote:
lilbit27 wrote:
I have a mainform called PendingsMain and a subform called
PendingsSub. You can filter the subform by different filters and this
works fine.


i want to create a report that will print out the results of the users
filters or print everything if there is no filters submitted within
the form.


This is what i have so far:


Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
" AND ([opid] = """ & Me.cboopid & """)"
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


if an "opid" is not selected but another filter is like "ProdCD"
"DateIn", "Policy" it will not filter the report. I need to take in
account all of the filters that could be selected or left null just
not sure how.


The general idea is along these lines:


With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
strWhere = " And " & .Filter
End If


If Not IsNull(Me.cboopid) Then
strWhere = strWhere & " And opid=""" & Me.cboopid & """"
End If
If Not IsNull(Me.cboProdCD) Then
strWhere = strWhere & " And ProdCD=""" & Me.cboProdCD &
""""
End If
. . .


End With


DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)


I get a syntax missing operator in query expression if I pick an opid,
or pick a prodcd or leave it blank


First, add
MsgBox Mid(strWhere, 6)
after the End With and see if that helps you spot where the
code has a mistake (probably a missing space).

If you can't find the problem. post a Copy/Paste of your
code.

--
Marsh
MVP [MS Access]- Hide quoted text -

- Show quoted text -


I still get the error messagim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
StrWhere = " And " & .Filter
End If

If Not IsNull(Me.CboOpid) Then
StrWhere = StrWhere & " And opid=""" & Me.CboOpid &
""""
End If
If Not IsNull(Me.cbofilterProd) Then
StrWhere = StrWhere & " And ProdCD=""" &
Me.cbofilterProd & """"
End If

End With
MsgBox Mid(StrWhere, 6)
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWheree


  #6  
Old May 26th, 2007, 01:29 AM posted to microsoft.public.access.reports
Marshall Barton
external usenet poster
 
Posts: 5,361
Default filter report based on form filters

lilbit27 wrote:
On May 24, 8:40 pm, Marshall Barton wrote:
lilbit27 wrote:
On May 24, 12:45 pm, Marshall Barton wrote:


The general idea is along these lines:

[snip part that looks correct]
DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)


I get a syntax missing operator in query expression if I pick an opid,
or pick a prodcd or leave it blank

[snip part that looks correct]
MsgBox Mid(StrWhere, 6)
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWheree


You messed up the strwhere part of the OpenReport line:

DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)

--
Marsh
MVP [MS Access]
  #7  
Old May 27th, 2007, 01:17 PM posted to microsoft.public.access.reports
lilbit27
external usenet poster
 
Posts: 62
Default filter report based on form filters

On May 25, 8:29 pm, Marshall Barton wrote:
lilbit27 wrote:
On May 24, 8:40 pm, Marshall Barton wrote:
lilbit27 wrote:
On May 24, 12:45 pm, Marshall Barton wrote:


The general idea is along these lines:


[snip part that looks correct] DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)


I get a syntax missing operator in query expression if I pick an opid,
or pick a prodcd or leave it blank


[snip part that looks correct]

MsgBox Mid(StrWhere, 6)
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWheree


You messed up the strwhere part of the OpenReport line:

DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)

--
Marsh
MVP [MS Access]


It's not recognizing the filters I if I put the mid(strWhere,6) the
report open ups with blank records. i I take that out it gives me
all the records even when I filter by a particular opid or prodcd.

This is what I had orginally :
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
' " AND ([opid] = """ & Me.cboopid & """)"
End If
' End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere

and this works if I filter by an opid. Even if I add 5 more filters
as long as the opid is filtered it will work. the problem is I may not
want to isolate just on opid and just choose one of the other 5
filters.

  #8  
Old May 27th, 2007, 04:16 PM posted to microsoft.public.access.reports
Marshall Barton
external usenet poster
 
Posts: 5,361
Default filter report based on form filters

lilbit27 wrote:
It's not recognizing the filters I if I put the mid(strWhere,6) the
report open ups with blank records. i I take that out it gives me
all the records even when I filter by a particular opid or prodcd.

This is what I had orginally :
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
' " AND ([opid] = """ & Me.cboopid & """)"
End If
' End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere

and this works if I filter by an opid. Even if I add 5 more filters
as long as the opid is filtered it will work. the problem is I may not
want to isolate just on opid and just choose one of the other 5
filters.



If it didn't do what you want, then you need to determine
why, not just discard a critical part of the code.

The code I suggested is a very common way to do what you
want, so I conclude that you have something pecular in your
situation or there is some other mistake in the code. The
reason I wanted you to add the message box is so you can see
the resulting filter string and try to see what's wrong with
it. If you are unable to determine why you are getting the
error message, then change the MsgBox to:
Debug.Print Mid(StrWhere, 6)
After you run the code you can view the Debug window (using
Ctrl+G or the View menu) and Copy/Paste the generated filter
along with the code that was used. Maybe I can figure it
out with that information.

--
Marsh
MVP [MS Access]
  #9  
Old May 27th, 2007, 10:44 PM posted to microsoft.public.access.reports
lilbit27
external usenet poster
 
Posts: 62
Default filter report based on form filters

On May 27, 11:16 am, Marshall Barton wrote:
lilbit27 wrote:
It's not recognizing the filters I if I put the mid(strWhere,6) the
report open ups with blank records. i I take that out it gives me
all the records even when I filter by a particular opid or prodcd.


This is what I had orginally :
With Me.[FPastDuePendingsSub].Form
If Me.FPastDuePendingsSub.Form.FilterOn = True Then
StrWhere = Me.FPastDuePendingsSub.Form.Filter & _
' " AND ([opid] = """ & Me.cboopid & """)"
End If
' End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere


and this works if I filter by an opid. Even if I add 5 more filters
as long as the opid is filtered it will work. the problem is I may not
want to isolate just on opid and just choose one of the other 5
filters.


If it didn't do what you want, then you need to determine
why, not just discard a critical part of the code.

The code I suggested is a very common way to do what you
want, so I conclude that you have something pecular in your
situation or there is some other mistake in the code. The
reason I wanted you to add the message box is so you can see
the resulting filter string and try to see what's wrong with
it. If you are unable to determine why you are getting the
error message, then change the MsgBox to:
Debug.Print Mid(StrWhere, 6)
After you run the code you can view the Debug window (using
Ctrl+G or the View menu) and Copy/Paste the generated filter
along with the code that was used. Maybe I can figure it
out with that information.

--
Marsh
MVP [MS Access]- Hide quoted text -

- Show quoted text -


Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
If Not IsNull(Me.CboOpid) Then
StrWhere = .Filter & " AND ([opid] = """ & Me.CboOpid & """)"
Else
StrWhere = .Filter
End If
If Not IsNull(Me.cbofilterProd) Then
StrWhere = .Filter & " AND ([prodcd] = """ & Me.cbofilterProd &
""")"
Else
StrWhere = .Filter
End If
If Not IsNull(Me.cboCmtCd) Then
StrWhere = .Filter & " And ([excd] = """ & Me.cboCmtCd &
""")"
Else
StrWhere = .Filter
End If
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere

this is what I have everytime I add a piece of code the previous
filter does not work. If no filter is picked the report works and if
I pick a excd it works but now the opid and prodcd does not work. If
I remoe the excd filter the prodcd will work but not the opid and so
on.

  #10  
Old May 28th, 2007, 02:54 PM posted to microsoft.public.access.reports
Marshall Barton
external usenet poster
 
Posts: 5,361
Default filter report based on form filters

On May 24, 8:40 pm, Marshall Barton wrote:
The code I suggested is a very common way to do what you
want, so I conclude that you have something pecular in your
situation or there is some other mistake in the code. The
reason I wanted you to add the message box is so you can see
the resulting filter string and try to see what's wrong with
it. If you are unable to determine why you are getting the
error message, then change the MsgBox to:
Debug.Print Mid(StrWhere, 6)
After you run the code you can view the Debug window (using
Ctrl+G or the View menu) and Copy/Paste the generated filter
along with the code that was used. Maybe I can figure it
out with that information.
-

lilbit27 wrote:
Dim StrWhere As String
With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
If Not IsNull(Me.CboOpid) Then
StrWhere = .Filter & " AND ([opid] = """ & Me.CboOpid & """)"
Else
StrWhere = .Filter
End If
If Not IsNull(Me.cbofilterProd) Then
StrWhere = .Filter & " AND ([prodcd] = """ & Me.cbofilterProd &
""")"
Else
StrWhere = .Filter
End If
If Not IsNull(Me.cboCmtCd) Then
StrWhere = .Filter & " And ([excd] = """ & Me.cboCmtCd &
""")"
Else
StrWhere = .Filter
End If
End If
End With
DoCmd.OpenReport "RPendDetail", acViewPreview, , StrWhere

this is what I have everytime I add a piece of code the previous
filter does not work. If no filter is picked the report works and if
I pick a excd it works but now the opid and prodcd does not work. If
I remoe the excd filter the prodcd will work but not the opid and so
on.



That's a rather innovative modification of the code I
suggested, but that logic is just not going to work. You
need to go back to the logic I originally posted and find
the problem there without taking off in all these other
directions.

With Me.[FPastDuePendingsSub].Form
If .FilterOn = True Then
strWhere = " And " & .Filter
End If

If Not IsNull(Me.cboopid) Then
strWhere = strWhere & " And opid=""" & Me.cboopid & """"
End If
If Not IsNull(Me.cboProdCD) Then
strWhere = strWhere & " And ProdCD=""" _
& Me.cboProdCD & """"
End If
If Not IsNull(Me.cboCmtCd) Then
strWhere = strWhere & " And excd = """ & _
Me.cboCmtCd & """"
End If
End With
Debug.Print Mid(strWhere, 6)
DoCmd.OpenReport "RPendDetail", acViewPreview, , _
Mid(strWhere, 6)

Be sure to use the Debug - Compile menu item to detect any
syntax errors and get those corrected before running a test.

I expect that to fail in the same way it did before, but
this time post back with the strwhere string from the Debug
window. Also post a Copy/Paste of the code as it was at the
time of your test so I can try to translate the problem in
where clause to the code that generated it.

It may also be important for me to know the data type of the
opid, ProdCD and excd fields in the report's record source
table (the code assumes that all three fields are Text
fields).

--
Marsh
MVP [MS Access]
 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 04:37 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.