无法在记录集中找到记录

时间:2014-11-14 07:27:15

标签: vba access-vba

我刚开始访问并且无法使事情有效...... 尝试创建简单的子打开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中标记)

2 个答案:

答案 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