【问题标题】:Programatically create ODBC connection and link tables in MS Access在 MS Access 中以编程方式创建 ODBC 连接和链接表
【发布时间】:2010-06-23 07:30:40
【问题描述】:

我们使用 MS Access 作为 Oracle 的报告前端。数据通过 ODBC 连接访问,Access to Oracle 中有两个链接表是原始数据表。我希望能够设置连接并从 Access 文件中链接表。这样用户就不必担心为 ODBC 连接设置 DSN(他们中的大多数不是非常技术性的用户,并且需要手动操作),我们最终可以让 Access 文件指向不同的测试环境并生成报告。

是否可以在打开文件时动态创建数据库连接,是否可以动态更改链接表链接到的位置?

【问题讨论】:

    标签: oracle ms-access odbc dsn


    【解决方案1】:

    您需要来自 Access 的无 DSN 链接表连接。这是可能的,我已经做到了,但我没有代码。我认为它类似于以下内容(这使用 SQL Server 源,但 Oracle 的连接字符串会略有不同)。要在启动时创建表,您需要在尝试再次创建它们之前检查每个 tabledef 是否存在,并在 Access 数据库打开时调用如下所示的子例程。

    Function LinkTables()
        Dim DB As Database, tDef As TableDef
        Set DB = CurrentDb
        Set tDef = DB.CreateTableDef("YourAccessLinkedTableNameHere")
        tDef.Connect = "ODBC;Driver={SQL Server};Server=srvname;Database=dbname;UID=sqluserid;PWD=sqlpwd"
        tDef.SourceTableName = "dbo.YourSourceTableNameHere"
        DB.TableDefs.Append tDef
    End Function
    

    【讨论】:

    • 请注意,每个数据库的连接字符串格式都不同。在这里寻找参考:carlprothman.net/Default.aspx?tabid=81
    • 如果您不需要了解Access的UI层发生了什么,那么将:Set DB = CurrentDb - 替换为:Set DB = Workspaces(0).Databases(0)或:设置 DB = dbEngine(0)(0) 因为它要快得多;快五千倍。
    【解决方案2】:

    我在定义了 DSN 的工作站上进行编程,然后在分发用于生产用途之前,运行 Doug Steele's code to convert all the DSN-based connect strings to be DSN-less 的变体。

    【讨论】:

      最近更新 更多