如何在 ms-access VBA 中检索表的 odbc 数据库名称
Posted
技术标签:
【中文标题】如何在 ms-access VBA 中检索表的 odbc 数据库名称【英文标题】:How to retrieve the odbc database name of tables in ms-access VBA 【发布时间】:2009-07-28 09:46:44 【问题描述】:我有一个 ms-access 数据库和几个 ODBC 链接表。
因为我有两套 ODBC 数据库,一套用于生产,另一套用于开发,它们有不同的名称开发和生产。
如何使用 VBA 获取链接表的 odbc 信息?
【问题讨论】:
您需要哪些 ODBC 信息?这决定了哪种方法最有效。 【参考方案1】:使用表的本地名称,您可以在 MSysObjects 系统表(通常是隐藏的)中查询表的外部名称。
SELECT MSysObjects.ForeignName
FROM MSysObjects
WHERE (((MSysObjects.Name)="LocalTableName"));
如果您需要有关外部表的更多信息,请尝试从同一个表中解析“连接”列。
【讨论】:
官方不支持使用系统表,因此可以说是不安全的,例如他们可能会在未来的版本中发生变化。我在 Access2007 ACE .accdb 文件上尝试了此操作并得到错误,“无法读取记录;对‘MSysObjects’没有读取权限。”考虑到 .accdb 格式的用户级安全性已被删除,是否有解决方法?【参考方案2】:事实上,您可以使用 ODBC 连接到 .mdb 文件,就好像它是一个 Access 数据库一样。链接的表将显示在该 ODBC 连接中,并且可以以全 ODBC 速度访问。
这样做的好处是您的程序甚至不必知道表是否是链接表。很高兴将所有这些系统管理员级别的详细信息包含在一个地方。
【讨论】:
【参考方案3】:我确定来源的常用方法是重命名表,就像您对本机表一样。我可以添加一个后缀或前缀,例如tblTrombone_DEV
和tblTrombone_PROD
。
【讨论】:
以上是关于如何在 ms-access VBA 中检索表的 odbc 数据库名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ms-access 2007 VBA 中计算 mod 97
如何通过 MS-Access VBA 中的 TextBox.OnKeyUp 属性传递 KeyCode
使用 vba 在 MS-Access 前端中来自 MySQL 存储过程的多个结果集?