在MS Access 2010中,我试图创建到Oracle表的链接表。
当我通过MS Access菜单使用传统的方式进行操作时:
外部数据> ODBC数据库>通过创建链接来链接到数据 桌子
我看不到我应该能够选择的Oracle服务器上的表。该表单为空,即使我知道服务器上有很多表。
这是什么问题?
我被迫使用的ODBC连接是否是控制面板下的“ ODBC数据源管理员”概述中的系统DSN 。
注意:连接正在其他程序中工作,所以不是问题。
PS:我当然可以通过VBA代码来完成它,可以按如下所示进行操作:
从此处获取的模板代码:https://www.techonthenet.com/access/modules/link_table.php
这里是链接中的模板代码:
DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;DSN=AAAA;UID=BBBB;PWD=DDDD;SERVER=CCCC", acTable, "schema.table_name", "Access_table_name", False, False
这里是链接的评论:
请注意,您需要自定义上面的代码行,因此
AAAA是您设置的ODBC数据源的名称。 BBBB是 您将用于登录Oracle的用户名。 CCCC是 您的Oracle服务器。 DDDD是用于登录的密码 甲骨文schema.table_name是您希望链接的Oracle表 至。例如,“ collect.suppliers”。 Access_table_name是名称 您希望Access分配给链接表。例如, “供应商”。
答案 0 :(得分:1)
使用菜单时,您需要在DSN中预先指定一个数据库(连接字符串中的Dbq参数)。
如果您未预先指定数据库,则MS Access将不知道在哪个数据库中查找表,并且它不会执行所有或所有它有权访问的操作,因此它根本不会执行。
>答案 1 :(得分:1)
确保ODBC驱动程序与您的Access版本匹配
32位访问权限<-> 32位ODBC
64位访问<-> 64位ODBC
答案 2 :(得分:1)
您在这里有一些很好的评论。如果从控制面板启动ODBC面板,它将启动ODBC管理器的x64位版本。但是,大多数版本的Access是x32位。
确保使用正确位大小的ODBC管理器的最简单方法是让Access为您启动ODBC面板。 (如果您右键单击访问快捷方式并选择以管理员身份运行,通常会很有帮助。
正如其他人所述,在设置DSN时,请执行以下两项操作: 确保在创建连接期间选择数据库(默认情况下通常为system,该数据库将显示一堆系统表,但不显示任何系统表-您想要选择/选择数据库。应显示该数据库)在下拉菜单中。
在几个面板中,SQL服务器(不是oracle)将在您选择数据库的地方显示此信息:
非常重要,您还需要选中“保存密码”框-仅在创建新DSN的过程中出现-如果您错过此密码,则重新链接将永远不会提示您输入密码-因此请不要忘记此选项:
无论您使用哪种ODBC,上面的面板都会显示-别忘了检查保存密码。
下一步: 创建一个文件DSN。这样做的原因是Access为您将其自动转换为无DSN的连接。这意味着您可以将数据库移至其他计算机,甚至删除创建的DSN。访问仅在链接时使用DSN,此后不需要(但是,此建议仅适用于dsn文件-因此,您要创建它。)