Office中国论坛/Access中国论坛

标题: 如何大批量更新数据(有关进销存计算出库成本) [打印本页]

作者: today416    时间: 2011-6-18 20:50
标题: 如何大批量更新数据(有关进销存计算出库成本)
各位高手:
左一个进销存的,两个表,一个Bjiecun表,一个Bchuku表,Bjiecun表里面有几仟条记录(甚者上万,并且不重复),代表的是出库单价。Bchuku表里面有几万条记录甚至几十万,代表的是出库成本。现在要逐一用Bjiecun表里面的每一条物料编码记录的出库单价更新Bchuku表的相同物料编码单价字段,并同时计算Bchuku表的出库成本。如附件,我用的是ADO的方式,必须遍历Bjiecun表的每一条记录,效率非常低。电脑慢的甚至会死机。哪个高手帮忙改进下有什么更好的办法。或者有做过进销存方面的提供些其它方面的意见。只要能达到相同的效果就可以。
[attach]45898[/attach]


作者: today416    时间: 2011-6-18 22:55
版主啊,来帮忙看看啊
作者: roych    时间: 2011-6-18 23:24
为什么非要用ADO呢?直接用更新查询不行吗?

UPDATE bjiecun LEFT JOIN bchuku ON bjiecun.物料编码 = bchuku.物料编码 SET bchuku.出库单价 = nz(bjiecun!单价,bchuku!出库单价);

如果还有其它条件,请自行加上去。
作者: weestudy    时间: 2011-6-18 23:50
这里不知道有没有多进程的编程
作者: today416    时间: 2011-6-20 09:32
多谢ROYCH版主,因为我更新的是bchuku的单价,所以语句我改成了如下,后面的WHERE如你所说,是相应的条件,用来判定哪些记录是否更新单价以及更新对应的年和月:
UPDATE bchuku LEFT JOIN bjiecun ON bchuku.物料编码 = bjiecun.物料编码 SET bchuku.出库单价1 = [bjiecun].[单价], bchuku.出库金额1 = [bjiecun].[单价]*[bchuku].[发料数量]
WHERE (((bchuku.加权运算)=-1) AND ((Year([bchuku].[出库日期]))=[forms]![ctzhujiemian].[wbknian]) AND ((Month([bchuku].[出库日期]))=[forms]![ctzhujiemian].[wbkyue]))


但是出现两个问题,1.在查询分析器里切换到数据表视图里显示出来的更新记录比bchuku表的记录反而要多?Bchuku表的记录是11935,而查询分析器里显示的是11957?为何,后续是否会有问题
2.因为我是按照年和月作条件的,所以Bjiecun表里有可能出现编码相同,但是年和月不同的记录,这个时候我是否要这样写条件
UPDATE bchuku LEFT JOIN bjiecun ON bchuku.物料编码 = bjiecun.物料编码 SET bchuku.出库单价1 = [bjiecun].[单价], bchuku.出库金额1 = [bjiecun].[单价]*[bchuku].[发料数量]
WHERE (((bchuku.加权运算)=-1) AND ((Year([bchuku].[出库日期]))=[forms]![ctzhujiemian].[wbknian]) AND ((Month([bchuku].[出库日期]))=[forms]![ctzhujiemian].[wbkyue]) AND ((bjiecun.年)=[forms]![ctzhujiemian].[wbknian]) AND ((bjiecun.月)=[forms]![ctzhujiemian].[wbkyue]))
但是这样写的条件在查询分析器里显示的记录又只有11920,不应该也是等于bchuku的11935吗

以上两个问题,版主帮忙看下

作者: todaynew    时间: 2011-6-20 10:36
today416 发表于 2011-6-20 09:32
多谢ROYCH版主,因为我更新的是bchuku的单价,所以语句我改成了如下,后面的WHERE如你所说,是相应的条件, ...

[attach]45901[/attach]
作者: today416    时间: 2011-6-20 10:55
多谢,找到原因了,是因为有些编码BCHUKU表有,但是BJIECUN表里面无,所以查询分析器显示出来的就少了,但是更新结果是没错的
作者: roych    时间: 2011-6-20 10:56
1、请更新你的附件,我实在不清楚你用的是哪年哪月的数据。
2、请留意,部分bjiecun里面的物料号,在bchuku里是没有的。换句话说,就是有来历不明的产品出库了~~如果选择是外联接(属于并集)的话,则有可能比这个要多些。我这个版本没看到查询分析器在哪(以前按向导完成好像是有的)。
作者: today416    时间: 2011-6-20 11:38
1。2011年4月的
2.是查询设计器
作者: 灰太郎    时间: 2017-8-22 13:35
hhhhhh




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