- 26.1.11.1. 如何设置Microsoft Access,使之能够与使用MyODBC的MySQL一起工作?
- 26.1.11.2. 如何将表或查询从Access导出到MySQL?
- 26.1.11.3. 如何导入MySQL数据库表或将其链接到Access?
- 26.1.11.4. 链接表的结构或位置已改变,我能看到链接表中的这些变化吗?
-
26.1.11.5. 当我在链接表中插入记录或更新其中的记录时,遇到“#DELETED#”
- 26.1.11.6. 如何处理写冲突或行位置错误?
- 26.1.11.7. 无论何时,当我从Access 97导出表时,出现陌生的语法错误
- 26.1.11.8. 编辑记录时,Access返回“另一用户更改了你修改的记录”
- 26.1.11.9. 如何在Access中俘获ODBC登录错误消息?
- 26.1.11.10. 如何优化Access与MyODBC一起工作的性能?
- 26.1.11.11. 我有很长的表,MyODBC访问这些Access表的最佳配置是什么?
- 26.1.11.12. 如何为ODBC连接设置QueryTimeout值?
- 26.1.11.13. INFO:用于Access和MySQL间导入/导出的工具
要想使Microsoft Access能够与MyODBC一起工作,在你的客户端PC上必须完成下述操作。
1. 如果你正在使用Access 2000,应从下述地址获取并安装最新的(2.6版或更高)Microsoft MDAC(Microsoft数据访问组件),http://www.microsoft.com/data/。它更正了Access在将数据导出至MySQL时存在的一个缺陷,未指定表名和列名。另一种解决该缺陷的方法是,升级到MyODBC 2.50.33和MySQL 3.23.x, 它们共同提供了避免该问题的一种方式。
此外,你还应获取并应用Microsoft Jet 4.0 Service Pack 5 (SP5),可在下述地址找到它:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q239114。它修正了某些情况下在Access中列被标注为“#DELETED#”的问题。
注释: 如果你正使用MySQL 3.22,必须安装MDAC补丁,并使用MyODBC 2.50.32或2.50.34或更高版本以解决该问题。
2. 安装最新版MySQL,http://dev.mysql.com/downloads/。
3. 安装最新版MyODBC 3.51或2.50,http://dev.mysql.com/downloads/connector/odbc/。
4. 对于所有版本的Access,应启用“MyODBC返回匹配行”选项。
5. 通过MyODBC,将Access用作MySQL服务器的前端程序。
除非已安装了MyODBC,否则不能将表或查询导出到MySQL。
要想将表从Access导入MySQL,请遵循下述说明:
1. 打开Access数据库或Access项目时,出现“数据库”窗口。其中显示了用于创建新数据库对象和打开已有对象的快捷方式。
2. 点击打算导出的表名或查询名,然后在“文件”菜单中选择“导出”。
3. 在“导出对象类型对象名至”对话框中,在“另存为类型”框中,选择“ODBC数据库()”,如下图所示:
4. 在“导出”对话框中,输入文件名(或使用建议的文件名),然后选择OK。
5. 显示“选择数据源”对话框,其中列出了为计算机上已安装的各ODBC驱动定义的数据源。点击“文件数据源”或“机器数据源”选项卡,然后双击打算导出至的MyODBC或MyODBC 3.51数据源。关于为MyODBC定义新数据源的方法,请参见26.1.9.2节,“在Windows上配置MyODBC DSN”。
Microsoft Access通过该数据源连接至MySQL服务器,并导出新的表和/或数据。
除非已安装了MyODBC,否则不能将表或查询导出到MySQL数据库。
要想将表从MySQL导入或链接到Access,请采取下述步骤:
1. 打开数据库,或切换到“数据库”窗口以打开数据库。
2. 要想导入表,在“文件”菜单上,将鼠标指针指向“获取外部数据”,然后点击“导入”。要想链接表,在“文件”菜单上,将鼠标指针指向“获取外部数据”,然后点击“链接表”。
3. 在“导入”(或“链接”)对话框中,在“文件类型”框中选择“ODBC Databases ()”。在“选择数据源”对话框中,列出了定义的数据源。显示“选择数据源”对话框,其中列出了为安装在计算机上的任何ODBC驱动定义的数据源。点击“文件数据源”或“机器数据源”选项卡,然后双击打算导出至的MyODBC或MyODBC 3.51数据源。关于为MyODBC或MyODBC 3.51驱动定义新数据源的方法,请参见26.1.9.2节,“在Windows上配置MyODBC DSN”。
4. 如果所选的数据源要求登录,请输入登录ID和密码(可能还需要额外信息),然后点击OK。
5. Microsoft Access通过ODBC数据源连接到MySQL服务器,并显示可导入或链接的表清单。
6. 点击希望导入或链接的每个表,然后点击OK。如果你正在链接1个表,但它没有唯一识别各条记录的索引,Microsoft Access将显示链接表中的字段列表。点击能唯一标识各记录的字段或字段组合,然后点击OK。
是。当链接表的结构或位置发生变化时,可采取下述步骤查看或刷新链接。“链接表管理器”列出了当前链接的所有表的路径。
要想查看或刷新链接:
1. 打开包含表链接的数据库。
2. 在“工具”菜单上,指向“加载项”(在Access 2000或更新版本中为“数据库实用工具”),然后点击“链接表管理器”。
3. 选中打算刷新链接的表的复选框。
4. 点击OK,刷新链接。
Microsoft Access将确认成功的刷新操作,或者,如果未找到表,将显示“选择<table name>新位置”对话框,在该对话框中,可指定表的新位置。如果你所选择的数个表已被移至你所指定的新位置,链接表管理器将针对所有所选的表搜索该位置,并一次性地更新所有链接。
要想更改链接表集合的路径:
1. 打开包含表链接的数据库。
2. 在“工具”菜单上,指向“加载项”(在Access 2000或更新版本中为“数据库实用工具”),然后点击“链接表管理器”。
3. 选中“对新位置始终提示”复选框。
4. 选中打算更改链接的表的复选框,然后点击OK。
5. 在“选择<table name>新位置”对话框中,指定新位置,点击“打开”,然后点击OK。
如果在Access中插入或更新的记录显示为“#DELETED#”:
· 如果你正在使用Access 2000,应从下述地址获取并安装最新的(2.6版或更高)Microsoft MDAC(Microsoft数据访问组件),http://www.microsoft.com/data/。它更正了Access在将数据导出至MySQL时存在的一个缺陷,未指定表名和列名。另一种解决该缺陷的方法是,升级到MyODBC 2.50.33和MySQL 3.23.x, 它们共同提供了避免该问题的一种方式。
此外,你还应获取并应用Microsoft Jet 4.0 Service Pack 5 (SP5),可在下述地址找到它:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q239114。它修正了某些情况下在Access中列被标注为“#DELETED#”的问题。
注释: 如果你正使用MySQL 3.22,必须安装MDAC补丁,并使用MyODBC 2.50.32或2.50.34或更高版本以解决该问题。
· 对于所有版本的Access,应启用“MyODBC返回匹配行”选项。对于Access 2.0,还应额外启用“模拟ODBC 1.0”选项。
· 在希望能够更新的所有表中,均应有时间戳。为了获得最大的可移植性,在列声明中不要使用长度规范。也就是说,应使用TIMESTAMP,而不是TIMESTAMP(n), n < 14。
· 在表中应有1个主键。如不然,新的或更新的行可能会显示为“#DELETED#”。
· 仅应使用DOUBLE浮点字段。与单精度浮点进行比较时,Access将失败。其征兆是新的或更新的行可能会显示为“#DELETED#”,或无法找到或更新行。
· 如果你正使用MyODBC来链接到有BIGINT列的表,结果会显示为“#DELETED”。排除它的解决方案是:
o 有1个以TIMESTAMP作为数据类型的虚拟列。
o 在“ODBC DSN管理器”的连接对话框中选择“将BIGINT列更改为INT”选项。
o 删除与Access的表链接,并重新创建它。
旧记录仍将显示为“#DELETED#”,但新增/更新的记录会恰当显示。
对于某些程序,可能会出现该错误: 另一用户更改了你所修改的记录。在大多数情况下,可通过下述措施解决该问题:
· 如果主键不存在,为表添加1个主键。
· 如果时间戳不存在,添加1个时间戳列。
· 仅应使用DOUBLE浮点字段。与单精度浮点值比较时,某些程序会出错。
如果这些措施未能解决问题,首先应从ODBC管理器生成1个日志文件(请求来自ODBC ADMIN的日志时获得的日志文件),以及1个MyODBC日志,使用它们找出出错的原因。具体介绍,请参见26.1.9.7节,“获取ODBC跟踪文件”。