以编程方式在MS Access中创建ODBC连接和链接表

以编程方式在MS Access中创建ODBC连接和链接表

问题描述:

我们使用MS Access作为Oracle的报表前端。数据通过ODBC连接访问,Access中有两个链接表是原始数据表。我希望能够建立连接并链接Access文件中的表。这样用户就不必担心为ODBC连接设置DSN(其中大多数不是技术用户,并且需要手持这样的东西),并且我们最终可以将Access文件指向不同的测试环境并生成报告。以编程方式在MS Access中创建ODBC连接和链接表

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

你想要一个来自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 
+1

请注意,连接字符串格式对于那里的每个数据库都是不同的。在这里寻找一个参考:http://www.carlprothman.net/Default.aspx?tabid=81 – 2010-06-23 11:37:35

+1

如果你不需要知道访问的UI层发生了什么,然后替换:Set DB = CurrentDb - 到:设置DB =工作区(0)。数据库(0)或设置DB = dbEngine(0)(0)因为它相当快;速度提高了五千倍。 – 2014-10-16 19:04:12

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