2

我有一个数据库,其中包含我可以连接和查询的所有订单。另外,我有一个文本文件,其中包含我可以连接和查询的最后一个数据库查询的命令。我需要能够在 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
4

2 回答 2

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应该做一个错误

这是对文本文件的查询示例

我认为你应该添加路径

在此处输入图像描述

于 2012-11-02T12:50:22.650 回答
0

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

于 2012-12-02T04:26:21.290 回答