钟表维修管理系统技术解析(八) 保修记录、新增、修改、报废

新增功能实现

新增功能就是录入保修单,详细代码看录入保修单模块。

新增按钮的单击事件。


private void btnXinZeng_Click(object sender, EventArgs e)
        {
            TabPage myTabPage = new TabPage("录入保修单");//创建选项卡页,并命名Text
            frmMain myfrmMain = new frmMain();//实例化主界面
            myfrmMain.XuanXian(myTabControlp, myTabPage);//调用主界面的方法
            frmXiaoShouBaoXiu_Insert myfrmXiaoShouBaoXiu_Insert = new frmXiaoShouBaoXiu_Insert(myTabControlp);//实例化录入保修单窗体
            myfrmXiaoShouBaoXiu_Insert.TopLevel = false;//设置让窗体不是顶级窗口
            myfrmXiaoShouBaoXiu_Insert.Parent = myTabPage;//设置窗体的父容器
            myfrmXiaoShouBaoXiu_Insert.Show();//弹出窗体
        }

/// <param name="myTabControl">主界面的选项卡集</param>
        /// <param name="myTabPage">选项卡</param>
        public void XuanXian(TabControl myTabControl, TabPage myTabPage)
        {
            bool bolPanDuan = false;//bool变量,用于判断是否已经有需要创建的选项卡
            int intSuoYin = 0;
            for (int i = 0; i < myTabControl.TabCount; i++)
            {
                if (myTabControl.TabPages[i].Text == myTabPage.Text)//判断是否存在需要创建的选项卡
                {
                    intSuoYin = i;//获取选项卡的索引
                    bolPanDuan = true;
                    break;
                }
            }
            if (bolPanDuan)
            {
                myTabControl.SelectedTab = myTabControl.TabPages[intSuoYin];//设置当前选项卡
            }
            else
            {
                myTabControl.TabPages.Add(myTabPage);//添加选项卡
                myTabControl.SelectedTab = myTabPage;//设置当前选项卡
            }
        }
修改功能实现,界面如(图1)所示。

(图1)

第一步:修改按钮的单击事件


