新增功能实现
新增功能就是录入保修单,详细代码看录入保修单模块。
新增按钮的单击事件。
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);
}
}
注:此文章只供学习参考,禁止用于商业用途。