【发布时间】:2014-11-14 19:11:49
【问题描述】:
我正在尝试比较 VBA 访问中的两个表,以查看其中是否有需要添加到另一个的新客户端。我开始开发比较循环,但由于某种原因它不起作用。这是说客户端 ID 字段对于一个表中的所有记录的值为 6,这是不正确的。我不确定我是否在If 语句中引用了它。对此主题的任何帮助将不胜感激。
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
更新:
由于某种原因,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 的表或查询?
-
不是那个名字,但我用那个名字在 VBA 中打开它,所以它应该没关系吧?
-
好的,我明白了。 DataDump 是一个记录集对象。不,您不能
SELECT FROM记录集。 -
哦,我明白了。所以我应该把它改成它在数据库中的表名?
-
是的,我想你想在那里使用 tableName 变量的值。