左连接来自两个不同服务器上的两个不同数据库的两个表,其中vba使用ADODB连接

时间:2012-11-02 12:48:24

标签: text excel-vba database-connection vba excel

我有一个包含我可以连接和查询的所有订单的数据库。另外,我有一个文本文件,其中包含我可以连接和查询的最后一个数据库查询的顺序。我需要能够在VBA中加入这两个。我对数据库没有任何问题,因为它在连接字符串中,但我似乎无法将文本文件路径传递给SQL字符串而没有获取和无效的对象错误。我是SQL新手并连接到文件。任何帮助将不胜感激。

我正在尝试执行以下操作:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我的快速和肮脏的解决方案是创建一个包含两张纸的辅助XL文件。一个工作表查询文本文件,另一个工作表查询数据库。每次打开辅助XL文件时都会运行查询。我在主XL文件中的两个辅助工作表上有一个左连接查询我想要过滤数据。这是一种解决方法,但它确实有效。我认为我遇到的问题是Jet OLEDB提供程序不支持查询SQL服务器,SQL OLEDB不支持查询文本文件。如果有人知道提供者同时做这两件事我会非常感激。