MS Access VBA通​​过查询连接字符串错误(ODBC)

时间:2018-03-15 15:35:10

标签: sql ms-access odbc

我目前正在尝试使用连接到oracle数据库的VBA编写传递查询。使用SQL Server Passthrough query as basis for a DAO recordset in Access提供的答案作为起点,我有以下VBA代码。

Option Compare Database

Sub Test_PassThroughQuery()

Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = "ODBC;DSN=database_name;UID=username;PWD=password;DBQ=ADPR;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;MLD=0;ODA=F;"
qdf.SQL = "SELECT * FROM DATE_TABLE"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset
Debug.Print rst
rst.Close
Set rst = Nothing
Set qdf = Nothing

End Sub

但是,这会在Type mismatch上显示错误Debug.Print rst

对于连接字符串,我使用“属性”选项卡中的ODBC连接字符串。

编辑我是否错误地调用了Debug.print rst行?

1 个答案:

答案 0 :(得分:1)

创建传递查询的方法有很多种。如果要在Access中保存传递查询,可以设置CreateQueryDef的第一个参数:

Sub Test_PassThroughQuery()
    Dim qdf As DAO.QueryDef, rst As DAO.Recordset
    Set qdf = CurrentDb.CreateQueryDef("MyPassthroughQuery")
    qdf.Connect = "ODBC;DSN=database_name;UID=username;PWD=password;DBQ=ADPR;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;MLD=0;ODA=F;"
    qdf.SQL = "SELECT * FROM DATE_TABLE"
    qdf.ReturnsRecords = True
    DoCmd.OpenQuery "MyPassthroughQuery"
End Sub

这将创建一个已保存的查询,并将其打开。

您还可以在Access中查询外部数据源,它允许您使用查询设计器,并在单个查询中使用本地表和外部数据:

SELECT *
FROM [ODBC;DSN=database_name;UID=username;PWD=password;DBQ=ADPR;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;MLD=0;ODA=F;].DATE_TABLE