我刚开始访问并且无法使事情有效...... 尝试创建简单的子打开excell sheet并将一些值与访问中的表进行比较。 我使用此链接作为参考: http://www.utteraccess.com/wiki/index.php/Recordsets_for_Beginners
Private Sub Command2_Click()
Dim wb As Workbook
Set wb = openXLS
If Not wb Is Nothing Then
Dim rcs As DAO.Recordset
Dim db As Database
Set db = CurrentDb
Set rcs = db.OpenRecordset(TABLE_PRODUCTS)
Dim itemNo As String
For i = 1 To tools.LRow(wb.Sheets("Sheet1"), "A")
itemNo = wb.Sheets("Sheet1").Cells(i, "A").Value
rcs.FindFirst "ItemNo = " & itemNo 'error here, runtime error 3251
'operation is not supported for this type of object
If rcs.NoMatch = True Then
MsgBox "nomatch"
Else
MsgBox "OK"
End If
Next i
wb.Close
rcs.Close
Set wb = Nothing
Set rcs = Nothing
End If
End Sub
openXLS
是一个打开并返回workbook
的函数。
LRow
返回列
我得到运行时错误3251这种类型的对象不支持操作(在coments中标记)
答案 0 :(得分:1)
您不能将FindFirst与表类型记录集一起使用。您需要明确指定动态集记录集: -
Set rcs = db.OpenRecordset(TABLE_PRODUCTS, dbOpenDynaset)
答案 1 :(得分:0)
你应该这样做因为我认为你没有在记录集中获得任何记录
if not rcs.EOF then
rcs.FindFirst "ItemNo = " & itemNo 'error here, runtime error 3251
'operation is not supported for this type of object
If rcs.NoMatch = True Then
MsgBox "nomatch"
Else
MsgBox "OK"
End If
end if
<强>更新强>
您可以尝试使用搜索方法而不是findfirst
rcs.Seek "=", itemNo
更新2
首先设置主要ID的索引,如
rcs.index= "Id" -- do this after you create DAO recordset
然后试试这个
rcs.Seek Comparison:="=", itemNo:=itemNo