C# 出入库单程序设计问题

yjjtwo 2015-05-19 07:45:50
小弟在设计一个出入库的设计,遇到有点思路很混乱,是新手,有些概念不是很懂,请教了大家了

有10个箱子为ABC..k 其中每个箱子里有10件物品abc...k


设置箱子 表

Id Name Bool(记录是否出库) ID Name name bool
1 A false 1 A a false
2 B false 2 A b false
. . false . . . false
. . false . . . false
10 K false 10 A k false
11 B a false
12 B b false
. . . .
91 K a false
. . . .
100 K k false

直到全部对应完

像这样的表数据表 我为了出库方便 在datagrid中 直接用 打钩选着的的方式直接选择出需要出库的产品,那么问题来了,我有些是直接要按整个箱子出库的,有些是找出这个箱子,再出库其中的几件产品,那么我该怎么设计我的程序呢,我目前是先查找出没有出库的箱子。如果需要就直接选择这个箱子,如果需要出箱子里的其中几件,那么点击这个箱子就会找出其中的10件物品,选择这箱子中的几件出库,但是呢,出库效果肯定是这样的方便点吧


...全文
847 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjjtwo 2015-05-24
  • 打赏
  • 举报
回复
谢谢大家,我通过每次选择得到 选择的ID,和箱子里面的具体集合包含的ID,然后取到重复的,然后就是得到全部要出的ID,然后更新每个ID对应的信息
於黾 2015-05-22
  • 打赏
  • 举报
回复
引用 30 楼 yjjtwo 的回复:
我的数据库是这样的。。。 我的库存是这样查出来的,我的集合是用这个SQL语句弄的,所以没有合起来的Id
目测你的表之间连外键都没有?? 你子表里的序号是怎么跟主表里的箱子号关联起来的?? 先设计好数据库结构,再想怎么往下做. 数据库本身就乱糟糟的毫无联系,这程序要做起来考虑的东西就多了
於黾 2015-05-22
  • 打赏
  • 举报
回复
引用 33 楼 wangjun8868 的回复:
理解,但是入库和出库放一张表是不是太大了
这个主要看数据量大小吧 如果是一般小公司的出入库,一年也没几个备件 如果是要做超市的出入库,这样做显然并不合理,要按SP1234所说的那样去设计 没有哪种设计是标准的,万能的,总是有其适应性的 对于一个小系统来说,做成跟超市那种系统一样,是不是太小题大做了呢
leeya66 2015-05-22
  • 打赏
  • 举报
回复
现存量表,收发记录表,有这两张表就可以了, 但是你这样的界面设计是不对的,你要考虑增加删除修改查询4个功能如何共存, 一般传统的出入库单据界面 是通过选择仓库、日期和物料号,指定数量,然后保存,形成一个单独的单据号
yjjtwo 2015-05-21
  • 打赏
  • 举报
回复
今天想到了把通过查到得到的ID都加入到数组中去,然后通过SQL查询这些ID把具体的数据再组合下加载到Datagrid中,然后保存,就更新这个数组Id
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
IsSelect 代表 是否出库的 标识
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
引用 29 楼 Z65443344 的回复:
对,理论上是循环更新就行了, 我的难处在于datagrid里面的数据是用动态数值加载集合实现的,然后我里面的每条数据是一个集合,然后集合里面的具体Id 该怎么才能弄到
我主要是看到别人做的程序里可以这样实现的,只是自己怎么也研究不出来,这个具体集合的每条数据Id该怎么传递

查询的时候就查询出来,然后让这一列不要在控件里显示(隐藏列),不就行了





我的数据库是这样的。。。 我的库存是这样查出来的,我的集合是用这个SQL语句弄的,所以没有合起来的Id
於黾 2015-05-20
  • 打赏
  • 举报
