更新时间:2023-02-07 09:53:48
如果QueryDef没有有效的"ODBC;..."
连接字符串作为其.Connect
属性,您将收到该错误消息.这就是Access将QueryDef识别为传递查询的方式.
You will receive that error message if the QueryDef does not have a valid "ODBC;..."
connection string as its .Connect
property. That is how Access identifies the QueryDef as a pass-through query.
如果已经定义了ODBC链接表,则可以将其.Connect
属性值用作QueryDef的.Connect
属性,如下所示:
If you already have an ODBC linked table defined, you can use its .Connect
property value for the .Connect
property of the QueryDef, like so:
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.CreateQueryDef("")
qdf.Connect = cdb.TableDefs("dbo_table1").Connect ' grab .Connect string from linked table
qdf.sql = "exec [HS].[spGetXMLExtract]"
qdf.ReturnsRecords = False
qdf.Execute
...,或者,如果存储过程确实返回了结果集:
... or, if the stored procedure does in fact return a result set:
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.CreateQueryDef("")
qdf.Connect = cdb.TableDefs("dbo_table1").Connect ' grab .Connect string from linked table
qdf.sql = "exec [HS].[spGetXMLExtract]"
qdf.ReturnsRecords = True
Dim rst As DAO.Recordset
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Do Until rst.EOF
' do stuff
rst.MoveNext
Loop
rst.Close