找回密码
 立即注册

QQ登录

只需一步,快速开始

左一

高级会员

167

主题

391

帖子

1684

积分

高级会员

积分
1684
左一
高级会员   /  发表于:2022-9-13 10:41  /   查看:2445  /  回复:10
1金币
本帖最后由 左一 于 2022-9-13 12:05 编辑

学习出入库,但不想做成只能一个物品一个物品的入库,想做成主子表。但在设置最终库存数的时候就不知道怎么设置成数组形式了,求教。图片个工程附下。
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

赶紧转换思路,不要玩实体字段的库存,逻辑弄不好容易出问题。直接把库存写成视图,当前库存=所有入库数-所有出库数。出入库单据保存的时候只需要调用当前库存作个逻辑判断。如果再加个结存表,丝毫不用担心数据大的问题。当期当前库存=上期结存数 +当期所有入库-当期所有出库。

10 个回复

倒序浏览
最佳答案
最佳答案
jiangcj369
高级会员   /  发表于:2022-9-13 10:41:57
来自 5#
本帖最后由 jiangcj369 于 2022-9-13 15:18 编辑

赶紧转换思路,不要玩实体字段的库存,逻辑弄不好容易出问题。直接把库存写成视图,当前库存=所有入库数-所有出库数。出入库单据保存的时候只需要调用当前库存作个逻辑判断。如果再加个结存表,丝毫不用担心数据大的问题。当期当前库存=上期结存数 +当期所有入库-当期所有出库。
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-9-13 12:20:25
2#
啥意思?没看懂大佬的问题是啥。
回复 使用道具 举报
左一
高级会员   /  发表于:2022-9-13 12:38:06
3#
就是我一次性入库多个物品,比如本子10个,笔20个,橡皮擦25个。然后物品表里的对应的物品数量就会加上这些入库数。
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-9-13 15:10:48
4#
你现在不是已经写好了吗?你的问题是什么?最近发现了一篇格友写的帖子,建议可以参考一下哈~可以有效提升大家解决问题的效率~
如何有效地进行问题提问 - 活字格专区 - 格友杂谈 - 葡萄城产品技术社区 (grapecity.com.cn)

回复 使用道具 举报
左一
高级会员   /  发表于:2022-9-13 15:22:47
6#
David.Zhong 发表于 2022-9-13 15:10
你现在不是已经写好了吗?你的问题是什么?最近发现了一篇格友写的帖子,建议可以参考一下哈~可以有效提升 ...

我运行的时候提示错误,一共三个表(物品表、出入库表和出入库子表)和一个入库页面,入库页面上内容包含了出入库表和出入库子表,出入库子表主要是物品ID和数量,我想达到的效果是,在入库页面上提交,会把出入库子表上的多个物品和数量,在物品表中对应的更新数量。
回复 使用道具 举报
左一
高级会员   /  发表于:2022-9-13 15:37:40
7#
jiangcj369 发表于 2022-9-13 15:15
赶紧转换思路,不要玩实体字段的库存,逻辑弄不好容易出问题。直接把库存写成视图,当前库存=所有入库数-所 ...

简单的SQL分类汇总语言还会,但这种主子表的就不会了。
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-9-13 18:26:16
8#
大哥,发demo好歹自己运行一下好吧。

先把一些基本的错误给大佬说一下,
第一,这里的判断条件不能这么写,数组参数不能直接用来做判断,

可以直接写到循环里面,单独查询每个物品的库存


大佬先把这里修改了,玩玩看吧。

本帖子中包含更多资源

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

x
回复 使用道具 举报
jiangcj369
高级会员   /  发表于:2022-9-15 15:22:42
9#
本帖最后由 jiangcj369 于 2022-9-15 15:39 编辑
左一 发表于 2022-9-13 15:37
简单的SQL分类汇总语言还会,但这种主子表的就不会了。

主子表就是inner join
/**当前库存=上期结存+本期入库-本期出库,要处理好语句中的单据日期和当期及上期的时间关系
**t1表是入库单主表和子表聚合
**t2表是出库单主表和子表聚合
**t3表是上期结存表,本身就是按料聚合后的结果取过来的
**/
select a.料号,当期当前库存=isnull(t1.入库总数,0)-isnull(t2.出库总数,0)+isnull(t3.上期结存数,0) from 物品表 a
left join
(select b2.料号,sum(isnull(b2.入库数,0)) as 入库总数 from 各种入库单  b1
inner join 各种入库单明细 b2 on b1.id=b2.id where b1.单据日期 >=当期月初  group by b2.料号) t1  on t1.料号=a.料号

left join
(select b4.料号,sum(isnull(b4.出库数,0)) as 出库总数 from 各种出库单  b3
inner join 各种入库单明细 b4 on b3.id=b4.id where b3.单据日期>=当期月初  group by 4.料号) t2 on t2.料号=a.料号

left join
(select c.料号,c,上期结存数 from 上期结存表 c) t3 on t3.料号=a.料号

大致语句就是这个意思,我是随意写的,没有模拟表。
回复 使用道具 举报
jiangcj369
高级会员   /  发表于:2022-9-15 15:41:06
10#
jiangcj369 发表于 2022-9-15 15:22
主子表就是inner join
/**当前库存=上期结存+本期入库-本期出库,要处理好语句中的单据日期和当期及上期 ...

如果上期和本期时间你搞不好,就干脆不要,直接全入-全出,料号加索引,速度不会慢的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部