Using DAO 3.6 on an Access 2002 database, I'm getting unexpected
results with the FindFirst method. Here's the simple code to test:
Public Sub FindIt()
Dim db As Database, rs As Recordset
Dim sCriteria As String
Set db = DBEngine.Worksp aces(0).Databas es(0)
Set rs = db.OpenRecordse t("tblTest", dbOpenDynaset)
'sCriteria = "MyField = '24"" Diameter'" '<-- Works
sCriteria = "MyField = ""24"""" Diameter""" '<-- Fails
rs.FindFirst sCriteria
Debug.Print sCriteria
Debug.Print "rs.NoMatch = " & rs.NoMatch
End Sub
And the immediate window output:
MyField = '24" Diameter'
rs.NoMatch = False
MyField = "24"" Diameter"
rs.NoMatch = True
tblTest has fields ID (autonumber) and MyField (text 50):
1 12" Diameter
2 24" Diameter
3 36" Diameter
The second criteria, which uses double-quotes as the delimiter fails
if tblTest.MyField is indexed. But it works successfully if the index
is removed. Can anyone duplicate or explain this unexpected behavior
from FindFirst?
Rick Collard
results with the FindFirst method. Here's the simple code to test:
Public Sub FindIt()
Dim db As Database, rs As Recordset
Dim sCriteria As String
Set db = DBEngine.Worksp aces(0).Databas es(0)
Set rs = db.OpenRecordse t("tblTest", dbOpenDynaset)
'sCriteria = "MyField = '24"" Diameter'" '<-- Works
sCriteria = "MyField = ""24"""" Diameter""" '<-- Fails
rs.FindFirst sCriteria
Debug.Print sCriteria
Debug.Print "rs.NoMatch = " & rs.NoMatch
End Sub
And the immediate window output:
MyField = '24" Diameter'
rs.NoMatch = False
MyField = "24"" Diameter"
rs.NoMatch = True
tblTest has fields ID (autonumber) and MyField (text 50):
1 12" Diameter
2 24" Diameter
3 36" Diameter
The second criteria, which uses double-quotes as the delimiter fails
if tblTest.MyField is indexed. But it works successfully if the index
is removed. Can anyone duplicate or explain this unexpected behavior
from FindFirst?
Rick Collard
Comment