MS-Access ODBC 连接到 Oracle for SQL

Posted

技术标签:

【中文标题】MS-Access ODBC 连接到 Oracle for SQL【英文标题】:MS-Access ODBC Connection to Oracle for SQL 【发布时间】:2009-03-12 23:20:14 【问题描述】:

我正在尝试使用 Access 2003 连接到 Oracle 数据库。

我想使用 ODBC 连接并且我想设置它以便用户不需要输入密码。

我遇到的一个问题是我的 sql 查询使用 INTERFACE.Products 并且 Access 看到了句点并认为我正在尝试打开文件。 IE Interface.MDB,当那是我的 sql 查询的一部分时。

Option Compare Database

Function OracleConnect() As Boolean

    Dim ws As Workspace
    Dim db As Database
    Dim LConnect As String
    Dim myQuery As String
    Dim myRS As Recordset


    On Error GoTo Err_Execute

    LConnect = "ODBC;DSN=Oracle;UID=user;PWD=password;"

    'Point to the current workspace
    Set ws = DBEngine.Workspaces(0)

    'Connect to Oracle
    Set db = ws.OpenDatabase("", False, True, LConnect)

    myQuery = "Select * from INTERFACE.Products"

    Set rst = db.OpenRecordset(myQuery)


    rst.Close
    db.Close


    Exit Function

Err_Execute:
    MsgBox MsgBox("Error Number:  " & Err.Number & " Message: " & Err.Description)

End Function

【问题讨论】:

【参考方案1】:

你能不能试试:

Set rst = db.OpenRecordset(mQuery, dbOpenSnapshot, dbSQLPassThrough)

这只会将查询逐字发送到 Oracle 数据库。

在Access documentation 对应的OpenRecordset 中,您会找到以下说明:

如果您在 Microsoft Access 工作区中打开 Recordset 并且未指定类型,OpenRecordset 会创建一个表类型的 Recordset。

这可能是您遇到错误的根源。

作为一项规则,我建议始终在OpenRecordset 的参数中明确表示:默认行为并不总是一致的,它可能会产生奇怪的错误。

我不确定您的设计,但让事情变得更容易的一种方法可能是在 Access 中简单地创建链接表。 在这种情况下,您将能够针对您的 INTERFACE.Products Oracle 表编写查询,就好像是本地 Products 表一样。 它还可以让您不必自己管理连接。

【讨论】:

【参考方案2】:

您正在创建的记录集必须使用用 Access SQL 编写的查询。该表必须是 Access 表(在 mdb 中定义的表)。它可以是本地表或链接表。 Access 表不能有“.”。 (点)在它的名字中。如果您要在 Access 中链接 Oracle 表 INTERFACE.Products,它将是 INTERFACE_Products(Access 将用“_”替换远程数据库表名中的非法字符),除非您在 Access 中将其重命名。因此,您的查询应该是“从 INTERFACE_Products 中选择 *”

可以使用 Oracle SQL 创建记录集,但必须使用 Pass-Through 查询创建。

【讨论】:

以上是关于MS-Access ODBC 连接到 Oracle for SQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 ODBC 连接到 MYSQL 在 MS-Access 中运行 SQL 时出错

如何让 ms-access 以其他用户身份连接到 ms-sql?

在 Windows 10 上通过 ODBC 连接到 Access 数据库时出现 IIS 500 错误

使用 ODBC 和用户输入连接字符串在 C# 应用程序中连接到 Oracle 11g

ODBC连接到多个Oracle服务器(Listener.ora配置。)

使用 JDBC-ODBC 桥连接到 SQLServer