我正在尝试使用recordset.Find "name =" & me.txtbox.value
。查找特定记录/行。如果我完全按照上面的搜索只使用1个变量,我可以很容易地做到这一点。
我尝试做了以下操作,因为我发现其他人已在网上完成此操作。 traceRecordset.Find "[PART_ID]=" & Me.txtSection.Value & " AND " & "[ID]= " & Me.txtCopy.Value
这是后面的确切代码行,错误不会抛出此行
Me.txtLastscrap = traceRecordset.Fields("APROPERTY_2")
在填充具有特定值的文本框时,这将为我提供更大的灵活性。似乎其他人没有尝试过这个问题。但是,我收到以下错误。
参数类型错误,不可接受 范围或相互冲突
有什么想法吗?
注意:如果我traceRecordset.Find "[PART_ID]=" & Me.txtSection.Value
它有效,它也可以与traceRecordset.Find "[ID]= " & Me.txtCopy.Value
一起使用,因此它们可以正常运行。只有在一起使用时才会引发错误。如果类型是问题,其中一个在独立使用时不起作用吗?
注意2:这是我的adodb连接线。不确定这是否有任何影响
Dim dbTrace As ADODB.Connection
Dim traceRecordset As New ADODB.Recordset
Set dbTrace = CurrentProject.Connection
traceRecordset.Open "Select * from TRACE", _
dbTrace, adOpenKeyset, adLockOptimistic, adCmdText
答案 0 :(得分:2)
根据ADO Recordset.Find documentation,
在条件中只能指定单列名称。这种方法 不支持多列搜索。
...
标准: 一个String值,包含一个语句,指定要在搜索中使用的列名,比较运算符和值。
由于您已经在Access项目中编写VBA,因此DAO的工作原理与Access 2016一样,DAO Recordset类型仍然是Forms和QueryDef对象使用的默认类型。 DAO记录集支持FindFirst,FindNext,FindPrevious和FindLast,它们都支持多列查询。这个单一的功能可能无法从ADO切换,但如果您所做的只是打开,搜索和枚举记录集行,ADO不会带来任何重大好处。