【C#+SQL Server】实现ERP管理系统 三:物料清单模块设计(附源码和资源)
需要源码请点赞关注收藏后评论区留言私信~~~
一、物料清单模块概述
物料清单英文缩写为BOM,用于描述产品的物理结构组成,子件按照一定的数量和装配工艺流程来构成母件,运行窗体如下图所示
二、设计物料清单窗体
该窗体主要用于管理物料清单,该窗体用到的控件如下
三、获取所以母件信息
创建两个类的实例 代码如下
using ERP.ComClass; //引入CommonUse类
using ERP.DataClass; //引入DataBase类
namespace ERP.BS
{public partial class FormBSBom : Form{DataBase db = new DataBase(); //创建DataBase类的实例,用于操作数据CommonUse commUse = new CommonUse(); //创建CommonUse类的实例,调用该类的相关方法……其它事件或方法的代码}
}
Load时间设置了用户的操作权限,并检索现有的母件信息,并通过调用CommonUse类中的BuildTree方法将其显示在tvInven树控件中
private void FormBom_Load(object sender, EventArgs e)
{//设置用户的操作权限commUse.CortrolButtonEnabled(toolAdd, this);commUse.CortrolButtonEnabled(toolAmend, this);commUse.CortrolButtonEnabled(toolDelete, this);//TreeView绑定到数据源,显示现有的母件commUse.BuildTree(tvInven, imageList1, "母件", "V_BomStruct", "InvenCode", "InvenName");
}
四、获取指定母件的子件信息
在物料清单窗体中,单击任意母件,会在窗体的右侧显示组成该母件的子件信息
private void tvInven_AfterSelect(object sender, TreeViewEventArgs e)
{commUse.DataGridViewReset(dgvStructInfo); //清空DataGridViewif (tvInven.SelectedNode != null) //如果是非空节点{if (tvInven.SelectedNode.Tag != null) //如果是非根节点{BindDataGridView(tvInven.SelectedNode.Tag.ToString());//检索并显示该母件的子件信息}}
}
五、打开物料清单编辑窗体
单击添加按钮,打开物料清单编辑窗体,该功能是在添加按钮的Click事件中实现的,实现时,首先判断是否选中记录,如果选中记录,则创建FormBSBBomInput窗体的对象,然后对其Tag属性和Owner属性进行设置,最后以对话框形式显示该窗体
private void toolAdd_Click(object sender, EventArgs e)
{if (tvInven.SelectedNode != null) //如果是非空节点{//实例化FormBSBomInput窗体(物料清单编辑窗体)FormBSBomInput formBomInput = new FormBSBomInput();formBomInput.Tag = "Add"; //表示添加操作,说明修改时EditformBomInput.Owner = this; //设置拥有此窗体的窗体,即FormBSBom窗体formBomInput.ShowDialog(); //将窗体显示为模式对话框}
}
六、添加/修改物料清单
在物料清单编辑窗体中,单击保存按钮,程序首先判断在该窗体中执行的是添加操作还是修改操作,然后根据要执行的操作标识,执行insert添加数据操作,或者update修改数据操作,保存事件的Click事件代码如下
private void btnSave_Click(object sender, EventArgs e)
{string strProInvenCode = null; //表示母件代码string strMatInvenCode = null; //表示子件代码string strOldMatInvenCode = null; //表示未修改之前的子件代码string strCode = null; //表示SQL语句字符串if (cbxProInvenCode.SelectedIndex == -1) //母件不许为空{MessageBox.Show("请选择母件!", "软件提示");cbxProInvenCode.Focus();return;}if (cbxMatInvenCode.SelectedIndex == -1) //子件不许为空{MessageBox.Show("请选择子件!", "软件提示");cbxMatInvenCode.Focus();return;}if (cbxMatInvenCode.SelectedValue.ToString() ==
cbxProInvenCode.SelectedValue.ToString()) //母件与子件不许相同{MessageBox.Show("母件与子件不许相同!", "软件提示");cbxProInvenCode.Focus();return;}if (String.IsNullOrEmpty(txtQuantity.Text.Trim())) //组成数量不许为空{MessageBox.Show("组成数量不许为空!", "软件提示");txtQuantity.Focus();return;}if (Convert.ToInt32(txtQuantity.Text.Trim()) == 0) //组成数量不许为零{MessageBox.Show("组成数量不许为零!", "软件提示");txtQuantity.Focus();return;}strProInvenCode = cbxProInvenCode.SelectedValue.ToString(); //获取当前的母件代码strMatInvenCode = cbxMatInvenCode.SelectedValue.ToString(); //获取当前的子件代码//如果是添加操作,则需要判断将要添加的子件是否与现有的子件重复if (this.Tag.ToString() == "Add"){foreach (PropertyClass item in propBoms) //遍历包含Bom信息的泛型列表{//若将要添加的子件与当前母件现有的子件重复,则系统禁止添加if (item.ProInvenCode == strProInvenCode && item.MatInvenCode == strMatInvenCode){MessageBox.Show("子件不许重复!", "软件提示");return; //程序终止运行}}ParametersAddValue(); //给INSERT语句中的参数赋值//表示为当前母件插入新子件strCode = "INSERT INTO BSBom(ProInvenCode,MatInvenCode,Quantity) ";strCode += "VALUES(@ProInvenCode,@MatInvenCode,@Quantity)";if (db.ExecDataBySql(strCode) > 0) //执行SQL语句成功{MessageBox.Show("保存成功!", "软件提示");}else //执行SQL语句失败{MessageBox.Show("保存失败!", "软件提示");}}if (this.Tag.ToString() == "Edit") //若是修改操作{strOldMatInvenCode = formBom.dgvStructInfo[0,formBom.dgvStructInfo.CurrentRow.Index].Value.ToString(); //获取修改之前的子件代码//如果修改了子件,则需要判断该母件是否存在重复子件if (strMatInvenCode != strOldMatInvenCode){foreach (PropertyClass item in propBoms) //遍历包含Bom信息的泛型列表{//如果存在重复子件,则系统禁止修改if (item.ProInvenCode == strProInvenCode && item.MatInvenCode ==
strMatInvenCode){MessageBox.Show("子件不许重复!", "软件提示");return; //终止程序运行}}}ParametersAddValue(); //为SQL语句中的参数赋值strCode = "UPDATE BSBom SET ProInvenCode=@ProInvenCode,MatInvenCode =
@MatInvenCode,Quantity = @Quantity ";strCode += " WHERE ProInvenCode = '" + strProInvenCode + "' AND MatInvenCode = '" +
strOldMatInvenCode + "'"; //修改当前母件的某子件信息if (db.ExecDataBySql(strCode) > 0) //执行SQL语句成功{MessageBox.Show("保存成功!", "软件提示");}else //执行SQL语句失败{MessageBox.Show("保存失败!", "软件提示");}}commUse.BuildTree(formBom.tvInven, formBom.imageList1, "母件", "V_BomStruct",
"InvenCode","InvenName"); //TreeView控件重新绑定到数据//重新设置物料清单窗体中TreeView控件的被选定节点formBom.tvInven.SelectedNode = formBom.tvInven.Nodes[0].Nodes[intNodeIndex];this.Close(); //关闭当前窗体
}
创作不易 觉得有帮助请点赞关注收藏~~~
【C#+SQL Server】实现ERP管理系统 三:物料清单模块设计(附源码和资源)相关推荐
- 【C#+SQL Server】实现模仿QQ的交友软件 三:申请账号窗体设计讲解(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...
- 【C#+SQL Server】实现模仿QQ的交友软件 四:主窗体设计讲解(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...
- 【C#+SQL Server】实现模仿QQ的交友软件 五:聊天窗体设计讲解(附源码和资源)
需要源码和资源请 点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...
- 【C#+SQL Server】实现模仿QQ的交友软件 一:系统简介、功能展示与数据库设计(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其余几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 二:登录窗体设计讲解(附源码和资源) [C#+SQL Server] ...
- Web酒店管理系统(附源码及资源)
Web酒店管理系统(附源码及资源) 一.系统概述: 二.系统功能分析 三.系统主要内容: 四.源码下载 五.总结 一.系统概述: 该系统通过Sublime Text编辑器编写完成,涉及到了htnl.c ...
- 【C#+Access+WindowsAPI】实现仿360的安全卫士 三:系统检测窗体设计(附源码和资源)
需要源码和PPT请点赞关注收藏后评论区留言私信~~~ 其他部分文章链接如下 [C#+Access+WindowsAPI]实现仿360的安全卫士 一:功能展示与系统开发环境简介(附源码和资源 [C#+A ...
- 【C#+SQL Server】实现ERP管理系统 四:销售收款单模块设计(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.销售收款单模块概述 销售收款单是对已售商品确认收款的凭证,单据经过审核后,被正式确认,系统自动增加账户金额,审核后若要修改后者删除收款单,需要进 ...
- 【C#+SQL Server+打印组件】实现电商快递单打印系统 二:数据库设计与开发环境(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.系统开发环境要求 开发快递单打印精灵项目的计算机需要满足以上条件 操作系统:windows7以上 开发环境:Visual Studio 2022 ...
- 【C#+SQL Server+打印组件】实现电商快递单打印系统 五:自定义组件和快递单模板设计(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.自定义组件(扩展TextBox) 由于快递单种类较多,所以在设计系统时考虑开发一个通用模板,由用户根据自己使用的快递单样式自行定义快递单的文本输 ...
- 【C#+SQL Server+打印组件】实现电商快递单打印系统 五:快递单打印模块设计(附源码和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.快递单打印模块概述 由于一个用户可能使用多种类型的快递单,所以在快递单打印窗体中提供了自由选择快递单种类的功能,在确定使用某一种快递单后,程序将 ...
最新文章
- ubuntu bless 16字节每行
- asp mysql连接已重置,mysql-检查经典ASP中的连接是否正常
- redshift教程_分析和可视化Amazon Redshift数据—教程
- 索引---B+Tree
- c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔
- 华东理工计算机与金融专业,2019年华东理工大学各专业录取分数线
- Token实现单点登陆
- Java多线程学习十:线程池实现“线程复用”的原理
- Spring, Hibernate and Oracle Stored Procedures
- OkHttp之BridgeInterceptor简单分析
- 2021-12-08 根据XPS 价带谱计算价带谱中心
- pdf页面倒序如何调整?
- RNA-seq Review:RNA-seq数据分析
- 安装wordpress时Error establishing a database connection
- android studio 报错 AAPT: error: style attribute ‘attr/colorPrimary (aka com.
- 成功解决win7安装python过程,Setup failed,需要安装Windows 7 Service Pack 1
- 怎么用快捷键快速切换电脑
- 大量C语言、C++、C#、VC编程相关书籍下载
- python输出换行
- k8s搭建gluster集群以及安装nfs-ganesha
热门文章
- mysql fsync_mysql分组提交和实时fsync
- 某人去玩具店买小熊,小熊进价为20,卖价是30,付给老板100元,老板没有零钱,就在卖鞋的人那里换了100元零钱,找给卖家70,卖鞋的发现那100元是假币,于是找老板换回了100元,请问玩具店老板损失
- linux 无线网卡的安装
- java.lang.SecurityException: Permission Denial: startForeground from pid=29734, uid=10484 requires
- 科研管理系统使用手册
- App 被拒后向Apple获取帮助或申诉渠道汇总
- mysql mybatis list循环_Springbatch集成mybatis循环批量读取mysql
- 聊聊 SQLAlchemy 连接池中的连接失效问题
- 【数据结构-N】哈夫曼树带权路径计算
- 思科设备遭攻击:国内N家中招,出现美国国旗,配置清空