设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3821|回复: 9
打印 上一主题 下一主题

[表] 如何大批量更新数据(有关进销存计算出库成本)

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-18 20:50:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位高手:
左一个进销存的,两个表,一个Bjiecun表,一个Bchuku表,Bjiecun表里面有几仟条记录(甚者上万,并且不重复),代表的是出库单价。Bchuku表里面有几万条记录甚至几十万,代表的是出库成本。现在要逐一用Bjiecun表里面的每一条物料编码记录的出库单价更新Bchuku表的相同物料编码单价字段,并同时计算Bchuku表的出库成本。如附件,我用的是ADO的方式,必须遍历Bjiecun表的每一条记录,效率非常低。电脑慢的甚至会死机。哪个高手帮忙改进下有什么更好的办法。或者有做过进销存方面的提供些其它方面的意见。只要能达到相同的效果就可以。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
10#
发表于 2017-8-22 13:35:07 | 只看该作者
hhhhhh
回复

使用道具 举报

9#
 楼主| 发表于 2011-6-20 11:38:06 | 只看该作者
1。2011年4月的
2.是查询设计器
8#
发表于 2011-6-20 10:56:36 | 只看该作者
1、请更新你的附件,我实在不清楚你用的是哪年哪月的数据。
2、请留意,部分bjiecun里面的物料号,在bchuku里是没有的。换句话说,就是有来历不明的产品出库了~~如果选择是外联接(属于并集)的话,则有可能比这个要多些。我这个版本没看到查询分析器在哪(以前按向导完成好像是有的)。
7#
 楼主| 发表于 2011-6-20 10:55:55 | 只看该作者
多谢,找到原因了,是因为有些编码BCHUKU表有,但是BJIECUN表里面无,所以查询分析器显示出来的就少了,但是更新结果是没错的
6#
发表于 2011-6-20 10:36:58 | 只看该作者
today416 发表于 2011-6-20 09:32
多谢ROYCH版主,因为我更新的是bchuku的单价,所以语句我改成了如下,后面的WHERE如你所说,是相应的条件, ...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
 楼主| 发表于 2011-6-20 09:32:14 | 只看该作者
多谢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吗

以上两个问题,版主帮忙看下
4#
发表于 2011-6-18 23:50:31 | 只看该作者
这里不知道有没有多进程的编程
3#
发表于 2011-6-18 23:24:35 | 只看该作者
为什么非要用ADO呢?直接用更新查询不行吗?

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

如果还有其它条件,请自行加上去。
2#
 楼主| 发表于 2011-6-18 22:55:56 | 只看该作者
版主啊,来帮忙看看啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 19:25 , Processed in 0.109817 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表