且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

FindFirst在索引字段上失败

更新时间:2021-11-26 21:46:15

周三, 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""直径&QUOT; ''< - Works

sCriteria =" MyField ="" 24""""直径QUOT;&QUOT;&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 =&quot ; MyField =''24""直径&QUOT; ''< - Works
sCriteria =" MyField ="" 24""""直径QUOT;&QUOT;&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 =''" &安培; &QUOT; 24英寸;&QUOT;直径QUOT; &安培; "''"

在NoMatch上出现错误


起床和去
http://www.***.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 =''" &安培; &QUOT; 24英寸;&QUOT;直径QUOT; &安培; ''"
它在NoMatch上出现了错误

起床去吧
http://www.***.com/watch?v=6HxNGyE3zng



沙拉,

感谢您的测试。是的,该语法正常工作,因为

单引号分隔符不在搜索字符串中。你可以尝试

问题语法:


sCriteria =" TestFld ="" 24""""直径"


以上是有效的语法,但是如果

TestFld被编入索引,则无法找到匹配项。如果NoMatch为True则移除索引并查看是否

NoMatch现在为假。

Rick Collard
www.msc-lims.com