点击下载此附件
将一个表中的数据更新到另一个表
在需要将一个表中的数据更新到另一个表时,需考虑下面的规则:源字段和目标字段的数据类型必须匹配或兼容。
此外,在将一个表中的数据更新到另一个表并使用兼容的数据类型替代匹配的数据类型时,Access 会转换目标表中那些字段的数据类型。因此,目标字段中的一些数据可能会被截断(删除)。本文后面数据类型转换的限制一节列出了能够以及不能转换数据类型的情况。本节中的该表还说明了在哪些情况下转换数据类型可能更改或清除字段中的部分或全部数据,以及哪些数据可能被清除。
将一个表中的数据更新到另一个表的过程包括下面几个主要步骤:
1、创建更新查询并向该查询添加源表和目标表。
2、在包含相关信息的字段上联接这些表。
3、将目标字段的名称添加到查询设计网格的“字段”行。
4、通过使用下面的语法将源字段的名称添加到查询设计网格的“更新到”行:[source_table].[source_field]。
本节中的步骤假设使用两个相似的表。此示例中,“顾客”表位于您刚继承的数据库中,其中包含比“客户”表更新的数据。您可以看到一些经理的姓名和地址已发生更改。因此,您决定使用“顾客”表中的数据更新“客户”表。
“顾客”表
顾客 ID
|
名称
|
地址
|
城市
|
省/市/自治区
|
邮政编码
|
国家/地区
|
电话
|
联系人
|
1
|
博文科学博物馆
|
西直门大街 1 号
|
宁波
|
江苏
|
12345
|
中国
|
(505) 555-2122
|
刘鹏
|
2
|
蓝天航空公司
|
南京路 52 号
|
大连
|
辽宁
|
23456
|
中国
|
(104) 555-2123
|
王力
|
3
|
谷裕酿酒厂
|
春西路 3122 号
|
咸阳
|
陕西
|
34567
|
中国
|
(206) 555-2124
|
张宏
|
4
|
康威医药有限公司
|
玉林街 1 号
|
昆明
|
云南
|
NS1 EW2
|
中国
|
(171) 555-2125
|
周军
|
5
|
光远商贸
|
杨柳巷 2 号
|
哈尔滨
|
|
56789
|
中国
|
(7) 555-2126
|
费雪梅
|
6
|
联合信息技术有限公司
|
3123 75th St. S.
|
咸阳
|
陕西
|
34567
|
中国
|
(206) 555-2125
|
王华
|
7
|
星源图文公司
|
人民大街 1587 号
|
长春
|
辽宁
|
87654
|
中国
|
(916) 555-2128
|
杨阳
|
8
|
立特威公司
|
长江西路 3 号
|
重庆
|
四川
|
31415
|
中国
|
(503) 555-2129
|
张明森
|
9
|
乖宝贝玩具公司
|
青羊路 4 号
|
重庆
|
四川
|
31415
|
中国
|
(503) 555-2233
|
宋菲菲
|
“客户”表
客户 ID
|
名称
|
地址
|
城市
|
省/市/自治区
|
邮政编码
|
国家/地区
|
电话
|
经理
|
1
|
博文科学博物馆
|
西直门大街 1 号
|
宁波
|
江苏
|
12345
|
中国
|
(505) 555-2122
|
李斯闻
|
2
|
蓝天航空公司
|
南京路 52 号
|
大连
|
辽宁
|
23456
|
中国
|
(104) 555-2123
|
王力
|
3
|
谷裕酿酒厂
|
春西路 3122 号
|
咸阳
|
陕西
|
34567
|
中国
|
(206) 555-2124
|
张宏
|
4
|
康威医药有限公司
|
玉林街 1 号
|
昆明
|
云南
|
NS1 EW2
|
中国
|
(171) 555-2125
|
周军
|
5
|
光远商贸
|
丰收路 134 号
|
哈尔滨
|
|
56789
|
中国
|
(7) 555-2126
|
费雪梅
|
6
|
联合信息技术有限公司
|
3123 75th St. S.
|
咸阳
|
陕西
|
34567
|
中国
|
(206) 555-2125
|
霍奎廷
|
7
|
星源图文公司
|
南关大街 67 号
|
长春
|
辽宁
|
87654
|
中国
|
(916) 555-2128
|
何雅莉
|
8
|
立特威公司
|
青羊路 3 号
|
重庆
|
四川
|
31415
|
中国
|
(503) 555-2129
|
李爱杰
|
9
|
乖宝贝玩具公司
|
青羊路 4 号
|
重庆
|
四川
|
31415
|
中国
|
(503) 555-2233
|
宋菲菲
|
在继续执行操作时,请记住,虽然每个表字段的数据类型不必匹配,但必须兼容。Access 必须能够将源表中的数据转换为目标表可以使用的类型。在某些情况下,转换过程可能删除一些数据。有关转换数据类型的限制的详细信息,请参阅本文后面数据类型转换的限制一节。
创建和运行更新查询
注释 下面的步骤假设使用上面两个示例表。您可以根据自己的数据对这些步骤进行相应的调整。
1、在“设计”选项卡上的“宏和代码”组中,单击“查询设计”。
2、在“显示表”对话框中,单击“表”选项卡。
3、双击源表(“顾客”表)和目标表(“客户”表)将其添加到查询,然后单击“关闭”。每个表都将出现在查询设计器的窗口中。
4、大多数情况下,Access 自动联接查询中的相关字段。若要手动联接包含相关信息的字段,请将相关字段从一个表拖至另一个表的对应字段。
例如,如果使用上面显示的两个示例表,则可以将“顾客ID”字段拖动到“客户ID”字段。Access 会在两个表中的这两个字段之间创建关系,并使用该关系来联接任何相关记录。
5、在“设计”选项卡上的“查询类型”组中,单击“更新”。
6、在目标表(“客户”表)中,双击要更新的字段。每个字段都显示在查询设计网格的“字段”行中。请注意,目标表的名称显示在设计网格的“表”行中。
7、在查询的“更新到”行中,在包含目标字段的每一列中,添加源表(“顾客”表)的名称以及源表中对应于目标表中字段的字段,并确保使用如下语法:[表].[字段],其中表名称和字段名称用方括号括起来,表名称与字段名称之间用句点分隔。
下图显示了使用示例表的设计网格的一部分。请注意“更新到”行中表名称和字段名称的语法。
在继续执行操作时,请记住,必须在“更新到”行中正确拼写表名称和字段名称,而且任何标点符号都必须与原始表名称和字段名称中的标点符号匹配。但是,大小写不需要匹配。
8、在“设计”选项卡上的“结果”组中,单击“运行”。 在要求确认更新时,单击“是”。
数据类型转换的限制
下表列出了 Access 提供的数据类型,说明了数据类型转换所受的限制,并简要描述了转换过程中可能发生的数据丢失现象。
转换为此类型
|
原始类型
|
更改或限制
|
文本
|
备注
|
Access 删除前 255 个字符以外的所有字符。
|
数字
|
无限制。
|
日期/时间
|
无限制。
|
货币
|
无限制。
|
自动编号
|
无限制。
|
是/否
|
值 -1(“是/否”字段中的“是”)转换为“是”。值 0(“是/否”字段中的“否”)转换为“否”。
|
超链接
|
Access 截断长度超过 255 个字符的链接。
|
备注
|
文本
|
无限制。
|
数字
|
无限制。
|
日期/时间
|
无限制。
|
货币
|
无限制。
|
自动编号
|
无限制。
|
是/否
|
值 -1(“是/否”字段中的“是”)转换为“是”。值 0(“是/否”字段中的“否”)转换为“否”。
|
超链接
|
无限制。
|
数字
|
文本
|
文本必须由数字、有效货币以及小数分隔符组成。文本字段中的字符数必须在为数字字段设置的大小范围内。
|
备注
|
备注字段只能包含文本和有效货币以及小数分隔符。备注字段中的字符数必须在为数字字段设置的大小范围内。
|
数字,但具有不同的字段大小或精度
|
值不得大于或小于新字段大小可以存储的值。更改精度可能导致 Access 对某些值进行四舍五入。
|
日期/时间
|
可以转换的日期取决于数字字段的大小。请记住,Access 将所有日期存储为序列日期,并将日期值存储为双精度浮点整数。
在 Access 中,1899 年 12 月 30 日是日期 0。在 1899 年 4 月 18 日到 1900 年 9 月 11 日范围以外的日期超出了字节字段的大小。在 1810 年 4 月 13 日到 1989 年 9 月 16 日范围以外的日期超过了整型字段的大小。
若要容纳所有可能的日期,请将数字字段的“字段大小”属性设置为“长整型”或更大值。
|
货币
|
值不得超过(或小于)为该字段设置的大小限制。例如,只有当值大于 255 但不超过 32,767 时,才能将货币字段转换为整型字段。
|
自动编号
|
值必须在为该字段设置的大小限制范围内。
|
是/否
|
“是”值转换为 -1。“否”值转换为 0。
|
日期/时间
|
文本
|
原始文本必须是可识别的日期或日期/时间组合。例如,2007-01-18。
|
备注
|
原始文本必须是可识别的日期或日期/时间组合。例如,2007-01-18。
|
数字
|
值必须在 -657,434 和 2,958,465.99998843 之间。
|
货币
|
值必须在 -¥657,434 与 ¥2,958,465.9999 之间。
|
自动编号
|
值必须大于 -657,434 但小于 2,958,466。
|
是/否
|
值 -1(“是”)转换为 1899 年 12 月 29 日。值 0(“否”)转换为午夜 (12:00 AM)。
|
货币
|
文本
|
文本必须由数字和有效分隔符组成。
|
备注
|
文本必须由数字和有效分隔符组成。
|
数字
|
无限制。
|
日期/时间
|
无限制,但是 Access 可能对值进行四舍五入。
|
自动编号
|
无限制。
|
是/否
|
值 -1(“是”)转换为 $1,而值 0(“否”)转换为 0$。
|
自动编号
|
文本
|
如果“自动编号”字段充当主键,则不允许转换。
|
备注
|
如果“自动编号”字段充当主键,则不允许转换。
|
数字
|
如果“自动编号”字段充当主键,则不允许转换。
|
日期/时间
|
如果“自动编号”字段充当主键,则不允许转换。
|
货币
|
如果“自动编号”字段充当主键,则不允许转换。
|
是/否
|
如果“自动编号”字段充当主键,则不允许转换。
|
是/否
|
文本
|
原始文本只能由“是”、“否”、“True”、“False”、“开”和“关”组成。
|
备注
|
原始文本只能由“是”、“否”、“True”、“False”、“开”和“关”组成。
|
数字
|
零或 Null 转换为“否”,其他所有值转换为“是”。
|
日期/时间
|
Null 或 12:00:00 AM 转换为“否”,其他所有值转换为“是”。
|
货币
|
零和 Null 转换为“否”,其他所有值转换为“是”。
|
自动编号
|
所有值转换为“是”。
|
超链接
|
文本
|
如果原始文本包含有效的网址,例如,adatum.com、www.adatum.com 或 http://www.adatum.com,则 Access 会将文本转换为超链接。Access 将尝试转换其他值,这意味着您会看到带下划线的文本,并且在您指向链接时,光标会发生变化,但链接不工作。文本可以包含任何有效的 Web 协议,包括 http://、gopher://、telnet://、ftp:// 和 wais://。
|
备注
|
请参阅上一条。适用同样的限制。
|
数字
|
如果数字字段是关系的一部分,则不允许转换。如果原始值采用有效的 Internet 协议 (IP) 地址形式(以句点分隔的四组数,每组三个数字:nnn.nnn.nnn.nnn),并且数字恰好与某个 Web 地址一致,则转换将产生一个有效的链接。否则,Access 会在每个值的前面追加 http://,所得到的链接将无效。
|
日期/时间
|
Access 会在每个地址前面追加 http://,但所得到的链接几乎永远不会有效。
|
货币
|
Access 会在每个值前面追加 http://,但与日期一样,所得到的链接几乎永远不会有效。
|
自动编号
|
如果自动编号字段是关系的一部分,则不允许转换。Access 会在每个值前面追加 http://,但所得到的链接几乎永远不会有效。
|
是/否
|
Access 将所有“是”值转换为 -1,将所有“否”值转换为 0,并在每个值前面追加 http://。所得到的链接无效。
|