需要源码请点赞关注收藏后评论区留言私信~~~

一、物料清单模块概述

物料清单英文缩写为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管理系统 三:物料清单模块设计(附源码和资源)相关推荐

  1. 【C#+SQL Server】实现模仿QQ的交友软件 三:申请账号窗体设计讲解(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...

  2. 【C#+SQL Server】实现模仿QQ的交友软件 四:主窗体设计讲解(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...

  3. 【C#+SQL Server】实现模仿QQ的交友软件 五:聊天窗体设计讲解(附源码和资源)

    需要源码和资源请 点赞关注收藏后评论区留言私信~~~ 其他几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 一:系统简介.功能展示与数据库设计(附源码和资源) [C#+SQL ...

  4. 【C#+SQL Server】实现模仿QQ的交友软件 一:系统简介、功能展示与数据库设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其余几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 二:登录窗体设计讲解(附源码和资源) [C#+SQL Server] ...

  5. Web酒店管理系统(附源码及资源)

    Web酒店管理系统(附源码及资源) 一.系统概述: 二.系统功能分析 三.系统主要内容: 四.源码下载 五.总结 一.系统概述: 该系统通过Sublime Text编辑器编写完成,涉及到了htnl.c ...

  6. 【C#+Access+WindowsAPI】实现仿360的安全卫士 三:系统检测窗体设计(附源码和资源)

    需要源码和PPT请点赞关注收藏后评论区留言私信~~~ 其他部分文章链接如下 [C#+Access+WindowsAPI]实现仿360的安全卫士 一:功能展示与系统开发环境简介(附源码和资源 [C#+A ...

  7. 【C#+SQL Server】实现ERP管理系统 四:销售收款单模块设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.销售收款单模块概述 销售收款单是对已售商品确认收款的凭证,单据经过审核后,被正式确认,系统自动增加账户金额,审核后若要修改后者删除收款单,需要进 ...

  8. 【C#+SQL Server+打印组件】实现电商快递单打印系统 二:数据库设计与开发环境(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.系统开发环境要求 开发快递单打印精灵项目的计算机需要满足以上条件 操作系统:windows7以上 开发环境:Visual Studio 2022 ...

  9. 【C#+SQL Server+打印组件】实现电商快递单打印系统 五:自定义组件和快递单模板设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.自定义组件(扩展TextBox) 由于快递单种类较多,所以在设计系统时考虑开发一个通用模板,由用户根据自己使用的快递单样式自行定义快递单的文本输 ...

  10. 【C#+SQL Server+打印组件】实现电商快递单打印系统 五:快递单打印模块设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.快递单打印模块概述 由于一个用户可能使用多种类型的快递单,所以在快递单打印窗体中提供了自由选择快递单种类的功能,在确定使用某一种快递单后,程序将 ...

最新文章

  1. ubuntu bless 16字节每行
  2. asp mysql连接已重置,mysql-检查经典ASP中的连接是否正常
  3. redshift教程_分析和可视化Amazon Redshift数据—教程
  4. 索引---B+Tree
  5. c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔
  6. 华东理工计算机与金融专业,2019年华东理工大学各专业录取分数线
  7. Token实现单点登陆
  8. Java多线程学习十:线程池实现“线程复用”的原理
  9. Spring, Hibernate and Oracle Stored Procedures
  10. OkHttp之BridgeInterceptor简单分析
  11. 2021-12-08 根据XPS 价带谱计算价带谱中心
  12. pdf页面倒序如何调整?
  13. RNA-seq Review:RNA-seq数据分析
  14. 安装wordpress时Error establishing a database connection
  15. android studio 报错 AAPT: error: style attribute ‘attr/colorPrimary (aka com.
  16. 成功解决win7安装python过程,Setup failed,需要安装Windows 7 Service Pack 1
  17. 怎么用快捷键快速切换电脑
  18. 大量C语言、C++、C#、VC编程相关书籍下载
  19. python输出换行
  20. k8s搭建gluster集群以及安装nfs-ganesha

热门文章

  1. mysql fsync_mysql分组提交和实时fsync
  2. 某人去玩具店买小熊,小熊进价为20,卖价是30,付给老板100元,老板没有零钱,就在卖鞋的人那里换了100元零钱,找给卖家70,卖鞋的发现那100元是假币,于是找老板换回了100元,请问玩具店老板损失
  3. linux 无线网卡的安装
  4. java.lang.SecurityException: Permission Denial: startForeground from pid=29734, uid=10484 requires
  5. 科研管理系统使用手册
  6. App 被拒后向Apple获取帮助或申诉渠道汇总
  7. mysql mybatis list循环_Springbatch集成mybatis循环批量读取mysql
  8. 聊聊 SQLAlchemy 连接池中的连接失效问题
  9. 【数据结构-N】哈夫曼树带权路径计算
  10. 思科设备遭攻击:国内N家中招,出现美国国旗,配置清空