我们使用 MS Access 作为 Oracle 的报告前端。数据通过 ODBC 连接访问,Access to Oracle 中有两个链接表是原始数据表。我希望能够设置连接并从 Access 文件中链接表。这样用户就不必担心为 ODBC 连接设置 DSN(他们中的大多数不是非常技术性的用户,并且需要手动操作),我们最终可以让 Access 文件指向不同的测试环境并生成报告。
是否可以在打开文件时动态创建数据库连接,并且可以动态更改链接表链接到的位置?
您需要来自 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
我在定义了 DSN 的工作站上进行编程,然后在分发以供生产使用之前,运行Doug Steele 代码的变体以将所有基于 DSN 的连接字符串转换为 DSN-less。