WHERE IN在Access VBA中使用两个记录集进行查询

时间:2010-04-22 07:57:31

标签: sql excel ms-access vba recordset

我的第一篇文章,所以我希望这是正确的领域。我目前正在尝试比较2个记录集,其中一个来自Excel命名范围,另一个来自Access数据库中的表。每个代码都是:

Set existingUserIDs = db.OpenRecordset("SELECT Username FROM UserData")
Set IDsToImport = exceldb.OpenRecordset("SELECT Username FROM Named_Range")

问题是我想以某种方式比较这两个记录集,没有循环(有非常多的记录)。有没有办法在这些记录集上进行连接或类似操作?

我无法在创建记录集之前进行连接,因为一个来自Excel,另一个来自Access,因此它们是两个不同的DAO数据库。

最终目标是我将只选择要导入的访问表中尚不存在的用户名(因此在SQL查询中,它将是NOT IN(表))。

感谢您提供的任何帮助!

此致 砖石。

1 个答案:

答案 0 :(得分:3)

您可以在一个查询中比较来自两个不同来源的数据。您可以在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。