ACC97: Run-time error '2448' with BuildCriteria Method
ID: Q178198
|
The information in this article applies to:
SYMPTOMS
Moderate: Requires basic macro, coding, and interoperability skills.
When you use the BuildCriteria method to programmatically set the Filter
property on a form and the Field argument of the BuildCriteria method
references a field name that contains a space, you may receive the
following error message:
Run-time error '2448':
You can't assign a value to this object.
CAUSE
The BuildCriteria method is used to generate a parsed criteria string as it
would appear in the Query by Example (QBE) grid or in Filter By Form mode.
Unlike the QBE grid or Filter By Form, however, the BuildCriteria method
does not automatically enclose the field name within brackets.
RESOLUTION
To resolve this behavior, enclose the Field argument of the BuildCriteria
method within brackets. For example, using the example in step 2 of the
"Creating the Module" section of the "Steps to Reproduce Behavior section"
later in this article, enter the following expression
strFilter = BuildCriteria("Product Name", dbText, strInput)
as follows:
strFilter = BuildCriteria("[Product Name]", dbText, strInput)
MORE INFORMATION
Steps to Reproduce Behavior
- Open a new blank database.
- Import the Products table from the sample database Northwind.mdb.
- Open the Products table in Design view and change the field name
ProductName to Product Name.
- Close the table.
Creating the Form
- On the Insert menu, click Form.
- In the New Form dialog box, click Form Wizard, and then click OK.
- In the Form Wizard, select Products in the Tables/Queries box, and
then add all the fields from the Available Fields box to the Selected
Fields box.
- Click Finish to build the form.
- Close the Form.
Creating the Module
- On the Insert menu, click Module.
- Add the following function to the module:
'******************************************************************
' This procedure opens a form and applies a filter.
'******************************************************************
Sub SetFilter()
Dim frm As Form, strMsg As String
Dim strInput As String, strFilter As String
' Open Products form in Form view.
DoCmd.OpenForm "Products"
' Return Form object variable pointing to Products form.
Set frm = Forms!Products
strMsg = "Enter one or more letters of product name " & _
"followed by an asterisk."
' Prompt user for input.
strInput = InputBox(strMsg)
' Build criteria string.
strFilter = BuildCriteria("Product Name", dbText, strInput)
' Set Filter property to apply filter.
frm.Filter = strFilter
' Set FilterOn property; form now shows filtered records.
frm.FilterOn = True
End Sub
- To test this procedure, type the following line in the Debug window,
and then press ENTER:
SetFilter
Note that the Products form is displayed, followed by an Input box
requesting the search criteria.
- Enter A* and click OK.
Note that you receive the error message:
Run-time error '2448':
You can't assign a value to this object.
REFERENCES
For more information about using the BuildCriteria method, search the Help
index for "BuildCriteria" or ask the Microsoft Access 97 Office Assistant.
Additional query words:
error searching filtering
Keywords : kberrmsg
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbprb