我想比较VBA访问中的两个表,看看是否有任何需要添加到另一个中的新客户端。我开始开发比较循环,但由于某种原因,它不起作用。它表示客户ID字段对于一个表中的所有记录具有值6,这是不正确的。我不确定我是否在If
声明中引用它。任何有关这个话题的帮助将不胜感激。在VBA访问中比较表
dte = InputBox("What date was the Data Dump run?", "Please Input a date")
tableName = "FN_DataDump_ALL_" & dte
Set dataDump = db.OpenRecordset(tableName, dbOpenDynaset, dbEditAdd)
Set clientTable = db.OpenRecordset("Clients", dbOpenDynaset, dbEditAdd)
With dataDump
.MoveFirst
Do
If dataDump("[Client ID]") <> clientTable("[Client ID]") Then
MsgBox (dataDump("[Client ID]"))
clientTable.MoveNext
Else: MsgBox ("Match.")
.MoveFirst
End If
Loop Until .EOF
End With
UPDATE:
出于某种原因,VBA口口声声说无法找到表DataDump,当它打开正确的一切。当它试图运行SQL时,我会抛出这个错误,所以我认为我的声明有问题。
Set db = CurrentDb
dte = InputBox("What date was the Data Dump run?", "Please Input a date")
tableName = "FN_DataDump_ALL_" & dte
Set DataDump = db.OpenRecordset(tableName, dbOpenDynaset, dbEditAdd)
Set clientTable = db.OpenRecordset("Clients", dbOpenDynaset, dbEditAdd)
MySQL = "SELECT DISTINCT CL.[Client ID] " & _
"INTO Clients " & _
"FROM Clients AS CL " & _
"Where CL.[Client ID] NOT IN (SELECT DD.[Client ID] FROM DataDump AS DD) "
更新#2:
现在它说我有一个语法错误,我为它是什么真的很困惑。
所有的"Where CL.[Client ID] NOT IN (SELECT DD.[Client ID] ""FROM"" & tableName ""as DD"") "
请问您的数据库包含一个名为* DataDump *表或查询? – HansUp 2014-11-14 20:39:12
没有具体名称,但我打开它在VBA中使用该名称,所以它应该没关系? – user3681360 2014-11-14 20:41:20
好的,我明白了。 * DataDump *是一个记录集对象。不,你不能'选择'一个记录集。 – HansUp 2014-11-14 20:42:40