肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 【C#+SQL Server】实现ERP管理系统 三:物料清单模块设计(附源码和资源)

【C#+SQL Server】实现ERP管理系统 三:物料清单模块设计(附源码和资源)

时间:2021-11-09 17:19:03

相关推荐

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

一、物料清单模块概述

物料清单英文缩写为BOM,用于描述产品的物理结构组成,子件按照一定的数量和装配工艺流程来构成母件,运行窗体如下图所示

二、设计物料清单窗体

该窗体主要用于管理物料清单,该窗体用到的控件如下

三、获取所以母件信息

创建两个类的实例 代码如下

using Class;//引入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管理系统 三:物料清单模块设计(附源码和资源)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。