导出Excel功能实现:
第一步:创建导出Excel的方法,参数是DataGridView
#region DataGridView导出到Excel,有一定的判断性
///方法,导出DataGridView中的数据到Excel文件
/// </summary>
/// <remarks>
/// add com "Microsoft Excel 11.0 Object Library"
/// using Excel=Microsoft.Office.Interop.Excel;
/// using System.Reflection;
/// </remarks>
/// <param name= "dgv"> DataGridView </param>
public static void DataGridViewToExcel(DataGridView dgv)
{
#region 验证可操作性
SaveFileDialog dlg = new SaveFileDialog();//申明保存对话框
dlg.DefaultExt = "xls ";//默然文件后缀
dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";//文件后缀列表
dlg.InitialDirectory = Directory.GetCurrentDirectory();//默然路径是系统当前路径
if (dlg.ShowDialog() == DialogResult.Cancel) return;//打开保存对话框
string fileNameString = dlg.FileName; //返回文件路径
if (fileNameString.Trim() == " ") //验证strFileName是否为空或值无效
{
MessageBox.Show("名字不能为空,请输入文件名字 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
int rowscount = dgv.Rows.Count; //定义表格内数据的行数和列数
int colscount = dgv.Columns.Count;
if (rowscount <= 0) //行数必须大于0
{
MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (colscount <= 0) //列数必须大于0
{
MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (rowscount > 65536) //行数不可以大于65536
{
MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (colscount > 255)//列数不可以大于255
{
MessageBox.Show("数据记录行数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
FileInfo file = new FileInfo(fileNameString); //验证以fileNameString命名的文件是否存在,如果存在删除它
if (file.Exists)
{
try
{
file.Delete();
}
catch (Exception error)
{
MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
#endregion
Microsoft.Office.Interop.Excel.Application objExcel = null;
Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;
Microsoft.Office.Interop.Excel.Worksheet objsheet = null;
try
{
objExcel = new Microsoft.Office.Interop.Excel.Application();//申明对象
objWorkbook = objExcel.Workbooks.Add(Missing.Value);
objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;
objExcel.Visible = false;//设置EXCEL不可见
int displayColumnsCount = 1; //向Excel中写入表格的表头
for (int i = 0; i <= dgv.ColumnCount - 1; i++)
{
if (dgv.Columns[i].Visible == true)
{
objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();
displayColumnsCount++;
}
}
for (int row = 0; row <= dgv.RowCount - 1; row++)
{
displayColumnsCount = 1;
for (int col = 0; col < colscount; col++)
{
if (dgv.Columns[col].Visible == true)
{
try
{
objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();
displayColumnsCount++;
}
catch (Exception)
{
}
}
}
}
objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
}
catch (Exception error)
{
MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
finally
{
//关闭Excel应用
if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);
if (objExcel.Workbooks != null) objExcel.Workbooks.Close();
if (objExcel != null) objExcel.Quit();
objsheet = null;
objWorkbook = null;
objExcel = null;
}
MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
第二步:导出Excel按钮的单击事件触发自定义的导出Excel方法
private void btnDaoChuEXCEL_Click(object sender, EventArgs e)
{
DataGridViewToExcel(dgvXiaoShouDan);
}
付款功能实现:
付款按钮的单击事件,付款窗体的代码在录入销售单中实现
private void btnFuKuan_Click(object sender, EventArgs e)
{
if (dgvXiaoShouDan.Rows.Count > 0)//判断DGV有没有数据
{
if (dgvXiaoShouDan.CurrentRow.Cells["付款状态"].Value.ToString().Trim() == "未付款")//只有是未付款的单据才能付款
{
int[] intXiaoShouDanIDs = new int[1];//声明整形数组(之所以用数组是因为录入销售单的时候会有再录一条功能)
intXiaoShouDanIDs[0] = Convert.ToInt32(dgvXiaoShouDan.CurrentRow.Cells["销售单ID"].Value);//获取当前行的销售单ID
int intGeShu = 1;//销售单的条数
frmXiaoShouKaiDan_JieZhang myfrmXiaoShouKaiDan_JieZhang = new frmXiaoShouKaiDan_JieZhang(intXiaoShouDanIDs,intGeShu,1);//实例化付款窗体
myfrmXiaoShouKaiDan_JieZhang.ShowDialog();//弹出付款窗体
dgvXiaoShouDan.DataSource = ChaXunShuJu(intPageSize, intPageIndex, false, true);//关闭付款窗体后自动查询一次(刷新)
}
else
{
MessageBox.Show("当前销售单已付款,不能执行付款操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);//提示
}
}
else
{
MessageBox.Show("当前销售单为空,请查询后再操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);//提示
}
}
新增功能实现:
新增功能就是录入销售单模块,具体实现在录入销售单中。
修改功能实现:
1、修改按钮的单击事件
private void btnXiuGai_Click(object sender, EventArgs e)
{
if (dgvXiaoShouDan.Rows.Count > 0)//判断DGV是否有数据
{
if (dgvXiaoShouDan.CurrentRow.Cells["付款状态"].Value.ToString().Trim() == "未付款")//判断是否已经付款
{
int intXiaoShouDanID = Convert.ToInt32(dgvXiaoShouDan.CurrentRow.Cells["销售单ID"].Value);//获取当前行的销售单ID
frmXiaoShouKaiDan_Update myfrmXiaoShouKaiDan_Update = new frmXiaoShouKaiDan_Update(intXiaoShouDanID);//实例化修改销售单窗体,并传销售单ID过去
myfrmXiaoShouKaiDan_Update.ShowDialog();//弹出修改窗体
dgvXiaoShouDan.DataSource = ChaXunShuJu(intPageSize, intPageIndex, false, true);//修改窗体关闭后,自动查询(刷新)一次
}
else
{
MessageBox.Show("当前销售单已付款,不能执行修改操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);//提示
}
}
else
{
MessageBox.Show("当前销售单为空,请查询后再操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);//提示
}
}
2、修改销售单窗体的代码
(1)在界面层(UIL)中建一个全局变量,然后在构造方法中给全局变量赋值
int intXiaoShouDanID = 0; //销售单ID
public frmXiaoShouKaiDan_Update(int XiaoShouDanID)
{
intXiaoShouDanID = XiaoShouDanID;//赋值
InitializeComponent();
}
(2)在窗体的Load事件中把销售单的各项信息赋值到各个控件中显示出来,DGV输入限制、自动计算金额、选择客户,选择品牌,选择产品,在录入销售单中给出代码
第二步:存储过程代码
IF (@TYPE = 'frmXiaoShouKaiDan_Insert_Load_SelectBaoXiuQi')
BEGIN
SELECT BaoXiuQiID, RTRIM(BaoXiuQiMingCheng) AS BaoXiuQiMingCheng,YouXiaoFou
--查询的列
FROM sys_BaoXiuQi
--从哪个表查询
END
IF (@TYPE = 'frmXiaoShouKaiDan_Insert_Load_SelectXiaoShouLeiXing')
BEGIN
SELECT ShuXingMingXiID AS ShuXingMingXiID,LTRIM(RTRIM(ShuXingMingXiMingCheng))AS ShuXingMingXiMingCheng
--查询的列
FROM sys_ShuXingMingXi
--从哪个表查询
WHERE ShuXingJiHeID=18 AND YouXiaoFou=1
--查询条件
END
IF (@TYPE = 'frmXiaoShouKaiDan_Insert_Load_SelectZhongBiaoKuanShi')
BEGIN
SELECT ShuXingMingXiID AS ShuXingMingXiID,LTRIM(RTRIM(ShuXingMingXiMingCheng))AS ShuXingMingXiMingCheng
--查询的列
FROM sys_ShuXingMingXi
--从哪个表查询
WHERE ShuXingJiHeID=28 AND YouXiaoFou=1
--查询条件
END
IF (@TYPE = 'frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDan')
BEGIN
SELECT pw_XiaoShouDan.XiaoShouDanID, pw_XiaoShouDan.KeHuID, RTRIM(LTRIM(sys_KeHu.KeHuXingMing)) AS KeHuXingMing, RTRIM(LTRIM(sys_KeHu.YiDongShouJi)) AS YiDongShouJi,
RTRIM(LTRIM(sys_KeHu.TongXunDiZhi)) AS TongXunDiZhi, pw_XiaoShouDan.LuRuYuanID, pw_XiaoShouDan.FuKuanZhuangTaiID, pw_XiaoShouDan.XiaoShouLeiXingID,
pw_XiaoShouDan.XiaoShouRiQi, pw_XiaoShouDan.YingShouJinE, pw_XiaoShouDan.ShiShouJinE, pw_XiaoShouDan.GengXinShiJian, RTRIM(LTRIM(pw_XiaoShouDan.BeiZhu)) AS BeiZhu,
RTRIM(LTRIM(pw_XiaoShouDan.XiaoShouDanBianHao)) AS XiaoShouDanBianHao, pw_XiaoShouDan.XiaoShouFangShiID, pw_XiaoShouDan.SongHuoFangShiID,
pw_XiaoShouDan.FuKuanFangShiID, pw_XiaoShouDan.FuKuanLeiXingID, pw_XiaoShouDan.PinPaiID, pw_XiaoShouDan.ZhongBiaoKuanShiID, pw_XiaoShouDan.DiKeHao,
sys_PinPai.PinPaiMingCheng
FROM pw_XiaoShouDan INNER JOIN
sys_KeHu ON pw_XiaoShouDan.KeHuID = sys_KeHu.KeHuID INNER JOIN
sys_PinPai ON pw_XiaoShouDan.PinPaiID = sys_PinPai.PinPaiID
WHERE pw_XiaoShouDan.XiaoShouDanID=@XiaoShouDanID
END
IF (@TYPE = 'frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDanMingXi')
BEGIN
SELECT pw_XiaoShouDanMingXi.ChanPinID, pw_XiaoShouDanMingXi.CangWeiID, RTRIM(sys_CangWei.CangWeiMingCheng) AS CangWeiMingCheng, sys_KuCun.KuCunShuLiang, pw_XiaoShouDanMingXi.DanJia,
pw_XiaoShouDanMingXi.ShuLiang, sys_ChanPinZiLiao.ChanPinZhongLeiID, sys_ChanPinZiLiao.ChanPinPinPaiID, RTRIM(sys_ChanPinZiLiao.ChanPinMingCheng) AS ChanPinMingCheng, RTRIM(sys_ChanPinZiLiao.ChanPinBianHao) AS ChanPinBianHao,
pw_XiaoShouDanMingXi.XiaoShouDanMingXiID, RTRIM(sys_PinPai.PinPaiMingCheng) AS PinPaiMingCheng, RTRIM(sys_PinZhong.PinZhongMingCheng) AS PinZhongMingCheng, pw_XiaoShouDanMingXi.BaoXiuQiID, RTRIM(pw_XiaoShouDan.XiaoShouDanBianHao) AS XiaoShouDanBianHao,
pw_XiaoShouDanMingXi.XiaoShouDanID
FROM pw_XiaoShouDanMingXi INNER JOIN
sys_ChanPinZiLiao ON pw_XiaoShouDanMingXi.ChanPinID = sys_ChanPinZiLiao.ChanPinID INNER JOIN
sys_CangWei ON pw_XiaoShouDanMingXi.CangWeiID = sys_CangWei.CangWeiID INNER JOIN
sys_KuCun ON sys_CangWei.CangWeiID = sys_KuCun.CangWeiID AND sys_ChanPinZiLiao.ChanPinID = sys_KuCun.ChanPinID INNER JOIN
sys_PinPai ON sys_ChanPinZiLiao.ChanPinPinPaiID = sys_PinPai.PinPaiID INNER JOIN
sys_PinZhong ON sys_ChanPinZiLiao.ChanPinZhongLeiID = sys_PinZhong.PinZhongID INNER JOIN
pw_XiaoShouDan ON pw_XiaoShouDanMingXi.XiaoShouDanID = pw_XiaoShouDan.XiaoShouDanID
WHERE pw_XiaoShouDanMingXi.XiaoShouDanID=@XiaoShouDanID
END
IF (@TYPE = 'frmXiaoShouKaiDan_Update_ChaXunChuRuKuDanJu')
BEGIN
SELECT DanJuBianHao
FROM pw_ChuRuKuDanJu
WHERE BeiZhu like '%' + LTRIM(RTRIM(@XiaoShouDanBianHao)) + '%' and YouXiaoFou=1
END
if @type='frmCaiGouGuanLi_Insert_RuKuDan'
begin
insert pw_ChuRuKuDanJu( LuRuYuanID, GongZuoZhanID, DanJuBianHao, RuKuFou,BeiZhu)
values (@LuRuYuanID, 4,@DanJuBianHao, 'true',@BeiZhu)
select @@IDENTITY
end
IF (@TYPE = 'frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi')
BEGIN
BEGIN TRAN
UPDATE sys_KuCun
SET KuCunShuLiang+=@ShuLiang,GengXinShiJian=GETDATE()
WHERE CangWeiID=@CangWeiID AND ChanPinID=@ChanPinID
COMMIT TRAN
END
IF (@TYPE = 'frmXiaoShouKaiDan_Insert_btnBaoCun_InsertXiaoShouDanMingXi')
BEGIN
BEGIN TRAN
INSERT pw_XiaoShouDanMingXi(XiaoShouDanID, ChanPinID, CangWeiID, DanJia, ShuLiang,BaoXiuQiID)
VALUES (@XiaoShouDanID, @ChanPinID, @CangWeiID, @DanJia, @ShuLiang,@BaoXiuQiID)
UPDATE sys_KuCun
SET KuCunShuLiang-=@ShuLiang,GengXinShiJian=GETDATE()
WHERE CangWeiID=@CangWeiID and ChanPinID=@ChanPinID
COMMIT TRAN
END
if @type='frmCaiGouTuiHuo_Insert_ChuKuMingXi'
begin
insert pw_ChuRuKuDanJuMingXi(ChuRuKuDanJuID, ChanPinID, CangWeiID, ShuLiang, JinE)
values (@ChuRuKuDanJuID, @ChanPinID, @CangWeiID, @ShuLiang, @JinE)
end
第三步:逻辑层(BLL)代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();//实例化数据层(DAL)
public DataTable frmXiaoShouKaiDan_Insert_Load_SelectBaoXiuQi()//方法名称
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char)//声明变量数组
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Insert_Load_SelectBaoXiuQi";//给变量数组的第一个赋值
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Insert", mySqlParameters);//第一个参数是数据库名称,第二个参数是数组
}
public DataTable frmXiaoShouKaiDan_Insert_Load_SelectXiaoShouLeiXing()
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char)
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Insert_Load_SelectXiaoShouLeiXing";
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Insert", mySqlParameters);
}
public DataTable frmXiaoShouKaiDan_Insert_Load_SelectZhongBiaoKuanShi()
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char)
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Insert_Load_SelectZhongBiaoKuanShi";
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Insert", mySqlParameters);
}
public DataTable frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDan(int intXiaoShouDanID)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanID",SqlDbType.Int)
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDan";
mySqlParameters[1].Value = intXiaoShouDanID;
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Update", mySqlParameters);
}
public DataTable frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDanMingXi(int intXiaoShouDanID)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanID",SqlDbType.Int)
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDanMingXi";
mySqlParameters[1].Value = intXiaoShouDanID;
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Update", mySqlParameters);
}
public DataTable frmXiaoShouKaiDan_Update_ChaXunChuRuKuDanJu(string strXiaoShouDanBianHao)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanBianHao",SqlDbType.Char),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_ChaXunChuRuKuDanJu";
mySqlParameters[1].Value = strXiaoShouDanBianHao;
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Update", mySqlParameters);
}
public DataTable frmCaiGouGuanLi_Insert_RuKuDan(int intLuRuYuanID, string strDanJuBianHao,string strBeiZhu)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@type",SqlDbType.Char),
new SqlParameter("@LuRuYuanID",SqlDbType.Int),
new SqlParameter("@DanJuBianHao",SqlDbType.Char),
new SqlParameter("@BeiZhu",SqlDbType.Char),
};
mySqlParameters[0].Value = "frmCaiGouGuanLi_Insert_RuKuDan";
mySqlParameters[1].Value = intLuRuYuanID;
mySqlParameters[2].Value = strDanJuBianHao;
mySqlParameters[3].Value = strBeiZhu;
return myDALMethod.QueryDataTable("frmCaiGouGuanLi", mySqlParameters);
}
public int frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi( int intChanPinID, int intCangWeiID, int intShuLiang)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@ChanPinID",SqlDbType.Int),
new SqlParameter("@CangWeiID",SqlDbType.Int),
new SqlParameter("@ShuLiang",SqlDbType.Int),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi";
mySqlParameters[1].Value = intChanPinID;
mySqlParameters[2].Value = intCangWeiID;
mySqlParameters[3].Value = intShuLiang;
return myDALMethod.UpdateData("frmXiaoShouKaiDan_Update", mySqlParameters);
}
public int frmXiaoShouKaiDan_Insert_btnBaoCun_InsertXiaoShouDanMingXi(int intXiaoShouDanID, int intChanPinID, int intCangWeiID, decimal decDanJia, int intShuLiang,int intBaoXiuQiID)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanID",SqlDbType.Int),
new SqlParameter("@ChanPinID",SqlDbType.Int),
new SqlParameter("@CangWeiID",SqlDbType.Int),
new SqlParameter("@DanJia",SqlDbType.Decimal),
new SqlParameter("@ShuLiang",SqlDbType.Int),
new SqlParameter("@BaoXiuQiID",SqlDbType.Int),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Insert_btnBaoCun_InsertXiaoShouDanMingXi";
mySqlParameters[1].Value = intXiaoShouDanID;
mySqlParameters[2].Value = intChanPinID;
mySqlParameters[3].Value = intCangWeiID;
mySqlParameters[4].Value = decDanJia;
mySqlParameters[5].Value = intShuLiang;
mySqlParameters[6].Value = intBaoXiuQiID;
return myDALMethod.UpdateData("frmXiaoShouKaiDan_Insert", mySqlParameters);
}
public DataTable frmCaiGouTuiHuo_Insert_ChuKuMingXi(int intChuRuKuDanJuID, int intChanPinID, int intCangWeiID, int intShuLiang)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@type",SqlDbType.Char),
new SqlParameter("@ChuRuKuDanJuID",SqlDbType.Int),
new SqlParameter("@ChanPinID",SqlDbType.Int),
new SqlParameter("@CangWeiID",SqlDbType.Int),
new SqlParameter("@ShuLiang",SqlDbType.Int),
};
mySqlParameters[0].Value = "frmCaiGouTuiHuo_Insert_ChuKuMingXi";
mySqlParameters[1].Value = intChuRuKuDanJuID;
mySqlParameters[2].Value = intChanPinID;
mySqlParameters[3].Value = intCangWeiID;
mySqlParameters[4].Value = intShuLiang;
return myDALMethod.QueryDataTable("frmCaiGouTuiHuo", mySqlParameters);
}
第四步 :界面层(UIL)代码,Load事件
BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Insert myfrmXiaoShouKaiDan_Insert = new BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Insert();
BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Update myfrmXiaoShouKaiDan_Update = new BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Update();
BLL.BLLCaiGouGuanLi.frmCaiGouGuanLi myfrmCaiGouGuanLi = new BLL.BLLCaiGouGuanLi.frmCaiGouGuanLi();
BLL.BLLCaiGouGuanLi.frmCaiGouTuiHuo myfrmCaiGouTuiHuo = new BLL.BLLCaiGouGuanLi.frmCaiGouTuiHuo();
DataTable dtBaoXiuQi = new DataTable();//全局变量
DataTable dtBaoXiuQiWeiShanChu = new DataTable();//全局变量
private void frmXiaoShouKaiDan_Update_Load(object sender, EventArgs e)
{
dtBaoXiuQi = myfrmXiaoShouKaiDan_Insert.frmXiaoShouKaiDan_Insert_Load_SelectBaoXiuQi();//查询保修期表,查询出保修期ID和保修期名称和有效否
dtBaoXiuQiWeiShanChu.Columns.Add("BaoXiuQiMingCheng", typeof(string));//给dtBaoXiuQiWeiShanChu添加列,第一个参数是列名,第二个参数是数据类型
dtBaoXiuQiWeiShanChu.Columns.Add("BaoXiuQiID", typeof(int));
dtBaoXiuQiWeiShanChu.Columns.Add("YouXiaoFou", typeof(bool));
for (int i = 0; i < dtBaoXiuQi.Rows.Count; i++)
{
if (Convert.ToBoolean(dtBaoXiuQi.Rows[i]["YouXiaoFou"]))//循环判断dtBaoXiuQi,把有效否(YouXiaoFou)为True的添加到dtBaoXiuQiWeiShanChu中
{
dtBaoXiuQiWeiShanChu.Rows.Add();//添加一行空行
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["BaoXiuQiMingCheng"] = dtBaoXiuQi.Rows[i]["BaoXiuQiMingCheng"].ToString().Trim();//赋值
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["BaoXiuQiID"] = Convert.ToInt32(dtBaoXiuQi.Rows[i]["BaoXiuQiID"]);
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["YouXiaoFou"] = true;
}
}
//保修期为什么不只是,把有效否为True的查出来?因为这里是修改,而旧单据中选择的保修期可能已经被删除,赋值环节没有被删除的保修期,会出错
保修期.DataSource = dtBaoXiuQiWeiShanChu;//绑定数据源
保修期.DisplayMember = "BaoXiuQiMingCheng";//绑定显示文本
保修期.ValueMember = "BaoXiuQiID";//绑定ID
cboKuanShi.DataSource = myfrmXiaoShouKaiDan_Insert.frmXiaoShouKaiDan_Insert_Load_SelectZhongBiaoKuanShi();//绑定数据源
cboKuanShi.DisplayMember = "ShuXingMingXiMingCheng";//绑定显示文本
cboKuanShi.ValueMember = "ShuXingMingXiID";//绑定ID
cboXiaoShouLeiXing.DataSource = myfrmXiaoShouKaiDan_Insert.frmXiaoShouKaiDan_Insert_Load_SelectXiaoShouLeiXing();
cboXiaoShouLeiXing.DisplayMember = "ShuXingMingXiMingCheng";
cboXiaoShouLeiXing.ValueMember = "ShuXingMingXiID";
try
{
DataTable dtXiaoShouDan = myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDan(intXiaoShouDanID);//根据销售单ID查询出销售单,以下都是赋值
dtpXiaoShouRiQi.Value = Convert.ToDateTime(dtXiaoShouDan.Rows[0]["XiaoShouRiQi"]);
intKeHuID = Convert.ToInt32(dtXiaoShouDan.Rows[0]["KeHuID"]);
intPinPaiID = Convert.ToInt32(dtXiaoShouDan.Rows[0]["PinPaiID"]);
txtPinPai.Text = dtXiaoShouDan.Rows[0]["PinPaiMingCheng"].ToString().Trim();
txtDiKeHao.Text = dtXiaoShouDan.Rows[0]["DiKeHao"].ToString().Trim();
txtBeiZhu.Text = dtXiaoShouDan.Rows[0]["BeiZhu"].ToString().Trim();
txtKeHuXingMing.Text = dtXiaoShouDan.Rows[0]["KeHuXingMing"].ToString().Trim();
txtLianXiDianHua.Text = dtXiaoShouDan.Rows[0]["YiDongShouJi"].ToString().Trim();
txtLianXiDiZhi.Text = dtXiaoShouDan.Rows[0]["TongXunDiZhi"].ToString().Trim();
txtXiaoShouDanBianHao.Text = dtXiaoShouDan.Rows[0]["XiaoShouDanBianHao"].ToString().Trim();
try//出错后调到catch { }中(catch { })里面是空的,所以没什么事发生
{
cboKuanShi.SelectedValue = Convert.ToInt32(dtXiaoShouDan.Rows[0]["ZhongBiaoKuanShiID"]);
cboXiaoShouLeiXing.SelectedValue = Convert.ToInt32(dtXiaoShouDan.Rows[0]["XiaoShouLeiXingID"]);
}
catch { }
dtXiaoShouDanMingXi = myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_Load_SelectXiaoShouDanMingXi(intXiaoShouDanID);//根据销售单ID查出销售单明细
for (int i = 0; i < dtXiaoShouDanMingXi.Rows.Count; i++)//销售单明细循环添加到DGV里面
{
dgvChanPinMingXi.Rows.Add(1);
dgvChanPinMingXi.Rows[i].Cells["产品ID"].Value = dtXiaoShouDanMingXi.Rows[i]["ChanPinID"];
dgvChanPinMingXi.Rows[i].Cells["所在仓位ID"].Value = dtXiaoShouDanMingXi.Rows[i]["CangWeiID"];
dgvChanPinMingXi.Rows[i].Cells["编号"].Value = dtXiaoShouDanMingXi.Rows[i]["ChanPinBianHao"];
dgvChanPinMingXi.Rows[i].Cells["名称"].Value = dtXiaoShouDanMingXi.Rows[i]["ChanPinMingCheng"];
dgvChanPinMingXi.Rows[i].Cells["品牌"].Value = dtXiaoShouDanMingXi.Rows[i]["PinPaiMingCheng"];
dgvChanPinMingXi.Rows[i].Cells["品种"].Value = dtXiaoShouDanMingXi.Rows[i]["PinZhongMingCheng"];
dgvChanPinMingXi.Rows[i].Cells["所在仓位"].Value = dtXiaoShouDanMingXi.Rows[i]["CangWeiMingCheng"];
dgvChanPinMingXi.Rows[i].Cells["销售价格"].Value = dtXiaoShouDanMingXi.Rows[i]["DanJia"];
dgvChanPinMingXi.Rows[i].Cells["销售数量"].Value = dtXiaoShouDanMingXi.Rows[i]["ShuLiang"];
dgvChanPinMingXi.Rows[i].Cells["库存数"].Value = Convert.ToDecimal(dtXiaoShouDanMingXi.Rows[i]["KuCunShuLiang"]) + Convert.ToDecimal(dgvChanPinMingXi.Rows[i].Cells["销售数量"].Value);
dgvChanPinMingXi.Rows[i].Cells["小计"].Value = Convert.ToDecimal(dgvChanPinMingXi.Rows[i].Cells["销售价格"].Value) * Convert.ToDecimal(dgvChanPinMingXi.Rows[i].Cells["销售数量"].Value);
try//try{}catch{}代码,try中如果有出错,直接跳到catch{}中,防止系统崩溃
{
for (int j = 0; j < dtBaoXiuQi.Rows.Count; j++)
{
if (Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["BaoXiuQiID"]) == Convert.ToInt32(dtBaoXiuQi.Rows[j]["BaoXiuQiID"]))//循环判断dtBaoXiuQi中,与销售单明细中保修期ID相等的行
{
if (Convert.ToBoolean(dtBaoXiuQi.Rows[j]["YouXiaoFou"]))//如果此行有效否为True
{
dgvChanPinMingXi.Rows[i].Cells["保修期"].Value = Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["BaoXiuQiID"]);//直接绑定到销售单的产品明细
}
else//如果不是为True
{
dtBaoXiuQiWeiShanChu.Rows.Add();//dtBaoXiuQiWeiShanChu中增加一行空行
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["BaoXiuQiMingCheng"] = dtBaoXiuQi.Rows[j]["BaoXiuQiMingCheng"].ToString().Trim() + "(已删除)";//保修期名称中加上"(已删除)"赋值给新添加的行
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["BaoXiuQiID"] = Convert.ToInt32(dtBaoXiuQi.Rows[j]["BaoXiuQiID"]);//赋值保修期ID
dtBaoXiuQiWeiShanChu.Rows[dtBaoXiuQiWeiShanChu.Rows.Count - 1]["YouXiaoFou"] = false;//赋值有效否
dtBaoXiuQi.Rows[j]["YouXiaoFou"] = true;//这一行添加到[dtBaoXiuQiWeiShanChu]后,把有效否改为真,避免重复添加
dgvChanPinMingXi.Rows[i].Cells["保修期"].Value = Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["BaoXiuQiID"]);//最后绑定到销售单的产品明细
}
break;
}
}
}
catch
{
}
}
}
catch { }
}
第五步:保存按钮的单击事件
private void btnBaoCun_Click(object sender, EventArgs e)
{
//判断有没有选择客户等信息
if (intKeHuID == 0 || txtKeHuXingMing.Text == "")
{
MessageBox.Show("请按绿色加号按钮选择客户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
if (intPinPaiID == 0 || txtPinPai.Text == "")
{
MessageBox.Show("请按绿色加号按钮选择品牌!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
if (txtDiKeHao.Text == "")
{
MessageBox.Show("请填写底壳号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
if (dgvChanPinMingXi.Rows.Count < 1)
{
MessageBox.Show("请录入产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
for (int i = 0; i < dgvChanPinMingXi.Rows.Count; i++)//循环判断有没有选择保修期
{
try
{
if (Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["保修期"].Value) == 0)//如果在转化成Int型时,下拉框并没有值,就会出错,出错就会跳到catch
{
MessageBox.Show("第【" + (i + 1).ToString() + "】行的【保修期】还没选择!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;//返回,也就是跳出此方法
}
for (int j = 0; j < dtBaoXiuQiWeiShanChu.Rows.Count; j++)
{
if (Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["保修期"].Value) == Convert.ToInt32(dtBaoXiuQiWeiShanChu.Rows[j]["BaoXiuQiID"]) && Convert.ToBoolean(dtBaoXiuQiWeiShanChu.Rows[j]["YouXiaoFou"]) == false)//循环判断,找出保修期为False的,提示已删除
{
MessageBox.Show("第【" + (i + 1).ToString() + "】行的【保修期】已删除,请重新选择!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
}
}
catch
{
MessageBox.Show("第【" + (i + 1).ToString() + "】行的【保修期】还没选择!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
}
int intLuRuYuanID = Convert.ToInt32(index2.strYuanGongXinXi[0]);//获取登录的员工ID作为录入员ID
int intXiaoShouLeiXingID = Convert.ToInt32(cboXiaoShouLeiXing.SelectedValue);
string strXiaoShouDanBianHao = txtXiaoShouDanBianHao.Text;
DateTime dtmXiaoShouRiQi = dtpXiaoShouRiQi.Value;
string strBeiZhu = txtBeiZhu.Text;
int intZhongBiaoKuanShiID = Convert.ToInt32(cboKuanShi.SelectedValue);
string strDiKeHao = txtDiKeHao.Text;
decimal decYingShouJinE = 0;
for (int i = 0; i < dgvChanPinMingXi.Rows.Count; i++)
{
decYingShouJinE += Convert.ToDecimal(dgvChanPinMingXi.Rows[i].Cells["小计"].Value);
}
string strChuRuKuDanJu = myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_ChaXunChuRuKuDanJu(strXiaoShouDanBianHao).Rows[0][0].ToString().Trim();//查询该销售单的出入库单据
intXiaoShouDanID =Convert.ToInt32( myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_btnBaoCun_UpdateXiaoShouDan(intLuRuYuanID, intKeHuID,
intXiaoShouLeiXingID, strXiaoShouDanBianHao, dtmXiaoShouRiQi, strBeiZhu, intPinPaiID, intZhongBiaoKuanShiID, strDiKeHao, decYingShouJinE, intXiaoShouDanID).Rows[0][0]);//把该销售单和出入库单的有效否改为False,在新增一条新的销售单并查出销售单ID
if (intXiaoShouDanID > 0)//如果不大于0则代表上面的方法执行失败
{
DataTable dtRuKuDan = myfrmCaiGouGuanLi.frmCaiGouGuanLi_Insert_RuKuDan(Convert.ToInt32(index2.strYuanGongXinXi[0]), strChuRuKuDanJu, "销售出库(" + strXiaoShouDanBianHao + ")");//新增出入库单据并查询出出入库单号
int intShanChuMingXi = 0;
for (int i = 0; i < dtXiaoShouDanMingXi.Rows.Count; i++)
{
int intChanPinID = Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["ChanPinID"]);
int intCangWeiID = Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["CangWeiID"]);
int intShuLiang = Convert.ToInt32(dtXiaoShouDanMingXi.Rows[i]["ShuLiang"]);
//修改销售单,库存数量回滚
if (myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi(intChanPinID, intCangWeiID, intShuLiang) > 0)
{
intShanChuMingXi++;//回滚成功,intShanChuMingXi加1
}
}
if (intShanChuMingXi != dtXiaoShouDanMingXi.Rows.Count)//判断有没有回滚失败
{
MessageBox.Show("【" + (dtXiaoShouDanMingXi.Rows.Count - intShanChuMingXi).ToString() + "】条明细删除失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
int intMingXiChengGongCiShu = 0;
for (int i = 0; i < dgvChanPinMingXi.Rows.Count; i++)
{
int intChanPinID = Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["产品ID"].Value);
int intCangWeiID = 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);
int intBaoXiuQiID = Convert.ToInt32(dgvChanPinMingXi.Rows[i].Cells["保修期"].Value);
if (myfrmXiaoShouKaiDan_Insert.frmXiaoShouKaiDan_Insert_btnBaoCun_InsertXiaoShouDanMingXi(intXiaoShouDanID, intChanPinID, intCangWeiID, decDanJia, intShuLiang,intBaoXiuQiID) > 0)//新增销售单明细
{
myfrmCaiGouTuiHuo.frmCaiGouTuiHuo_Insert_ChuKuMingXi(Convert.ToInt32(dtRuKuDan.Rows[0][0]), intChanPinID, intCangWeiID, intShuLiang);//新增出入库明细
intMingXiChengGongCiShu++;
}
}
if (intMingXiChengGongCiShu != dgvChanPinMingXi.Rows.Count)
{
MessageBox.Show("修改销售单成功,销售单编号【" + strXiaoShouDanBianHao + "】\n【" + (dgvChanPinMingXi.Rows.Count - intMingXiChengGongCiShu).ToString() + "】条明细添加失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
MessageBox.Show("修改成功,销售单编号【" + strXiaoShouDanBianHao + "】", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
this.Dispose();
this.Close();
}
else
{
MessageBox.Show("修改失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
报废功能实现:
第一步:存储过程代码
IF (@TYPE = 'frmXiaoShouKaiDan_BaoFei_btnBaoCun_XiaoShouDanBaoFei')
BEGIN
UPDATE pw_XiaoShouDan
SET YouXiaoFou=0,BaoFeiYuanYin=@BaoFeiYuanYin
WHERE XiaoShouDanID=@XiaoShouDanID
END
IF (@TYPE = 'frmXiaoShouKaiDan_Update_btnBaoCun_GaiBianShuLiang_ChaXunTiaoJian')
BEGIN
BEGIN TRAN
if(@XiaoShouDanBianHao!=null and @XiaoShouDanBianHao!='' )
BEGIN
UPDATE pw_ChuRuKuDanJu
SET YouXiaoFou=0
WHERE BeiZhu like '%' + LTRIM(RTRIM(@XiaoShouDanBianHao)) + '%'
END
SELECT pw_XiaoShouDanMingXi.XiaoShouDanID, sys_ChanPinZiLiao.ChanPinMingCheng, sys_ChanPinZiLiao.ChanPinBianHao, pw_XiaoShouDanMingXi.DanJia, pw_XiaoShouDanMingXi.ShuLiang,
pw_XiaoShouDanMingXi.ChanPinID, pw_XiaoShouDanMingXi.CangWeiID
FROM pw_XiaoShouDanMingXi INNER JOIN
sys_ChanPinZiLiao ON pw_XiaoShouDanMingXi.ChanPinID = sys_ChanPinZiLiao.ChanPinID
WHERE pw_XiaoShouDanMingXi.XiaoShouDanID=@XiaoShouDanID
COMMIT TRAN
END
IF (@TYPE = 'frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi')
BEGIN
BEGIN TRAN
UPDATE sys_KuCun
SET KuCunShuLiang+=@ShuLiang,GengXinShiJian=GETDATE()
WHERE CangWeiID=@CangWeiID AND ChanPinID=@ChanPinID
COMMIT TRAN
END
第二步:逻辑层(BLL)代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
public int frmXiaoShouKaiDan_BaoFei_btnBaoCun_XiaoShouDanBaoFei(int intXiaoShouDanID, string strBaoFeiYuanYin)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanID",SqlDbType.Int),
new SqlParameter("@BaoFeiYuanYin",SqlDbType.Char),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_BaoFei_btnBaoCun_XiaoShouDanBaoFei";
mySqlParameters[1].Value = intXiaoShouDanID;
mySqlParameters[2].Value = strBaoFeiYuanYin;
return myDALMethod.UpdateData("frmXiaoShouKaiDan_BaoFei", mySqlParameters);
}
public DataTable frmXiaoShouKaiDan_Update_btnBaoCun_GaiBianShuLiang_ChaXunTiaoJian(int XiaoShouDanID,string strXiaoShouDanBianHao)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@XiaoShouDanID",SqlDbType.Int),
new SqlParameter("@XiaoShouDanBianHao",SqlDbType.Char),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_btnBaoCun_GaiBianShuLiang_ChaXunTiaoJian";
mySqlParameters[1].Value = XiaoShouDanID;
mySqlParameters[2].Value = strXiaoShouDanBianHao;
return myDALMethod.QueryDataTable("frmXiaoShouKaiDan_Update", mySqlParameters);
}
public int frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi( int intChanPinID, int intCangWeiID, int intShuLiang)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@ChanPinID",SqlDbType.Int),
new SqlParameter("@CangWeiID",SqlDbType.Int),
new SqlParameter("@ShuLiang",SqlDbType.Int),
};
mySqlParameters[0].Value = "frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi";
mySqlParameters[1].Value = intChanPinID;
mySqlParameters[2].Value = intCangWeiID;
mySqlParameters[3].Value = intShuLiang;
return myDALMethod.UpdateData("frmXiaoShouKaiDan_Update", mySqlParameters);
}
第三步:界面层(UIL)代码
(1)销售记录窗体的报废按钮的单击事件
private void btnBaoFei_Click(object sender, EventArgs e)
{
if (dgvXiaoShouDan.Rows.Count > 0)
{
if (dgvXiaoShouDan.CurrentRow.Cells["付款状态"].Value.ToString().Trim() == "未付款")//判断是否已经付款
{
strXiaoShouDanBianHao = dgvXiaoShouDan.CurrentRow.Cells["销售单编号"].Value.ToString().Trim();//获取当前行的销售单编号
int intXiaoShouDanID = Convert.ToInt32(dgvXiaoShouDan.CurrentRow.Cells["销售单ID"].Value);//获取当前行的销售单ID
frmXiaoShouKaiDan_BaoFei myfrmXiaoShouKaiDan_BaoFei = new frmXiaoShouKaiDan_BaoFei(strXiaoShouDanBianHao, intXiaoShouDanID);//实例化报废窗体,并把销售单编号和销售单ID传过去
myfrmXiaoShouKaiDan_BaoFei.ShowDialog();//弹出报废窗体
dgvXiaoShouDan.DataSource = ChaXunShuJu(intPageSize, intPageIndex, false, true);//关闭报废窗体后,自动查询(刷新)一次
}
else
{
MessageBox.Show("当前销售单已付款,不能执行报废操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);//提示
}
}
else
{
MessageBox.Show("当销前售单为空,请查询后再操作!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
(2)报废窗体的构造方法
BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_BaoFei myfrmXiaoShouKaiDan_BaoFei = new BLL.BLL_XiaoShouGuanLi.frmXiaoSho
uKaiDan_BaoFei();//实例化BLL
BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Update myfrmXiaoShouKaiDan_Update = new BLL.BLL_XiaoShouGuanLi.frmXiaoShouKaiDan_Update();//实例化BLL
int intXiaoShouDanID = 0;//全局变量
public frmXiaoShouKaiDan_BaoFei(string strXiaoShouDanBianHao,int XiaoShouDanID)
{
InitializeComponent();
btnBaoCun.BackColor = Color.FromArgb(80, 225, 225, 225);
btnFanHui.BackColor = Color.FromArgb(80, 225, 225, 225);
intXiaoShouDanID = XiaoShouDanID;//给全局变量赋值
txtXiaoShouDanBianHao.Text = strXiaoShouDanBianHao;//给销售单编号文本框赋值
txtBaoFeiYuanYin.Focus();//为报废原因文本框设置输入焦点
}
(3)确定(报废)按钮的单击事件
private void btnBaoCun_Click(object sender, EventArgs e)
{
string strBaoFeiYuanYin = txtBaoFeiYuanYin.Text;
if (strBaoFeiYuanYin == "")//判断是否填写了报废原因
{
MessageBox.Show("请填写报废原因!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
txtBaoFeiYuanYin.Focus();
return;
}
if (myfrmXiaoShouKaiDan_BaoFei.frmXiaoShouKaiDan_BaoFei_btnBaoCun_XiaoShouDanBaoFei(intXiaoShouDanID, strBaoFeiYuanYin) > 0)//修改销售单有效否为False,修改报废原因
{
DataTable dtTiaoJian = myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_btnBaoCun_GaiBianShuLiang_ChaXunTiaoJian(intXiaoShouDanID,txtXiaoShouDanBianHao.Text.ToString().Trim());//把销售单的出入库单据有效否改为False,并查出销售单明细
if (dtTiaoJian.Rows.Count > 0)
{
for (int i = 0; i < dtTiaoJian.Rows.Count; i++)
{
int ShuLiang = Convert.ToInt32(dtTiaoJian.Rows[i]["ShuLiang"]);
int CangWeiID = Convert.ToInt32(dtTiaoJian.Rows[i]["CangWeiID"]);
int ChanPinID = Convert.ToInt32(dtTiaoJian.Rows[i]["ChanPinID"]);
myfrmXiaoShouKaiDan_Update.frmXiaoShouKaiDan_Update_btnBaoCun_DeleteXiaoShouDanMingXi(ChanPinID, CangWeiID, ShuLiang);//循环回滚库存数
}
}
MessageBox.Show("报废成功!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
this.Dispose();
this.Close();
}
else
{
MessageBox.Show("报废失败!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
注:此文章只供学习参考,禁止用于商业用途。