Solved

Open query based on currently filtered form - Access 2007

Posted on 2008-06-23
21
613 Views
Last Modified: 2013-11-29
Hello,
I am trying to integrate a mail merge function with Acces 2007.  I want my users to be able to narrow the list of contacts that will recieve an email by filtering fields on a form.  Once the user filters the form, they would click an email button that would start the mail merge wizard.  Inside the mail merge wizard, the user has to choose a table or query to get the data from.  My question is this - how do I base a query on an open form's filtered records?
Thanks
0
Comment
Question by:Clean14
  • 11
  • 10
21 Comments
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21849592
get the form's filter and apply it to the query..

dim  qd as dao.querydef, ssql as string


qd=currentdb.querydef("nameOfQuery")
ssql=qd.sql

ssql=ssql & " where " & me.filter

qd.sql=ssql
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21849620
or better set a general query string

dim genSql,qd as dao.querydef, ssql as string
genSql="select * from tablex"

qd=currentdb.querydef("nameOfQuery")

qd.sql=genSql & " where " & me.filter
0
 

Author Comment

by:Clean14
ID: 21849692
Thanks for the quick response.  Where would I place the code that you supplied?
Thanks
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21849997
let me ask the question-- where do you want the data from the query?
0
 

Author Comment

by:Clean14
ID: 21850092
The mail merge wizard will be accessing the query.  I just want the query to always reflect the records that are filtered on my main form.  The main form will be open when the mail merge wizard looks for the mail merge query.  I hope that makes sense.
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21850145
then apply the filter to the query before you do the mail merge
0
 

Author Comment

by:Clean14
ID: 21850249
I know how to apply a filter to a query....what i am trying to do is have the query look at the open form, and copy the form's current filters automatically.  Is that possible?  
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21850514

create a button in your form cmdTest

filter the form before you click the button

in the click event of cmdTest

private sub cmdtest_click()
dim genSql,qd as dao.querydef, ssql as string
genSql="select * from tablex"     'change { tablex } with the actual name of the table

qd=currentdb.querydef("nameOfQuery")  'change "nameOfQuery" with the name of the query

qd.sql=genSql & " where " & me.filter

docmd.openquery "nameOfQuery"

end sub
0
 

Author Comment

by:Clean14
ID: 21855864
I tried your last suggestion, and when I click the button, I get an error message - "compile error - method or data member not found" I've attached the file for your reference.  Thanks for your help!
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21855890
where is the file?
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:Clean14
ID: 21856052
Sorry about that.  It wouldn't let me attach the .accdb file, so I just changed it to .mdb.  Thanks.
test.mdb
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21856232
try this codes

Private Sub cmdtest_click()
Dim genSql, qd As DAO.QueryDef, ssql As String
genSql = "select * from Executives"  

Set qd = CurrentDb.QueryDefs("Query1")

qd.SQL = genSql & " where " & Me.Filter

DoCmd.OpenQuery "Query1"

End Sub

0
 

Author Comment

by:Clean14
ID: 21856343
Almost there!  The code worked except for 1 thing.  If I don't filter any records, the query still opens with the last filtered criteria.  Is there a way to empty the filter from the query when it is closed?  Thanks!
0
 
LVL 119

Accepted Solution

by:
Rey Obrero earned 500 total points
ID: 21856391

Private Sub cmdtest_click()
Dim genSql, qd As DAO.QueryDef, ssql As String
genSql = "select * from Executives"  

Set qd = CurrentDb.QueryDefs("Query1")

if len(me.filter)>0 then
qd.SQL = genSql & " where " & Me.Filter
else
qd.SQL = genSql
end if

DoCmd.OpenQuery "Query1"

End Sub
0
 

Author Comment

by:Clean14
ID: 21856527
I tried that code, but I have the same problem.  Query loads with last filtered criteria.  Thanks
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21856586
Clean14, did you remove the filter in the form before you open the query?
0
 

Author Comment

by:Clean14
ID: 21856689
I removed the filter by pressing the filtered / unfiltered button on the bottom of the form.  Here is the file again in case you want to try.  Thanks
test.mdb
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21856778
click the remove filter button before opening the query
test.mdb
0
 

Author Comment

by:Clean14
ID: 21856907
Thanks a lot for all your help.   I'm new to this site....does it matter which one of your comments I accept as the solution?  
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21856961
just select the more appropriate one
0
 

Author Closing Comment

by:Clean14
ID: 31469908
Thanks again for all yoru help.  You saved me TONS of time and frustration.  
Pat
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Join & Write a Comment

In the previous article, Using a Critera Form to Filter Records (http://www.experts-exchange.com/A_6069.html), the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
In Debugging – Part 1, you learned the basics of the debugging process. You learned how to avoid bugs, as well as how to utilize the Immediate window in the debugging process. This article takes things to the next level by showing you how you can us…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now