回复
对,理论上是循环更新就行了, 我的难处在于datagrid里面的数据是用动态数值加载集合实现的,然后我里面的每条数据是一个集合,然后集合里面的具体Id 该怎么才能弄到 我主要是看到别人做的程序里可以这样实现的,只是自己怎么也研究不出来,这个具体集合的每条数据Id该怎么传递 查询的时候就查询出来,然后让这一列不要在控件里显示(隐藏列),不就行了
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
引用 25 楼 sp1234 的回复:
充其量,在你的入口程序中可以提供一种 --> 充其量,在你的入库程序中可以提供一种 在搞零售业记账的那些人那里,这种概念有一个很直观的比喻。”假设肉联厂进了20头猪,买了50个猪蹄,请问最后还剩下多少头猪?“ 回答这个问题是否”思路混乱”,就能看出有没有学习过货品记账的基本原则了。
谢谢大大的回答,很全面,很具体, 我那下面两个框只是为了给 上面的出库框 提供选择代表是剩余的库存找出来, 左边的框是为了方便设计的整箱出库,但是计量单位要按里面的可乐数量决定,我其实数据库里的是分箱显示的,而右边的框是为了方便,直接出数量 虽然违反了你解释的单位问题 但是只要代码里可以抓取到 这个集合里面的每个Id 还是可以实现的
sp1234_maJia 2015-05-20
  • 打赏
  • 举报
回复
都是记在一起的,因为它们对库存来说是相同的对象 --〉 都是记在一起的,因为它们对库存来说是抽象的同一类对象 前一种说法可能容易引起歧义,需要解释一下。在库存中,它针对的“货品”对象只认编码,编码不同那么就记为不同的库存记录。因此所有不同种类的货品,都变为了同一类对象的不同实例,只是编码不同。因此不论是箱子还是箱子里的物件,其库存数量都记录在同一张表里。 如果你去纠结于“箱子的库存表、箱子里的物件的库存表”,这就是因为你将 BOM 跟库存的概念没有分开。分开了之后,对库存表也就不纠结了。
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
引用 21 楼 Z65443344 的回复:
你数据库里不是有ID作为主键吗 循环更新不就行了
引用 21 楼 Z65443344 的回复:
你数据库里不是有ID作为主键吗 循环更新不就行了
对,理论上是循环更新就行了, 我的难处在于datagrid里面的数据是用动态数值加载集合实现的,然后我里面的每条数据是一个集合,然后集合里面的具体Id 该怎么才能弄到 我主要是看到别人做的程序里可以这样实现的,只是自己怎么也研究不出来,这个具体集合的每条数据Id该怎么传递
  • 打赏
  • 举报
回复
充其量,在你的入口程序中可以提供一种 --> 充其量,在你的入库程序中可以提供一种 在搞零售业记账的那些人那里,这种概念有一个很直观的比喻。”假设肉联厂进了20头猪,买了50个猪蹄,请问最后还剩下多少头猪?“ 回答这个问题是否”思路混乱”,就能看出有没有学习过货品记账的基本原则了。
  • 打赏
  • 举报
回复
BOM(拆箱规则)跟库存本身没有直接的关系,它是你将成箱的货物拆成另外的一种货物(例如一“箱”大枣拆成多少“斤”大枣)时才会使用一下。 在你的库存中,不管是“箱子”还是“箱子里的物件”都是记在一起的,因为它们对库存来说是相同的对象。 在你的界面上,第一个表应该用来处理BOM设置。它跟什么“入库单”、“记录是否出库”绝不应该发生关系。充其量,在你的入口程序中可以提供一种“临时建档”操作,也就是在录入入库单是可以立刻不用离开入口操作画面、而是在弹出一个窗口中临时为新货品编码设置BOM明细数据。但是这跟库存无关。 你的第一个表把 BOM 配置操作跟入库混乱在一起了。 入库单保存、审核、确认入库(假设你不用收获验货环节)之后,才会update库存表。 至于说你后边的出库操作,我上面分析过了,你没有将不同单位规格的货品“分开”进行库存核算,所以造成了概念混乱。没有一个“拆箱”的概念是不行的。在出库单上,不是什么仅有A、B、C......成箱编码,还可能会有具体的单件货品的编码(例如a、b、c.......)。有时候即使是成箱出货,例如出货2箱可口可乐,而出库单上要开“48听可口可乐”而不是“2箱可口可乐”,因为同种但是不同单位的货品在库存中就是不同的货品。
  • 打赏
  • 举报
