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一个例子。

+0

我知道我可以在同一个数据库中比较两个不同的来源(例如,如果它们都在Excel工作表中,或者都在Access数据库中) - 但是如何在两个不同的数据库中查询两个不同的来源(如上面的例子)? – 2010-04-22 08:14:33

+0

将Excel表链接到Access数据库。在2007年以前的版本中,选择文件 - >获取外部数据 - >链接表。 – Fionnuala 2010-04-22 08:28:10

+0

我已经添加了一个使用IN的例子。 – Fionnuala 2010-04-22 08:41:59