Office中国论坛/Access中国论坛

标题: 在查询里怎么更新2个表之间有关联的记录?(带附件) [打印本页]

作者: 玉树TMD临风    时间: 2015-5-18 18:53
标题: 在查询里怎么更新2个表之间有关联的记录?(带附件)
本帖最后由 玉树TMD临风 于 2015-5-18 18:54 编辑

不知道附件传上来没有。

当成QQ聊天,按CTL+ENTER发出来了。

要求:将表1中的空白字段更新为表2中对应文档号的字段,其中件数应是所有的页次+最后一个记录的页数


作者: 玉树TMD临风    时间: 2015-5-18 22:15
本帖最后由 玉树TMD临风 于 2015-5-18 22:20 编辑

没有图片大家可能懒得下,我把表数据复制出来一下,如下表。
要把表1中的后4个字段更新,单独用查询貌似不行,只能用记录集吧,我用记录集还得开2个recordset,不知道是我写得不对还是必须有和2个,哪位大神指点一下。(编辑时好好的,一发布全乱了)

表1
序号 档号 文档开始时间 文档结束时间 件数 页数
1 2015-001  
2 2015-002 20150101    20150205      4    18
3 2015-003 20150501    20150501      1     6   
4 2015-004   
5 2015-005   

表2
序号 档号 文件级档号             形成日期   页次 页数
1 2015-001 2015-001.001 20150101  1   2
2 2015-001 2015-001.003 20150102  3   4
3 2015-001 2015-001.007 20150103  7   1
1 2015-002 2015-002.001 20150101  1   3
2 2015-002 2015-002.004 20150202  4   2
3 2015-002 2015-002.006 20150203  6   5
4 2015-002 2015-002.011 20150205  11 8
1 2015-003 2015-003.001 20150501  1   6



作者: zpy2    时间: 2015-5-19 06:57
本帖最后由 zpy2 于 2015-5-19 06:58 编辑
玉树TMD临风 发表于 2015-5-18 22:15
没有图片大家可能懒得下,我把表数据复制出来一下,如下表。
要把表1中的后4个字段更新,单独用查询貌似不 ...


select 档号,min(时间) As 开始时间,max(时间) As 结束时间,count(序号) As 件数
From 表2
Group By 档号

再用新建更新查询 更新表1
试试
作者: zpy2    时间: 2015-5-19 07:01
sum(页数) As 页数
作者: 玉树TMD临风    时间: 2015-5-19 10:37
这个试过了,提示查询是不可更新的子查询。
作者: 轻风    时间: 2015-5-19 11:00
我觉得表1没有存在的意义嘛,直接用查询得到表1的数据
  1. SELECT 表2.档号, Min(表2.形成日期) AS 文档开始时间, Max(表2.形成日期) AS 文档结束时间, Count(表2.档号) AS 件数, Sum(表2.页数) AS 页数
  2. FROM 表2
  3. GROUP BY 表2.档号;
复制代码

作者: roych    时间: 2015-5-19 12:00
本帖最后由 roych 于 2015-5-19 12:02 编辑

我也是比较赞同轻风的说法的。不过既然楼主需要更新的话,这里就给个SQL代码吧【恕我不是很理解另外两个字段,可能与你所想要的效果不符】:
  1. UPDATE 表1 SET 表1.文档开始时间 = DFirst("文件级档号","表2","档号='" & [档号] & "'"), 表1.文档结束时间 = DLast("文件级档号","表2","档号='" & [档号] & "'"), 表1.页数 = DSum("页数","表2","档号='" & [档号] & "'"), 表1.件数 = DSum("页数","表2","档号='" & [档号] & "'")+DSum("页次","表2","档号='" & [档号] & "'");
复制代码
[attach]56334[/attach]
如果数据较多,建议还是用ADO处理吧。域函数会慢一些。而且这两个表不好建立关系。以下供参考:
http://www.office-cn.net/thread-108107-1-1.html



作者: zpy2    时间: 2015-5-19 15:40
玉树TMD临风 发表于 2015-5-19 10:37
这个试过了,提示查询是不可更新的子查询。

还得一个更新查询,一个内链接。熟的话,写成一句,我一般写二个,基础比较查了。
作者: zpy2    时间: 2015-5-19 15:42
多数手机上的,PC端论坛功能还不少了。{:soso_e100:}
作者: 玉树TMD临风    时间: 2015-5-19 19:50
轻风 发表于 2015-5-19 11:00
我觉得表1没有存在的意义嘛,直接用查询得到表1的数据

表1还有个“档案名称”字段,比如“张三个人档”,“张三奖励档”

表2对应的就是“张三个人档”的人事简历和“张三奖励档”的历年奖励表格。

因为档案制作有规定,每本档案不得超过150页,所以说不定还有“张三工作档1”、“张三工作档2”等,所以表1还是有必要的,我放的例子只是举例。
作者: 轻风    时间: 2015-5-21 08:44
玉树TMD临风 发表于 2015-5-19 19:50
表1还有个“档案名称”字段,比如“张三个人档”,“张三奖励档”

表2对应的就是“张三个人档”的人事 ...

就算这样,至少表1中能通过查询得到数据的那几个字段还是没存在的必要,通过查询与表1建立关系即可。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3