WHERE IN查询Access VBA中的两个记录集
问题描述:
我的第一篇文章在这里,所以我希望这是正确的领域。我目前正在试图比较两个记录集,其中一个来自Excel命名的范围,另一个来自Access数据库中的一个表。每个程序的代码是:WHERE IN查询Access VBA中的两个记录集
Set existingUserIDs = db.OpenRecordset("SELECT Username FROM UserData")
Set IDsToImport = exceldb.OpenRecordset("SELECT Username FROM Named_Range")
的问题是,我想以某种方式比较这两个记录,没有循环(有非常大量的记录)。有没有办法在这些记录集上进行连接或类似操作?
由于一个来自Excel,另一个来自Access,因此它们是两个不同的DAO数据库,所以我无法在创建记录集之前进行连接。
最终目标是我将只选择在导入表中不存在的用户名(因此在SQL查询中,它将是NOT IN(表))。
感谢您的帮助!
Regards, Bricky。
答
您可以在一个查询中比较来自两个不同来源的数据。您可以在SQL中使用IN关键字,或者更简单地说,可以链接到Access中的Excel表格(工作表),并围绕它建立查询。
编辑使用IN
SELECT * FROM CompareTable
LEFT JOIN
(SELECT * FROM [Sheet1$]
IN ''[Excel 8.0;HDR=YES;IMEX=2;DATABASE=C:\Full\Path\AndName.xls]) C
ON CompareTable.CourseKey=c.CourseKey
WHERE c.CourseKey Is Null
工作表Sheet1 $,也可以NAMED_RANGE一个例子。
我知道我可以在同一个数据库中比较两个不同的来源(例如,如果它们都在Excel工作表中,或者都在Access数据库中) - 但是如何在两个不同的数据库中查询两个不同的来源(如上面的例子)? – 2010-04-22 08:14:33
将Excel表链接到Access数据库。在2007年以前的版本中,选择文件 - >获取外部数据 - >链接表。 – Fionnuala 2010-04-22 08:28:10
我已经添加了一个使用IN的例子。 – Fionnuala 2010-04-22 08:41:59