DAO.Recordset中的参数无效

时间:2014-07-01 09:09:52

标签: vba ms-access

我正面临一个小问题,我似乎无法解决这个问题。 我想使用vba检查两个表之间的重复项,而不是使用SQL。 所以,我所做的是创建两个记录集。每个表一个,只需检查我是否可以在一个记录集中找到文档编号,同时循环访问另一个记录集。

我每次得到的错误都在.FindFirst行中。它告诉我,我使用的是无效的参数。 (错误3001)。 rscurrent![文档编号]始终返回一个数字。 我试图通过调暗字符串和双倍来做到这一点,但似乎都不起作用。

我在这里使用了一种错误的思维方式,还是我只是缺少一些语法?再一次,我知道如何在SQL中执行此操作,这更多是为了满足我对vba的好奇心并检查可能的性能改进。

无论如何,提前致谢!

Sub comparemails()
Dim rscurrent As DAO.Recordset
Dim rscheck As DAO.Recordset

Set rscurrent = CurrentDb.OpenRecordset("Tbl_DNFAILURE", dbOpenDynaset)
Set rscheck = CurrentDb.OpenRecordset("Tbl_Archive", dbOpenDynaset)

With rscurrent
    Do Until .EOF
            With rscheck
                .MoveFirst
                .FindFirst rscurrent![Document Number]
                    If .NoMatch = False Then
                        rscurrent.Delete
                    End If
            End With
        .MoveNext
    Loop
End With

rscurrent.Close
rscheck.Close
Set rscurrent = Nothing
Set rscheck = Nothing
End Sub

1 个答案:

答案 0 :(得分:4)

FindFirst需要一个字符串来定位记录。它类似于SQL语句中的WHERE子句,但没有单词WHERE。

例如:

rstEmployees.FindFirst "Age > 30"

您的代码没有说明它应与rscurrent匹配的哪个字段![文档编号]。你必须有像

这样的东西
.FindFirst "DocumentNumber = " & rscurrent![Document Number]