我有一个包含我可以连接和查询的所有订单的数据库。另外,我有一个文本文件,其中包含我可以连接和查询的最后一个数据库查询的顺序。我需要能够在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
答案 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一个关于文本文件的查询示例
我认为你应该添加路径
答案 1 :(得分:0)
我的快速和肮脏的解决方案是创建一个包含两张纸的辅助XL文件。一个工作表查询文本文件,另一个工作表查询数据库。每次打开辅助XL文件时都会运行查询。我在主XL文件中的两个辅助工作表上有一个左连接查询我想要过滤数据。这是一种解决方法,但它确实有效。我认为我遇到的问题是Jet OLEDB提供程序不支持查询SQL服务器,SQL OLEDB不支持查询文本文件。如果有人知道提供者同时做这两件事我会非常感激。