ADO 1.x/2.0的Find方法是不支持AND、OR这样的逻辑操作符。如果直接使用rs.Find "姓名='abc' AND城市='def'"会产生3001号错误。
你可以用Clone建立一个Recordset对象,然后利用Filter属性。下面是一个例子
Public Sub Multi_Find( _
ByRef oRs As ADODB.Recordset, _
sCriteria As String)
Dim clone_rs As ADODB.Recordset
Set clone_rs = oRs.Clone
clone_rs.Filter = sCriteria
If clone_rs.EOF Or clone_rs.BOF Then
oRs.MoveLast
oRs.MoveNext
Else
oRs.Bookmark = clone_rs.Bookmark
End If
clone_rs.Close
Set clone_rs = Nothing
End Sub
调用方法为
Multi_Find rs, "姓名='abc' AND 城市='def'"
至于如果等号右端是变量应该如何写,可以这样:
Multi_Find rs, "姓名='" +sName +"' AND 城市='" +sCity +"'"