回复
入库、出库、库存,三者要分开。 另外对于需要“拆开”的物品,比如说成箱的可口可乐跟成听的可口可乐,要对货物编写不同的内部编码。如果销售出库时按照可口可乐条码扫描,那么这个条码应该是作为成听的可口可乐的销售码(可替代码),而不是作为成箱的可口可乐的销售码。 出库时,如果是使用成听的可口可乐的编码,那么出库的数量单位就应该是”听“,而库存里有多少成箱的可口可乐没有关系。通常会有一个”拆箱“的业务。比如在上架前,把多少“箱”可口可乐移除掉、重新转为多少听可口可乐。 回到开头的基本机制,“入库、出库、库存”三者是分开的。因为任何实际的系统中都有大量操作是需要“瞬间”读取库存的,每天可能需要查询上万次,不是每一次都把货物重新统计一遍(本来需要5毫秒的查询结果变成了50秒的查询)。这方面就不是仅仅考虑“是非”问题,而是最基本的实用性问题了。
江南小鱼 2015-05-20
  • 打赏
  • 举报
回复
引用 20 楼 yjjtwo 的回复:
[quote=引用 19 楼 lovelj2012 的回复:] 如果仅仅有出入库业务,库存可以简单的用入库-出库计算得到 如果业务复杂,可以创建一张库存表,方便统计。
谢谢兄弟的回答的疑问, 我现在这个表就是入库的表,我想通过改变其中的 字段值 来知道是出库了,还是剩余的,我现在就是抓取不出,这个显示的每个ID值去更新这个 表示出库的字段值,想知道如何实现[/quote] 你上面的帖子,我也懒得去看了。 你不是两张表么?一张箱子表、一张箱子存放物品表。 你在箱子表增加个字段,标识箱子还有余物。然后部分出箱,更新这个标识不就成了? 什么抓取不出?
於黾 2015-05-20
  • 打赏
  • 举报
回复
你数据库里不是有ID作为主键吗 循环更新不就行了
yjjtwo 2015-05-20
  • 打赏
  • 举报
回复
引用 19 楼 lovelj2012 的回复:
如果仅仅有出入库业务,库存可以简单的用入库-出库计算得到 如果业务复杂,可以创建一张库存表,方便统计。
谢谢兄弟的回答的疑问, 我现在这个表就是入库的表,我想通过改变其中的 字段值 来知道是出库了,还是剩余的,我现在就是抓取不出,这个显示的每个ID值去更新这个 表示出库的字段值,想知道如何实现
江南小鱼 2015-05-20
  • 打赏
  • 举报
回复
如果仅仅有出入库业务,库存可以简单的用入库-出库计算得到 如果业务复杂,可以创建一张库存表,方便统计。
江南小鱼 2015-05-20
  • 打赏
  • 举报
回复
引用 17 楼 yjjtwo 的回复:
[quote=引用 16 楼 Z65443344 的回复:] 这样,入库就是insert,出库就是update 查所有库存,就是查出库字段为null的 查所有出库的,就是查所有出库字段不为null的 当然查所有入库记录,就是都查出来
谢谢兄弟的分析 我这个表里的数据就是入库进来才有的 现在遇到的问题的 我既要整个增加出库,又要单一增加出库,该如何把握去一个个更新其中的每天记录,或者说有更好的Updata方法去一一更新 [/quote] 我道你是练手,权且回答你的疑问。 你的数据库设计的不合适,这个何尝不是! 数据库表可以这么设计如下: 1、产品类型表(产品名称、型号、编码等),其他使用处,使用编码 2、业务主表(业务类型,用来标识什么业务(比如:0-出库,1-入库)),主键业务编号 3、业务子表(记录出库或者入库的明细,通过业务编号和主表关联)
加载更多回复(19)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