FindFirst在索引字段上失败 [英] FindFirst fails on indexed field
问题描述
在Access 2002数据库上使用DAO 3.6,我得到了意想不到的
结果使用FindFirst方法。这是要测试的简单代码:
Public Sub FindIt()
Dim db作为数据库,rs作为记录集
Dim sCriteria As String
设置db = DBEngine.Workspaces(0).Databases(0)
设置rs = db.OpenRecordset( tblTest,dbOpenDynaset
''sCriteria =" MyField =''24""直径" ''< - Works
sCriteria =" MyField ="" 24""""直径QUOT;"" ''< - 失败
rs.FindFirst sCriteria
Debug.Print sCriteria
Debug.Print" rs。 NoMatch =" &安培; rs.NoMatch
结束子
和即时窗口输出:
MyField =' '24"直径''
rs.NoMatch = False
MyField =" 24""直径
rs.NoMatch = True
tblTest有字段ID(自动编号)和MyField(文本50):
1 12英寸直径
2 24"直径
3 36"直径
第二个标准,使用双引号作为分隔符失败
如果tblTest.MyField被索引。但如果删除索引
,它会成功运行。任何人都可以复制或解释这种意外行为
来自FindFirst的
吗?
Rick Collard
www.msc-lims.com
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.Workspaces(0).Databases(0)
Set rs = db.OpenRecordset("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
www.msc-lims.com
推荐答案
周三, 2008年5月21日01:50:27 GMT, no****@nospam.nosp am(Rick Collard)
写道:
On Wed, 21 May 2008 01:50:27 GMT, no****@nospam.nospam (Rick Collard)
wrote:
>在Access 2002数据库上使用DAO 3.6,我使用FindFirst方法得到了意想不到的结果。这里是要测试的简单代码:
Public Sub FindIt()
Dim db As Database,rs As Recordset
Dim sCriteria As String
设置db = DBEngine.Workspaces(0).Databases(0)
设置rs = db.OpenRecordset(" tblTest" ,dbOpenDynaset)
''sCriteria =" MyField =''24""直径" ''< - Works
sCriteria =" MyField ="" 24""""直径QUOT;"" ''< - 失败
rs.FindFirst sCriteria
Debug.Print sCriteria
Debug.Print" rs。 NoMatch =" &安培; rs.NoMatch
End Sub
即时窗口输出:
MyField =''24"直径''
rs.NoMatch = False
MyField =" 24""直径
rs.NoMatch = True
tblTest具有字段ID(自动编号)和MyField(文本50):
1 12"直径
2 24直径
3 36直径
第二个标准,使用双引号作为分隔符失败
如果tblTest.MyField被索引。但如果删除索引
,它会成功运行。任何人都可以从FindFirst复制或解释这种意想不到的行为吗?
Rick Collard
www.msc-lims.com
任何人都可以花几分钟时间复制问题吗? TIA
Rick Collard
www.msc -lims.com
Rick Collard写道:
Rick Collard wrote:
2008年5月21日星期三01 :格林威治标准时间50:27, no****@nospam.nosp 上午(Rick Collard)
写道:
On Wed, 21 May 2008 01:50:27 GMT, no****@nospam.nospam (Rick Collard)
wrote:
>>在Access 2002数据库上使用DAO 3.6,我使用FindFirst方法获得了意想不到的结果。这里是要测试的简单代码:
Public Sub FindIt()
Dim db As Database,rs As Recordset
Dim sCriteria As String
设置db = DBEngine.Workspaces(0).Databases(0)
设置rs = db.OpenRecordset(" tblTest",dbOpenDynaset)
'sCriteria =" ; MyField =''24""直径" ''< - Works
sCriteria =" MyField ="" 24""""直径QUOT;"" ''< - 失败
rs.FindFirst sCriteria
Debug.Print sCriteria
Debug.Print" rs.NoMatch =" &安培; rs.NoMatch
End Sub
即时窗口输出:
MyField =''24"直径''
rs.NoMatch = False
MyField =" 24""直径
rs.NoMatch = True
tblTest具有字段ID(自动编号)和MyField(文本50):
1 12"直径
2 24直径
3 36直径
第二个标准,使用双引号作为分隔符失败
如果tblTest.MyField被索引。但如果删除索引
,它会成功运行。任何人都可以从FindFirst复制或解释这种意外行为
>>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.Workspaces(0).Databases(0)
Set rs = db.OpenRecordset("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
www.msc-lims.com
任何人都可以花几分钟时间来复制问题? TIA
Can anyone spare a few minutes to duplicate the problem? TIA
我试过
sCriteria =" TestFld =''" &安培; " 24英寸;"直径QUOT; &安培; "''"
在NoMatch上出现错误
起床和去
http://www.youtube.com/watch?v=6HxNGyE3zng
>
Rick Collard
www.msc-lims.com
2008年5月23日星期五10:26:32 -0700,沙拉< oi * @醋。 comwrote:
On Fri, 23 May 2008 10:26:32 -0700, Salad <oi*@vinegar.comwrote:
>
我试过了
sCriteria =" TestFld =''" &安培; " 24英寸;"直径QUOT; &安培; ''"
它在NoMatch上出现了错误
起床去吧
http://www.youtube.com/watch?v=6HxNGyE3zng
沙拉,
感谢您的测试。是的,该语法正常工作,因为
单引号分隔符不在搜索字符串中。你可以尝试
问题语法:
sCriteria =" TestFld ="" 24""""直径"
以上是有效的语法,但是如果
TestFld被编入索引,则无法找到匹配项。如果NoMatch为True则移除索引并查看是否
NoMatch现在为假。
Rick Collard
www.msc-lims.com
这篇关于FindFirst在索引字段上失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!