ACC2000: Unable to Use FindFirst to Retrieve Value with Apostrophe
ID: Q199056
|
The information in this article applies to:
Moderate: Requires basic macro, coding, and interoperability skills.
SYMPTOMS
When you use the FindFirst method, you receive a No match or a run-time error message.
This behavior occurs when you search for a value that contains an
apostrophe ('). For example:
rst.FindFirst "[CompanyName] = 'B's Beverages'"
This behavior also occurs if you use the FindFirst method in the
AfterUpdate event procedure of a combo box, and you search for a value that
contains an apostrophe. For example:
Me.RecordsetClone.FindFirst "[CompanyName] = " & Me![ComboboxNN]
CAUSE
Searches for text strings that contain quotation marks (") or apostrophes
(') require special syntax because both characters are used as delimiters
in Visual Basic for Applications.
RESOLUTION
Workaround for Using a Text String
When you are typing your search argument, use double quotation marks in
your search string to find values that contain single quotation marks and
use single quotation marks in your search string to find values that
contain quotation marks. For example, to search for a CompanyName that
includes an apostrophe, replace the single quotation marks around the
CompanyName value with two sets of double quotation marks, as in the
following example:
rst.FindFirst "[CompanyName] = ""B's Beverages"""
Workaround for Using a Combo Box
If you are using a combo box to find values that contain quotation marks
or apostrophes, add the primary key to the combo box and make it the bound
column. Hide the bound column. Then change your criteria so that it
searches in the field that corresponds to the bound column in the combo
box.
MORE INFORMATION
Steps to Reproduce Behavior
- Open the sample database Northwind.mdb.
- Use the AutoForm:Columnar Wizard to create a new form based on the Customers table.
- Open the form in Design view, and add a command button to the form.
- Change the Name property for the command button to FindFirst.
- Set the OnClick property of the command button to the following event procedure:
Private Sub FindFirst_Click()
Dim rst As DAO.Recordset
Dim strCriteria As String
Set rst = Me.RecordsetClone
rst.FindFirst "[CompanyName] = 'B''s Beverages'"
If rst.NoMatch Then
MsgBox "No match was found."
Else
Me.Bookmark = rst.Bookmark
End If
rst.Close
End Sub
- Close the Visual Basic Editor.
- Switch the form to Form view, and click the command button. Note that
you receive a message box containing the "No match was found" message.
- Change the FindFirst syntax in the code example to the following:
rst.FindFirst "[CompanyName] = ""B's Beverages"""
- Switch the form to Form view, and click the command button. Note that
the record is found this time.
REFERENCES
Additional query words:
Keywords : kbdta GnlFnd
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: May 13, 1999