我有一个ms-access数据库和其中的多个ODBC链接表。由于我有2套ODBC数据库,一套用于生产,另一套用于开发,它们有不同的名称开发和生产。如何检索ms-access VBA中的表的odbc数据库名称
如何使用VBA获取链接表的odbc信息?
我有一个ms-access数据库和其中的多个ODBC链接表。由于我有2套ODBC数据库,一套用于生产,另一套用于开发,它们有不同的名称开发和生产。如何检索ms-access VBA中的表的odbc数据库名称
如何使用VBA获取链接表的odbc信息?
使用表的本地名称,可以查询表的外部名称的MSysObjects系统表(通常隐藏)。
SELECT MSysObjects.ForeignName
FROM MSysObjects
WHERE (((MSysObjects.Name)="LocalTableName"));
如果您需要有关外表的更多信息,请尝试解析同一个表中的“连接”列。
官方不支持使用系统表,因此可以说是不安全的,例如他们可能会在未来版本中更改。我在Access2007 ACE.accdb文件上试过这个,得到了错误,“记录无法读取;'MSysObjects'没有读取权限。”考虑到.accdb格式的用户级安全已被删除,是否有解决方法? – onedaywhen 2009-08-01 14:06:09
实际上,您可以使用ODBC连接到.mdb文件,就好像它是Access数据库一样。链接表将显示在该ODBC连接中,并且可以以完整的ODBC速度访问。
这样做的好处是你的程序甚至不需要知道表是否链接表。将所有这些系统管理员级别的详细信息包含在一个地方很好。
我通常的方法来确定源是重命名表,就像你本地表。我可以添加一个后缀或前缀,如tblTrombone_DEV
和tblTrombone_PROD
。
你需要什么ODBC信息?这决定了哪种方法将是最有效的。 – 2009-07-28 22:14:43