2010-04-22 65 views
0

我的第一篇文章在這裏,所以我希望這是正確的領域。我目前正在試圖比較兩個記錄集,其中一個來自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。

回答

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

+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