如何在 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_DEVtblTrombone_PROD

【讨论】:

以上是关于如何在 ms-access VBA 中检索表的 odbc 数据库名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ms-access 2007 VBA 中计算 mod 97

MS-Access 报告在执行时显示设计视图

如何通过 MS-Access VBA 中的 TextBox.OnKeyUp 属性传递 KeyCode

使用 vba 在 MS-Access 前端中来自 MySQL 存储过程的多个结果集?

如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性

如何将日期从 C# 存储到 MS-Access 以及如何检索它?