【问题标题】:How to retrieve the odbc database name of tables in ms-access VBA如何在 ms-access VBA 中检索表的 odbc 数据库名称
【发布时间】:2009-07-28 09:46:44
【问题描述】:

我有一个 ms-access 数据库和几个 ODBC 链接表。

因为我有两套 ODBC 数据库,一套用于生产,另一套用于开发,它们有不同的名称开发和生产。

如何使用 VBA 获取链接表的 odbc 信息?

【问题讨论】:

  • 您需要哪些 ODBC 信息?这决定了哪种方法最有效。

标签: ms-access 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

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2010-09-17
      • 2010-11-30
      • 1970-01-01
      • 2011-07-27
      • 2023-03-15
      相关资源
      最近更新 更多