Pasted that in.
Saved. Compiled and it gave the error
Variable not defined
PolicyPrint = Yes
Main Topics
Browse All TopicsI have an unbound form with 9 fields - 1 xext, 1xYes/No, 7xCombo boxes. After extensive trawling though EE I decided to use the solution explained in http://www.experts-exchang
When the user has entered/selected data (or not) and clicks the OK button I would like it to open the form frmPolicy which is based on the query forFrmPolicy.
The button to Clear the form before entering data works fine.
However, on clicking OK I just get a message like: ContactID=7 AND ProviderID=30 AND PolicyPrint=-1
Presumably indicating that it's got the selected data form the form but not doing anything with it. Right?
The solution feels so close I can almost smell it! So what have I missed?
Here's my version of the code:
Option Compare Database
Option Explicit
Private Sub cmdClear_Click()
ContactID = Null
ProviderID = Null
ProductID = Null
PolicyStatusID = Null
Kfdreference = Null
PolicyFundFormatID = Null
AdviserID = Null
ParaplannerID = Null
PolicyPrint = Yes
ContactID.SetFocus
End Sub
Private Sub cmdQuery_Click()
Dim varCriteria As Variant
varCriteria = Null
If Not IsNull(ContactID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ContactID",
If Not IsNull(ProviderID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ProviderID"
If Not IsNull(ProductID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ProductID",
If Not IsNull(PolicyStatusID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyStatu
If Not IsNull(Kfdreference) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("Kfdreferenc
If Not IsNull(PolicyFundFormatID)
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyFundF
If Not IsNull(AdviserID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("AdviserID",
If Not IsNull(ParaplannerID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("Paraplanner
If Not IsNull(PolicyPrint) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyPrint
MsgBox Nz(varCriteria, "No Criteria selected - All Records will be shown")
'Exit Sub
' store into a query definition for later use:
CurrentDb.QueryDefs("qselT
' open a report:
' DoCmd.OpenReport "rptPolicies", acViewPreview, WhereCondition:=Nz(varCrit
' filter an open form:
Forms!frmPolicy.Filter = Nz(varCriteria)
Forms!frmPolicy.FilterOn = Not IsNull(varCriteria)
End Sub
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
So I've commented out the lines referring to PolicyPrint (we can get back to that later)
Saved. Compiled and pressed the big red (well little grey really) button.
and I get the same kind of message ContactID=7 AND ProviderID=30 AND PolicyPrint=-1
but then a Run-time error '2450'
Can't find the form frmPolicy referred to in a macro expression or Visual Basic Code
1) Does your temp query def work properly (I thought that is what this question was about)?
I declare the source of the values for my criteria using the me keyword. Assuming these are on the form, I would of remaed the test boxes with txt, check boxes with chk. So text box ContactID would be txtContactID and identified as Me.txtContactID. Prevents confusion between surce (Recordset or form)
I typically would write the code for the criteria like this:
varCriteria = Null
If Not IsNull(ContactID) Then _
varCriteria = varCriteria & " AND ContactID =" & Me.txtContactID
If Not IsNull(ProviderID) Then _
varCriteria = varCriteria & " AND ProviderID =" & Me.txtProviderID
If Not IsNull(ProductID) Then _
varCriteria = varCriteria & " AND ProductID =" & Me.txtProductID
If Not IsNull(PolicyStatusID) Then _
varCriteria = varCriteria & " AND PolicyStatusID=" & Me.txtPolicyStatusID
If Not IsNull(Kfdreference) Then _
varCriteria = varCriteria & " AND Kfdreference =" & Me.txtKfdreference
If Not IsNull(PolicyFundFormatID)
varCriteria = varCriteria & " AND PolicyFundFormatID =" & txtMe.PolicyFundFormatID
If Not IsNull(AdviserID) Then _
varCriteria = varCriteria & " AND AdviserID =" & Me.txtAdviserID
If Not IsNull(ParaplannerID) Then _
varCriteria = varCriteria & " AND ParaplannerID =" & Me.ParaplannerID
If Not IsNull(PolicyPrint) Then _
varCriteria = varCriteria & " AND PolicyPrint =" & Me.chkPolicyPrint
Of course, if the value is text, (for example Kfdreference) I would erite it thusly:
varCriteria = varCriteria & " AND Kfdreference ='" & Me.txtKfdreference & "'"
I tried that but got lots of variable not defined messages which I figured out so that now the code looks like this:
Option Compare Database
Option Explicit
Private Sub cmdClear_Click()
txtContactID = Null
txtProviderID = Null
txtProductID = Null
txtPolicyStatusID = Null
txtKfdreference = Null
txtPolicyFundFormatID = Null
txtAdviserID = Null
txtParaplannerID = Null
chkPolicyPrint = Null
txtContactID.SetFocus
End Sub
Private Sub cmdQuery_Click()
Dim varCriteria As Variant
varCriteria = Null
If Not IsNull(txtContactID) Then _
varCriteria = varCriteria & " AND ContactID =" & Me.txtContactID
If Not IsNull(txtProviderID) Then _
varCriteria = varCriteria & " AND ProviderID =" & Me.txtProviderID
If Not IsNull(txtProductID) Then _
varCriteria = varCriteria & " AND ProductID =" & Me.txtProductID
If Not IsNull(txtPolicyStatusID) Then _
varCriteria = varCriteria & " AND PolicyStatusID=" & Me.txtPolicyStatusID
If Not IsNull(txtKfdreference) Then _
varCriteria = varCriteria & " AND Kfdreference =" & Me.txtKfdreference
If Not IsNull(txtPolicyFundFormat
varCriteria = varCriteria & " AND PolicyFundFormatID =" & Me.txtPolicyFundFormatID
If Not IsNull(txtAdviserID) Then _
varCriteria = varCriteria & " AND AdviserID =" & Me.txtAdviserID
If Not IsNull(txtParaplannerID) Then _
varCriteria = varCriteria & " AND ParaplannerID =" & Me.txtParaplannerID
If Not IsNull(chkPolicyPrint) Then _
varCriteria = varCriteria & " AND PolicyPrint =" & Me.chkPolicyPrint
MsgBox Nz(varCriteria, "No Criteria selected - All Records will be shown")
'Exit Sub
' store into a query definition for later use:
varCriteria = Mid(varCriteria, 6) ' NEW^^^^^^^^^^^^^^^^^^^^^^^
CurrentDb.QueryDefs("qselT
' open a report:
' DoCmd.OpenReport "rptPolicies", acViewPreview, WhereCondition:=Nz(varCrit
' filter an open form:
Forms!frmPolicy.Filter = Nz(varCriteria)
Forms!frmPolicy.FilterOn = Not IsNull(varCriteria)
End Sub
However, when it runs I get a message that says
AND ContactID =7 AND ProviderID =39
and the same 'can't find fmPolicy' error message as above.
Hurrah!
I've changed it to
' filter an open form:
DoCmd.OpenForm "frmPolicy"
Forms!frmPolicy.Filter = Nz(varCriteria)
Forms!frmPolicy.FilterOn = Not IsNull(varCriteria)
AND IT WORKS!!!!! Whoop!
However, I still get an annoying message like
AND ContactID =7 AND ProviderID =39 and have to click OK before it opens the recordset.
Any way to make it stop?
Thank you very much 1William - your assistance and patience has been invaluable. I'm actually looking forward to trying it out as a method for generating reports next!
For completeness the final code is as follows:
--------------------------
Option Compare Database
Option Explicit
' This code was created by Harfang and amended with the assistance of 1William - members of the www.experts-exchange.com community
' See http://www.experts-exchang
Private Sub cmdClear_Click()
txtContactID = Null
txtProviderID = Null
txtProductID = Null
txtPolicyStatusID = Null
txtKfdreference = Null
txtPolicyFundFormatID = Null
txtAdviserID = Null
txtParaplannerID = Null
chkPolicyPrint = Null
txtContactID.SetFocus
End Sub
Private Sub cmdQuery_Click()
Dim varCriteria As Variant
DoCmd.SetWarnings False
varCriteria = Null
If Not IsNull(txtContactID) Then _
varCriteria = varCriteria & " AND ContactID =" & Me.txtContactID
If Not IsNull(txtProviderID) Then _
varCriteria = varCriteria & " AND ProviderID =" & Me.txtProviderID
If Not IsNull(txtProductID) Then _
varCriteria = varCriteria & " AND ProductID =" & Me.txtProductID
If Not IsNull(txtPolicyStatusID) Then _
varCriteria = varCriteria & " AND PolicyStatusID=" & Me.txtPolicyStatusID
If Not IsNull(txtKfdreference) Then _
varCriteria = varCriteria & " AND Kfdreference =" & Me.txtKfdreference
If Not IsNull(txtPolicyFundFormat
varCriteria = varCriteria & " AND PolicyFundFormatID =" & Me.txtPolicyFundFormatID
If Not IsNull(txtAdviserID) Then _
varCriteria = varCriteria & " AND AdviserID =" & Me.txtAdviserID
If Not IsNull(txtParaplannerID) Then _
varCriteria = varCriteria & " AND ParaplannerID =" & Me.txtParaplannerID
If Not IsNull(chkPolicyPrint) Then _
varCriteria = varCriteria & " AND PolicyPrint =" & Me.chkPolicyPrint
' MsgBox Nz(varCriteria, "No Criteria selected - All Records will be shown")
'Exit Sub
' store into a query definition for later use:
varCriteria = Mid(varCriteria, 6) ' NEW^^^^^^^^^^^^^^^^^^^^^^^
CurrentDb.QueryDefs("qselT
' open a report:
' DoCmd.OpenReport "rptPolicies", acViewPreview, WhereCondition:=Nz(varCrit
' run a macro:
'DoCmd.RunMacro "ExportPolicies" 'This macro includes the WHERE Criteria
' filter an open form:
DoCmd.OpenForm "frmPolicy"
Forms!frmPolicy.Filter = Nz(varCriteria)
Forms!frmPolicy.FilterOn = Not IsNull(varCriteria)
DoCmd.SetWarnings True
End Sub
Business Accounts
Answer for Membership
by: 1WilliamPosted on 2007-08-17 at 11:44:19ID: 19719306
You need to remove the first AND thusly:
dbLong, ContactID) , dbLong, ProviderID) dbLong, ProductID) sID", dbLong, PolicyStatusID) e", dbText, Kfdreference) Then _ ormatID", dbLong, PolicyFundFormatID) dbLong, AdviserID) ID", dbLong, ParaplannerID) ", dbBoolean, PolicyPrint)
^^^^^^^^
emp").SQL = "SELECT * FROM forFrmPolicy" & " WHERE " + varCriteria & ";"
eria)
varCriteria = Mid(varCriteria , 6)
Private Sub cmdQuery_Click()
Dim varCriteria As Variant
varCriteria = Null
If Not IsNull(ContactID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ContactID",
If Not IsNull(ProviderID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ProviderID"
If Not IsNull(ProductID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("ProductID",
If Not IsNull(PolicyStatusID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyStatu
If Not IsNull(Kfdreference) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("Kfdreferenc
If Not IsNull(PolicyFundFormatID)
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyFundF
If Not IsNull(AdviserID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("AdviserID",
If Not IsNull(ParaplannerID) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("Paraplanner
If Not IsNull(PolicyPrint) Then _
varCriteria = varCriteria + " AND " & BuildCriteria("PolicyPrint
MsgBox Nz(varCriteria, "No Criteria selected - All Records will be shown")
'Exit Sub
' store into a query definition for later use:
varCriteria = Mid(varCriteria , 6) ' NEW^^^^^^^^^^^^^^^^^^^^^^^
CurrentDb.QueryDefs("qselT
' open a report:
' DoCmd.OpenReport "rptPolicies", acViewPreview, WhereCondition:=Nz(varCrit
' filter an open form:
Forms!frmPolicy.Filter = Nz(varCriteria)
Forms!frmPolicy.FilterOn = Not IsNull(varCriteria)
End Sub