Microsoft KB Archive/189128

= ACC: BuildCriteria Method Returns Error for Certain Expressions =

Article ID: 189128

Article Last Modified on 1/23/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q189128



Moderate: Requires basic macro, coding, and interoperability skills.



SYMPTOMS
When you use the BuildCriteria method, you may receive one of the following errors:

Run-time error '2431': The expression you entered contains invalid syntax. You may have entered a comma without a preceding value or identifier.

-or-

Run-time error '2429': The In operator you entered requires parentheses.

-or-

Run-time error '7956': The syntax of the subquery in this expression is incorrect. Check the subquery's syntax and enclose the subquery in parentheses.



CAUSE
You have used an SQL reserved word for the expression argument of the BuildCriteria method. Specifically, you have used either the word "Select" or "In" for your expression, as in the following example:

  BuildCriteria("FieldName", dbText, "IN")



RESOLUTION
When you use the BuildCriteria method, enclose the expression in single quotation marks, as in the following example:

  BuildCriteria("FieldName", dbText, "'" & "IN" & "'")



STATUS
This behavior is by design.



MORE INFORMATION
Both "In" and "Select" are SQL Reserved Words that can be used to indicate the presence of a subquery within a standard SQL statement. When these words are supplied as the expression argument for the BuildCriteria method, Microsoft Access expects a subquery to follow.

Enclosing the expression argument of the BuildCriteria method in single quotation marks will not affect the behavior of the method for text type arguments. The following code fragment gives an example of how this could be applied within Visual Basic for Applications code:

  Dim strMsg As String Dim strInput As String Dim strFilter As String

strMsg = "Please enter your text." ' Prompt user for input. strInput = InputBox(strMsg) ' Build criteria string and assign it to a filter string. ' Enclose the user input within single quotes strFilter = BuildCriteria("Region", dbText, "'" & strInput & "'")

Steps to Reproduce the Behavior
You can easily reproduce the described errors in the Debug window, as follows:


 * 1) Press CTRL+G to open the Debug window.
 * 2) In the lower half of the Debug window, type the following:

?BuildCriteria("Region", dbText, "In")
 * 1) Press ENTER.

You will see one of the described error messages. To see the correct output, type the following in the Debug window

?BuildCriteria("Region", dbText, "'" & "In" & "'")

and press ENTER. You will see the following output:

  Region = 'In'