private void btnXiuGai_Click(object sender, EventArgs e)
        {
            if (dgvBaoXiuDan.Rows.Count > 0)//判断当前保修单DGV有没有数据
            {
                int intBaoXiuDanID = Convert.ToInt32(dgvBaoXiuDan.CurrentRow.Cells["销售保修单ID"].Value);//获取当前行的销售保修单ID
                frmXiaoShouBaoXiu_Update myfrmXiaoShouBaoXiu_Update = new frmXiaoShouBaoXiu_Update(intBaoXiuDanID);//实例化修改保修单窗体,并把保修单ID传过去
                myfrmXiaoShouBaoXiu_Update.ShowDialog();//弹出窗体
                dgvBaoXiuDan.DataSource = ChaXunShuJu(intPageSize, intPageIndex, false, true);//修改保修单窗体关闭后,调用查询按钮(刷新)
            }
            else
            {
                MessageBox.Show("当前销售保修单为空,请查询后再操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

第二步:修改保修单窗体的构造方法和全局变量

BLL.BLL_XiaoShouGuanLi.frmXiaoShouBaoXiu myfrmXiaoShouBaoXiu = new BLL.BLL_XiaoShouGuanLi.frmXiaoShouBaoXiu();//实例化逻辑层
        int intBaoXiuDanID = 0;//保修单ID
        int intXiaoShouDanID = 0;//销售单ID
        DataTable dtBao frmXiaoShouBaoXiu XiuDanMingXi = new DataTable();//保修单明细表
        public _Update(int BaoXiuDanID)
        {
            intBaoXiuDanID = BaoXiuDanID;//获取传过来的保修单ID
            InitializeComponent();
            btnBaoCun.BackColor = Color.FromArgb(80, 225, 225, 225);//设置Button控件的背景颜色
        }

第三步:修改保修单窗体的Load事件

(1)数据库的存储过程

IF (@type='frmXiaoShouBaoXiu_Update_Load_SelectBaoXiuDan')
	BEGIN
	SELECT     pw_XiaoShouShouHouDan.XiaoShouShouHouDanID, pw_XiaoShouShouHouDan.XiaoShouDanID, pw_XiaoShouShouHouDan.XiaoShouShouHouLeiXingID, 
						  pw_XiaoShouShouHouDan.XiaoShouShouHouDanBianHao, pw_XiaoShouShouHouDan.RiQi, pw_XiaoShouShouHouDan.JinE, pw_XiaoShouShouHouDan.BeiZhu, 
						  pw_XiaoShouDan.XiaoShouDanBianHao, sys_KeHu.KeHuID, sys_KeHu.KeHuBianHao, sys_KeHu.KeHuXingMing, pw_XiaoShouDan.FuKuanZhuangTaiID
	FROM         pw_XiaoShouShouHouDan INNER JOIN
						  pw_XiaoShouDan ON pw_XiaoShouShouHouDan.XiaoShouDanID = pw_XiaoShouDan.XiaoShouDanID INNER JOIN
						  sys_KeHu ON pw_XiaoShouDan.KeHuID = sys_KeHu.KeHuID  
	WHERE		pw_XiaoShouShouHouDan.XiaoShouShouHouDanID=@XiaoShouShouHouDanID
	END

IF (@type='frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouBaoXiuDanMingXi')
	BEGIN
	SELECT     sys_ChanPinZiLiao.ChanPinID, sys_ChanPinZiLiao.ChanPinMingCheng, sys_ChanPinZiLiao.ChanPinBianHao, sys_ChanPinZiLiao.ChanPinZhongLeiID, sys_PinZhong.PinZhongMingCheng, 
						  sys_ChanPinZiLiao.ChanPinPinPaiID, sys_PinPai.PinPaiMingCheng, pw_XiaoShouShouHouDanMingXi.DanJia, pw_XiaoShouShouHouDanMingXi.ShuLiang, 
						  pw_XiaoShouShouHouDanMingXi.XiaoShouDanMingXiID, pw_XiaoShouDanMingXi.CangWeiID, pw_XiaoShouDanMingXi.DanJia AS XiaoShouDanJia, pw_XiaoShouDanMingXi.ShuLiang AS XiaoShouShuLiang, 
						  pw_XiaoShouDanMingXi.YiTuiHuoShu
	FROM         sys_ChanPinZiLiao INNER JOIN
						  sys_PinZhong ON sys_ChanPinZiLiao.ChanPinZhongLeiID = sys_PinZhong.PinZhongID INNER JOIN
						  sys_PinPai ON sys_ChanPinZiLiao.ChanPinPinPaiID = sys_PinPai.PinPaiID INNER JOIN
						  pw_XiaoShouShouHouDanMingXi ON sys_ChanPinZiLiao.ChanPinID = pw_XiaoShouShouHouDanMingXi.ChanPinID INNER JOIN
						  pw_XiaoShouDanMingXi ON pw_XiaoShouShouHouDanMingXi.XiaoShouDanMingXiID = pw_XiaoShouDanMingXi.XiaoShouDanMingXiID
	WHERE		pw_XiaoShouShouHouDanMingXi.XiaoShouShouHouDanID=@XiaoShouShouHouDanID
	END

IF (@type='frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouDanMingXi')
	BEGIN
	SELECT     sys_ChanPinZiLiao.ChanPinBianHao, sys_ChanPinZiLiao.ChanPinMingCheng, pw_XiaoShouDanMingXi.CangWeiID, pw_XiaoShouDanMingXi.DanJia AS XiaoShouDanJia, 
						  pw_XiaoShouDanMingXi.ShuLiang AS XiaoShouShuLiang, pw_XiaoShouDanMingXi.YiTuiHuoShu, sys_PinZhong.PinZhongMingCheng, sys_PinPai.PinPaiID, sys_PinPai.PinPaiMingCheng, 
						  pw_XiaoShouDanMingXi.XiaoShouDanID, pw_XiaoShouDanMingXi.XiaoShouDanMingXiID, sys_ChanPinZiLiao.ChanPinID
	FROM         pw_XiaoShouDanMingXi INNER JOIN
						  sys_ChanPinZiLiao ON pw_XiaoShouDanMingXi.ChanPinID = sys_ChanPinZiLiao.ChanPinID INNER JOIN
						  sys_PinZhong ON sys_ChanPinZiLiao.ChanPinZhongLeiID = sys_PinZhong.PinZhongID INNER JOIN
						  sys_PinPai ON sys_ChanPinZiLiao.ChanPinPinPaiID = sys_PinPai.PinPaiID
	WHERE		pw_XiaoShouDanMingXi.YouXiaoFou=1 AND pw_XiaoShouDanMingXi.XiaoShouDanID=@XiaoShouDanID
	END

(2)逻辑层代码

public DataTable frmXiaoShouBaoXiu_Update_Load_SelectBaoXiuDan(int intXiaoShouShouHouDanID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouShouHouDanID",SqlDbType.Char)
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Update_Load_SelectBaoXiuDan";
            mySqlParameters[1].Value = intXiaoShouShouHouDanID;

            return myDALMethod.QueryDataTable("frmXiaoShouBaoXiu", mySqlParameters);
        }

public DataTable frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouBaoXiuDanMingXi(int intXiaoShouShouHouDanID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouShouHouDanID",SqlDbType.Char)
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouBaoXiuDanMingXi";
            mySqlParameters[1].Value = intXiaoShouShouHouDanID;

            return myDALMethod.QueryDataTable("frmXiaoShouBaoXiu", mySqlParameters);
        }

public DataTable frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouDanMingXi(int intXiaoShouDanID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouDanID",SqlDbType.Char)
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouDanMingXi";
            mySqlParameters[1].Value = intXiaoShouDanID;

            return myDALMethod.QueryDataTable("frmXiaoShouBaoXiu", mySqlParameters);
        }

(3)界面层代码,Load事件

private void frmXiaoShouBaoXiu_Update_Load(object sender, EventArgs e)
        {
            dgvChanPinMingXi.AllowUserToAddRows = false;//设置不让用户手动添加行
            dgvChanPinMingXi.AutoGenerateColumns = false;//设置不能自动添加列

            cboFuKuanZhuangTai.DataSource = myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Insert_Load_SelectFuKuanZhuangTai();//查询付款状态明细,并赋值到下拉框的数据源
            cboFuKuanZhuangTai.DisplayMember = "ShuXingMingXiMingCheng";//设置显示文本
            cboFuKuanZhuangTai.ValueMember = "ShuXingMingXiID";//设置值文本
            cboFuKuanZhuangTai.SelectedIndex = -1;//下拉框默认未选择

            BangDingTuiHuoDan();
        }
private void BangDingTuiHuoDan()
        {
            DataTable dtBaoXiuDan = myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Update_Load_SelectBaoXiuDan(intBaoXiuDanID);//用保修单ID,查询出保修单信息
            intXiaoShouDanID = Convert.ToInt32(dtBaoXiuDan.Rows[0]["XiaoShouDanID"]);//获取销售单ID
            dtpBaoXiuRiQi.Value = Convert.ToDateTime(dtBaoXiuDan.Rows[0]["RiQi"].ToString().Trim());//获取日期
            txtKeHuMingCheng.Text = dtBaoXiuDan.Rows[0]["KeHuXingMing"].ToString().Trim();//获取客户
            txtBaoXiuDanBianHao.Text = dtBaoXiuDan.Rows[0]["XiaoShouShouHouDanBianHao"].ToString().Trim();//获取保修单编号
            txtBaoXiuNeiRong.Text = dtBaoXiuDan.Rows[0]["BeiZhu"].ToString().Trim();//获取备注
            txtBaoXiuFeiYong.Text = dtBaoXiuDan.Rows[0]["JinE"].ToString().Trim();//获取金额
            txtXiaoShouDanBianHao.Text = dtBaoXiuDan.Rows[0]["XiaoShouDanBianHao"].ToString().Trim();//获取销售单编号
            cboFuKuanZhuangTai.SelectedValue = Convert.ToInt32(dtBaoXiuDan.Rows[0]["FuKuanZhuangTaiID"]);//获取付款状态

            dtBaoXiuDanMingXi = myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouBaoXiuDanMingXi(intBaoXiuDanID);//用保修单ID,查询出保修单明细信息
            dtBaoXiuDanMingXi.Columns.Add("XiaoShouXiaoJi", typeof(string));//新增列(销售金额小计)
            dtBaoXiuDanMingXi.Columns.Add("XiaoJi", typeof(string));//新增列(保修金额小计)

            DataTable dtXiaoShouDanMingXi = myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Select_btnChaXun_SelectXiaoShouDanMingXi(Convert.ToInt32(dtBaoXiuDan.Rows[0]["XiaoShouDanID"]));//用销售单ID,查询出销售单明细信息

            for (int i = 0; i < dtXiaoShouDanMingXi.Rows.Count; i++)//循环销售单明细表
            {
                bool bolYouWu = false;//定义一个bool型变量,用于判断保修了哪些产品
                for (int j = 0; j < dtBaoXiuDanMingXi.Rows.Count; j++)//循环保修单明细表
                {
                    if (Convert.ToInt32(dtBaoXiuDanMingXi.Rows[j]["XiaoShouDanMingXiID"]) == Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["XiaoShouDanMingXiID"]))//判断两张表,是否有相等的销售单ID
                    {
                        bolYouWu = true;//如果有,则赋值为True
                        break;//跳出保修单明细表循环
                    }
                }
                if (bolYouWu == false)//如果是False,则表示没找到相等的销售单ID
                {
                    dtBaoXiuDanMingXi.Rows.Add();//添加一行,把销售单明细的各项信息赋值到保修单明细中
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["ChanPinID"] = dtXiaoShouDanMingXi.Rows[i]["ChanPinID"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["ChanPinBianHao"] = dtXiaoShouDanMingXi.Rows[i]["ChanPinBianHao"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["ChanPinMingCheng"] = dtXiaoShouDanMingXi.Rows[i]["ChanPinMingCheng"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["CangWeiID"] = dtXiaoShouDanMingXi.Rows[i]["CangWeiID"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["XiaoShouDanJia"] = dtXiaoShouDanMingXi.Rows[i]["XiaoShouDanJia"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["XiaoShouShuLiang"] = dtXiaoShouDanMingXi.Rows[i]["XiaoShouShuLiang"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["YiTuiHuoShu"] = dtXiaoShouDanMingXi.Rows[i]["YiTuiHuoShu"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["PinZhongMingCheng"] = dtXiaoShouDanMingXi.Rows[i]["PinZhongMingCheng"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["PinPaiMingCheng"] = dtXiaoShouDanMingXi.Rows[i]["PinPaiMingCheng"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["XiaoShouDanMingXiID"] = dtXiaoShouDanMingXi.Rows[i]["XiaoShouDanMingXiID"];
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["ShuLiang"] = 0;//保修数量默认为0
                    dtBaoXiuDanMingXi.Rows[dtBaoXiuDanMingXi.Rows.Count - 1]["DanJia"] = 0;//保修单价默认为0
                }
                dtBaoXiuDanMingXi.Rows[i]["XiaoShouXiaoJi"] = (Convert.ToDecimal(dtBaoXiuDanMingXi.Rows[i]["XiaoShouDanJia"]) * Convert.ToDecimal(dtBaoXiuDanMingXi.Rows[i]["XiaoShouShuLiang"])).ToString();//计算销售小计
                dtBaoXiuDanMingXi.Rows[i]["XiaoJi"] = (Convert.ToDecimal(dtBaoXiuDanMingXi.Rows[i]["DanJia"]) * Convert.ToDecimal(dtBaoXiuDanMingXi.Rows[i]["ShuLiang"])).ToString();//计算保修小计
            }

            for (int i = 0; i < dtBaoXiuDanMingXi.Rows.Count; i++)//循环保修单明细表,把保修单明细表中的数据赋值给产品明细DGV
            {
                dgvChanPinMingXi.Rows.Add();//添加一行,以下是给刚添加的行的单元格逐个赋值
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["销售单明细ID"].Value = dtBaoXiuDanMingXi.Rows[i]["XiaoShouDanMingXiID"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["仓位ID"].Value = dtBaoXiuDanMingXi.Rows[i]["CangWeiID"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["产品ID"].Value = dtBaoXiuDanMingXi.Rows[i]["ChanPinID"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["产品编号"].Value = dtBaoXiuDanMingXi.Rows[i]["ChanPinBianHao"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["产品名称"].Value = dtBaoXiuDanMingXi.Rows[i]["ChanPinMingCheng"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["产品品牌"].Value = dtBaoXiuDanMingXi.Rows[i]["PinPaiMingCheng"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["产品种类"].Value = dtBaoXiuDanMingXi.Rows[i]["PinZhongMingCheng"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["销售数量"].Value = dtBaoXiuDanMingXi.Rows[i]["XiaoShouShuLiang"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["销售单价"].Value = dtBaoXiuDanMingXi.Rows[i]["XiaoShouDanJia"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["销售小计"].Value = dtBaoXiuDanMingXi.Rows[i]["XiaoShouXiaoJi"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["已退货数"].Value = dtBaoXiuDanMingXi.Rows[i]["YiTuiHuoShu"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["保修数量"].Value = dtBaoXiuDanMingXi.Rows[i]["ShuLiang"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["保修单价"].Value = dtBaoXiuDanMingXi.Rows[i]["DanJia"].ToString().Trim();
                dgvChanPinMingXi.Rows[dgvChanPinMingXi.Rows.Count - 1].Cells["保修小计"].Value = dtBaoXiuDanMingXi.Rows[i]["XiaoJi"].ToString().Trim();
                if (Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["保修数量"].Value) > 0)//如果保修数量大于0,说明已经是已经选择的
                {
                    dgvChanPinMingXi.Rows[i].Cells["选择"].Value = true;
                }
            }

        }

第四步:产品明细DGV的行完成验证时发生的事件,在[录入保修单]中有详细介绍

http://blog.csdn.net/gxlizhongbao/article/details/46316381

第五步:保存按钮的单击事件


(1)数据库的存储过程

IF (@type='frmXiaoShouBaoXiu_Update_btnBaoCun_UpdateXiaoShouBaoXiuDan')
	BEGIN
	BEGIN TRAN 
		UPDATE		pw_XiaoShouShouHouDan
		SET			YouXiaoFou=0,GengXinShiJian=GETDATE()
		WHERE		XiaoShouShouHouDanID=@XiaoShouShouHouDanID
		
		INSERT		pw_XiaoShouShouHouDan(XiaoShouDanID, XiaoShouShouHouLeiXingID, XiaoShouShouHouDanBianHao, RiQi, JinE, BeiZhu,LuRuYuanID)
		VALUES		(@XiaoShouDanID, @XiaoShouShouHouLeiXingID, @XiaoShouShouHouDanBianHao, @RiQi, @JinE, @BeiZhu,@LuRuYuanID)
		
		SELECT		@@IDENTITY
	COMMIT TRAN
	END

IF (@type='frmXiaoShouBaoXiu_Insert_btnBaoCun_InsertXiaoShouBaoXiuDanMingXi')
	BEGIN
		INSERT		pw_XiaoShouShouHouDanMingXi(XiaoShouShouHouDanID, ChanPinID, DanJia, ShuLiang,XiaoShouDanMingXiID)
		VALUES		(@XiaoShouShouHouDanID, @ChanPinID, @DanJia, @ShuLiang,@XiaoShouDanMingXiID)
	END

(2)逻辑层代码

public DataTable frmXiaoShouBaoXiu_Update_btnBaoCun_UpdateXiaoShouBaoXiuDan(int intXiaoShouDanID, int intXiaoShouShouHouLeiXingID, string strXiaoShouShouHouDanBianHao, DateTime dtmRiQi, decimal decJinE, string strBeiZhu, int intXiaoShouShouHouDanID,int intLuRuYuanID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouDanID",SqlDbType.Int),
                                                new SqlParameter("@XiaoShouShouHouLeiXingID",SqlDbType.Int),
                                                new SqlParameter("@XiaoShouShouHouDanBianHao",SqlDbType.Char),
                                                new SqlParameter("@RiQi",SqlDbType.Date),
                                                new SqlParameter("@JinE",SqlDbType.Decimal),
                                                new SqlParameter("@BeiZhu",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouShouHouDanID",SqlDbType.Char),
                                                new SqlParameter("@LuRuYuanID",SqlDbType.Int),
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Update_btnBaoCun_UpdateXiaoShouBaoXiuDan";
            mySqlParameters[1].Value = intXiaoShouDanID;
            mySqlParameters[2].Value = intXiaoShouShouHouLeiXingID;
            mySqlParameters[3].Value = strXiaoShouShouHouDanBianHao;
            mySqlParameters[4].Value = dtmRiQi;
            mySqlParameters[5].Value = decJinE;
            mySqlParameters[6].Value = strBeiZhu;
            mySqlParameters[7].Value = intXiaoShouShouHouDanID;
            mySqlParameters[8].Value = intLuRuYuanID;

            return myDALMethod.QueryDataTable("frmXiaoShouBaoXiu", mySqlParameters);
        }

public int frmXiaoShouBaoXiu_Insert_btnBaoCun_InsertXiaoShouBaoXiuDanMingXi(int intXiaoShouShouHouDanID, int intChanPinID, decimal decDanJia, int intShuLiang, int intXiaoShouDanMingXiID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouShouHouDanID",SqlDbType.Int),
                                                new SqlParameter("@ChanPinID",SqlDbType.Int),
                                                new SqlParameter("@DanJia",SqlDbType.Decimal),
                                                new SqlParameter("@ShuLiang",SqlDbType.Int),
                                                new SqlParameter("@XiaoShouDanMingXiID",SqlDbType.Int),
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Insert_btnBaoCun_InsertXiaoShouBaoXiuDanMingXi";
            mySqlParameters[1].Value = intXiaoShouShouHouDanID;
            mySqlParameters[2].Value = intChanPinID;
            mySqlParameters[3].Value = decDanJia;
            mySqlParameters[4].Value = intShuLiang;
            mySqlParameters[5].Value = intXiaoShouDanMingXiID;

            return myDALMethod.UpdateData("frmXiaoShouBaoXiu", mySqlParameters);
        }

(3)界面层代码,保存按钮的单击事件

private void btnBaoCun_Click(object sender, EventArgs e)
        {
            bool bolXuanZe = false;//定义一个bool型变量,用于判断是否有选中需要保修的产品明细
            for (int i = 0; i < dgvChanPinMingXi.Rows.Count; i++)//循环产品明细表
            {
                if (Convert.ToBoolean(dgvChanPinMingXi.Rows[i].Cells["选择"].FormattedValue))//判断是否选中
                {
                    bolXuanZe = true;//如果有就把变量赋值为True
                    break;//跳出循环
                }
            }
            if (bolXuanZe == false)//如果没有选择产品,则提示选择,并且返回
            {
                MessageBox.Show("请打钩选择要保修的产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;//返回
            }
            int intXiaoShouShouHouLeiXingID = 50;//默认销售售后类型为保修
            string strXiaoShouShouHouDanBianHao = txtBaoXiuDanBianHao.Text;//获取保修单编号
            DateTime dtmRiQi = dtpBaoXiuRiQi.Value;//获取保修日期
            decimal decJinE = Convert.ToDecimal(txtBaoXiuFeiYong.Text);//获取保修总金额
            string strBeiZhu = txtBaoXiuNeiRong.Text;//获取备注
            int intLuRuYuanID=Convert.ToInt32(index2.strYuanGongXinXi[0]);//获取登录的员工的ID,作为录入员ID
            int intXiaoShouShouHouDanID = Convert.ToInt32(myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Update_btnBaoCun_UpdateXiaoShouBaoXiuDan(intXiaoShouDanID, intXiaoShouShouHouLeiXingID, strXiaoShouShouHouDanBianHao, dtmRiQi, decJinE, strBeiZhu, intBaoXiuDanID, intLuRuYuanID).Rows[0][0]);//根据保修单ID,把当前修改的保修单的有效否改为False,再新增一条数据,并把新的ID获取出来
            if (intXiaoShouShouHouDanID > 0)//判断上面的方法是否执行成功
            {
                int intXuanZeCiShu = 0;//选择产品明细的行数
                int intChengGongCiShu = 0;//成功保存的次数
                for (int i = 0; i < dgvChanPinMingXi.Rows.Count; i++)//循环产品明细表
                {
                    if (Convert.ToBoolean(dgvChanPinMingXi.Rows[i].Cells["选择"].FormattedValue))//判断是否已选
                    {
                        intXuanZeCiShu++;//选择行数自加1
                        int intXiaoShouDanMingXiID = Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["销售单明细ID"].Value);
                        int intChanPinID = Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["产品ID"].Value);
                        decimal decDanJia = Convert.ToDecimal(dgvChanPinMingXi.Rows[i].Cells["保修单价"].Value);
                        int intShuLiang = Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["保修数量"].Value);
                        if (myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Insert_btnBaoCun_InsertXiaoShouBaoXiuDanMingXi(intXiaoShouShouHouDanID, intChanPinID, decDanJia, intShuLiang, intXiaoShouDanMingXiID) > 0)//添加保修单明细
                        {
                            intChengGongCiShu++;//添加成功行数自加1
                        }
                    }
                }
                if (intChengGongCiShu == intXuanZeCiShu && intChengGongCiShu > 0)//判断是否全部添加成功
                {
                    MessageBox.Show("修改成功,销售保修编号【" + strXiaoShouShouHouDanBianHao + "】", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.Dispose();
                    this.Close();
                }
                else
                {
                    MessageBox.Show("修改失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("修改失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

报废功能实现

第一步:数据库的存储过程

IF (@type='frmXiaoShouBaoXiu_Select_btnBaoFei_DeleteXiaoShouBaoXiuDan')
	BEGIN
		UPDATE		pw_XiaoShouShouHouDan
		SET			YouXiaoFou=0,GengXinShiJian=GETDATE()
		WHERE		XiaoShouShouHouDanID=@XiaoShouShouHouDanID
	END

第二步:逻辑层代码

public int frmXiaoShouBaoXiu_Select_btnBaoFei_DeleteXiaoShouBaoXiuDan(int intXiaoShouShouHouDanID)
        {
            SqlParameter[] mySqlParameters ={
                                                new SqlParameter("@TYPE",SqlDbType.Char),
                                                new SqlParameter("@XiaoShouShouHouDanID",SqlDbType.Char)
                                            };
            mySqlParameters[0].Value = "frmXiaoShouBaoXiu_Select_btnBaoFei_DeleteXiaoShouBaoXiuDan";
            mySqlParameters[1].Value = intXiaoShouShouHouDanID;

            return myDALMethod.UpdateData("frmXiaoShouBaoXiu", mySqlParameters);
        }

第三步:界面层代码,报废按钮的单击事件


private void btnBaoFei_Click(object sender, EventArgs e)
        {
            if (dgvBaoXiuDan.Rows.Count > 0)//判断保修单DGV有没有数据
            {
                if (MessageBox.Show("确定要报废保修单编号为【" + dgvBaoXiuDan.CurrentRow.Cells["保修单编号"].Value.ToString().Trim() + "】的保修单吗?", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes)//提示用户,是否真的要报废此保修单,提示框有(Yes,No),如果点了Yes则继续执行
                {
                    int intBaoXiuDanID = Convert.ToInt32(dgvBaoXiuDan.CurrentRow.Cells["销售保修单ID"].Value);//获取当前行的销售保修单ID
                    if (myfrmXiaoShouBaoXiu.frmXiaoShouBaoXiu_Select_btnBaoFei_DeleteXiaoShouBaoXiuDan(intBaoXiuDanID) > 0)//根据销售保修单ID,把当前选中需要报销的保修单的有效否改为False
                    {
                        MessageBox.Show("报废成功!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        dgvBaoXiuDan.DataSource = ChaXunShuJu(intPageSize, intPageIndex, false, true);//成功报废后,调用查询按钮(刷新)
                    }
                    else
                    {
                        MessageBox.Show("报废失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                MessageBox.Show("当前销售保修单为空,请查询后再操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

注:此文章只供学习参考,禁止用于商业用途。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值