WHERE IN 在 Access VBA 中使用两个记录集进行查询
Posted
技术标签:
【中文标题】WHERE IN 在 Access VBA 中使用两个记录集进行查询【英文标题】:WHERE IN Query with two recordsets in Access VBA 【发布时间】:2010-04-22 07:57:30 【问题描述】:我在这里的第一篇文章,所以我希望这是正确的区域。我目前正在尝试比较 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(table))。
感谢您提供的任何帮助!
问候, 砖头。
【问题讨论】:
【参考方案1】:您可以在一个查询中比较来自两个不同来源的数据。您可以在 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 数据库中) - 但是我如何查询两个不同的来源两个不同的数据库(如上例)? 将 Excel 表链接到 Access 数据库。在 2007 之前的版本中,选择 File->Get External Data->Link table。 我添加了一个使用 IN 的示例。以上是关于WHERE IN 在 Access VBA 中使用两个记录集进行查询的主要内容,如果未能解决你的问题,请参考以下文章
在access中用vba如何把SQL语句查询到的一个值赋给变量?
如何使用SQL更新VBA Access中包含NULL值的列?