2012-11-02 29 views
2

我有一個數據庫,其中包含我可以連接並查詢的所有訂單。此外,我有一個文本文件,其中包含我可以連接並查詢的最後一個數據庫查詢的順序。我需要能夠在VBA中加入這兩者。我對數據庫沒有任何問題,因爲它在連接字符串中,但似乎無法將文本文件路徑傳遞給SQL字符串而沒有獲取並且無效的對象錯誤。我不熟悉SQL並連接到文件。任何幫助,將不勝感激。使用ADODB連接將兩個不同服務器上的兩個不同數據庫中的兩個表與vba左連接

我努力做到以下幾點:

Sub Comp2TablesFrom2Databases() 

Dim rs As ADODB.Recordset 
Dim strSQL As String, strCon As String 

Set rs = New ADODB.Recordset 
rs.CursorLocation = adUseClient 
strCon = "Connection string to database" 'works fine in test code that only connects to the database 

strSQL = "SELECT * " _ 
& "FROM Database LEFT JOIN [TextFilePath] " _ 
& "ON Database.[Order No] = [TextFilePath].[Order No] " _ 
& "WHERE [TextFilePath].[Order No] IS NULL;" 

rs.Open strSQL, strCon 

'do stuff 

rs.Close 
Set rs = Nothing 

End Sub 

回答

0

你忘了之前"

空間試試這個

strSQL = "SELECT * " _ 
& "FROM Database LEFT JOIN [TextFilePath] " _ 
& "ON Database.[Order No] = [TextFilePath].[Order No] " _ 
& "WHERE [TextFilePath].[Order No] IS NULL;" 

所以你的查詢看起來像:

SELECT * FROM Database LEFT JOIN [TextFilePath] ON Database.[Order No] = [TextFilePath].[Order No]WHERE [TextFilePath].[Order No] IS NULL; 

所以[Order No]WHERE應該做的錯誤

Here's上的文本文件

我想你應該添加路徑

enter image description here

+0

感謝您的快速回復。缺乏空間是由於我裁剪SQL語句發佈。真正的問題是,我無法找到一個SQL字符串應該查找哪個服務器上的數據庫以及本地驅動器上的文本文件。我都可以單獨查詢,但我需要能夠進行左連接。 –

+0

應該只是將文本文件路徑添加爲表格? –

+0

我從來沒有在文本文件中做過。你是如何分開的? – Marc

0

我的急速下降和骯髒的解決方案是創建一個查詢的例子一個包含兩張紙的輔助XL文件。一張表查詢文本文件,另一張查詢數據庫。每次打開輔助XL文件時都會運行查詢。我在XL文件的兩個輔助工作表上有一個左連接查詢,我想要過濾的數據。這是一個解決方法,但它的工作原理。我認爲我遇到的問題是Jet OLEDB提供程序不支持查詢SQL服務器,而SQL OLEDB不支持查詢文本文件。如果有人知道這兩個提供者,我會非常感激。

相關問題