//导出数据到Excel protected void lBtnToExcel_Click(object sender, EventArgs e) { //获取数据并填充到数据表 using (var da = new t_scrap_record_mrbTableAdapter()) { //检测session中保存的查询条件 object obj = Session["dept_scrap_record_where_content"]; string str = string.Empty; if (obj != null && obj.ToString().Length > 0) { str = obj.ToString(); } //部门名称 string scrapDeptName = string.Empty; if (chkThisDeptOnly.Checked) { scrapDeptName = Session["dept_name"].ToString(); } //获取前1万行数据 var tab = da.GetPagedData(str, "order by [id] desc", scrapDeptName, 0, 10000); //设置列标题 string[] titleCol = ("序号,部门名称,lot卡号,生产编号,pnl报废数,pcs报废数," + "扣取部门余数,报废属于部门,报废原因,类型,备注,录入员,录取时间,修改时间").Split(','); //设置表名称 string titleTab = "部门报废记录"; //临时文件名称 string fileName = titleTab + DateTime.Now.ToString("yyMMddHHmmss") + ".xls"; //执行导出数据到excel bool isSuccess = ydPublicMethod.DataTable2Excel(tab, titleCol, ref fileName, titleTab); //如果成功则跳转到指定页面 if (isSuccess) { Response.Redirect(fileName); //停止加载后续内容 Response.End(); } } }
/// <summary> /// 执行删除数据并处理相关数据一致性 /// </summary> /// <param name="e">传入的带有数据的事件参数</param> /// <returns></returns> private bool DeleteData(ListViewDeleteEventArgs e) { //当前用户输入的id号 Int64 id = Convert.ToInt64(e.Keys[0]); //数据适配器 //当前数据库连接 //当前更新语句对象 using (var da = new t_scrap_record_mrbTableAdapter()) using (var cmd = da.Adapter.DeleteCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //试运行 try { //设置事务 da.Transaction = tran; //获取数据 using (var tab = da.GetDataById(id)) { //检查是否获取到行 if (tab.Rows.Count == 0) { //显示失败 throw new Exception("当前报废记录已经被其他用户删除,请刷新后重试!"); } else { //首行 var row = (DataSetScrapRecord.t_scrap_record_mrbRow)tab.Rows[0]; //将待删除的数据写入MRB待报废lot卡 string deptName = "MRB"; //目标数据库表名 string toTabName = "[t_dept_lot_card_balance]"; //添加到部门结存lot卡或者报废记录 if (!ydOperateBalanceLotCrad.InsertOneRecordToLotCardBalance( tran, ydOperateBalanceLotCrad.GetTabNameByDeptName("MRB"), deptName, toTabName, id )) { return false; } //从报废记录删除数据 if (!ydOperateBalanceLotCrad.DeleteOneRecordFromProductOrScrapRecord(cmd, id)) { return false; } } } //提交事务 tran.Commit(); //返回成功 return true; } catch (Exception ex) { //回滚事务 tran.Rollback(); //非数字返回失败 throw new Exception(ex.Message); } } } }
/// <summary> /// 根据输入的参数值来执行更新数据 /// </summary> /// <param name="e">传入的带有数据的事件参数</param> /// <returns></returns> private bool UpdateData(FormViewUpdateEventArgs e) { //检测是否更改了需要更新到其他部门的数据内容 if (e.OldValues["dept_name"].Equals(e.NewValues["dept_name"]) && e.OldValues["lot_id"].Equals(e.NewValues["lot_id"]) && e.OldValues["product_num"].Equals(e.NewValues["product_num"]) && e.OldValues["scrap_dept_name"].Equals(e.NewValues["scrap_dept_name"]) && e.OldValues["pcs_qty"].Equals(e.NewValues["pcs_qty"]) ) { //执行只更新本报废记录 e.Cancel = false; //更新事件继续执行 return false; } //之前lot卡号 string lotIdOld = e.OldValues["lot_id"].ToString().ToUpper(); //当前用户输入的新的lot卡号 string lotIdNew = e.NewValues["lot_id"].ToString().ToUpper(); //不能从样板lot卡修改为生产板lot卡,反之亦然 if (lotIdNew.Contains("S") != lotIdOld.Contains("S")) { throw new Exception("不能从样板lot卡修改为生产板lot卡,反之亦然!"); } //数据适配器 //当前添加语句对象 //当前数据库连接 using (var da = new t_scrap_record_mrbTableAdapter()) using (var cmd = da.Adapter.UpdateCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //设置事务 da.Transaction = tran; //试运行 try { //提供报废板的部门名称 string deptName = "MRB"; //当前行id号 Int64 id = Convert.ToInt64(e.Keys["id"]); //获取数据 using (var tab = da.GetDataById(id)) { //检查是否获取到行 if (tab.Rows.Count == 0) { //显示失败 throw new Exception("当前报废记录已经被其他用户删除,请刷新后重试!"); } else { //首行 var row = (DataSetScrapRecord.t_scrap_record_mrbRow)tab.Rows[0]; //目标数据库表名 string toTabName = "[t_dept_lot_card_balance]"; //添加到部门结存lot卡 if (!ydOperateBalanceLotCrad.InsertOneRecordToLotCardBalance( tran, ydOperateBalanceLotCrad.GetTabNameByDeptName("MRB"), deptName, toTabName, id )) { return false; } } } //保存一条记录到数据库 if (!ydOperateBalanceLotCrad.UpdateOneRecord(cmd, e, deptName, false)) { //失败就直接返回 return false; } //提交事务 tran.Commit(); //返回成功 return true; } catch (Exception ex) { //回滚事务 tran.Rollback(); //非数字返回失败 throw new Exception(ex.Message); } } } }
/// <summary> /// 根据输入的LOT格式来保存多条数据到数据库 /// </summary> /// <param name="e">传入的带有数据的事件参数</param> /// <param name="deptName">当前部门名称</param> /// <returns></returns> private bool InsertData(FormViewInsertEventArgs e, string deptName) { //当前用户输入的lot卡号 string lotId = e.Values["lot_id"].ToString(); //数据适配器 //当前添加语句对象 //当前数据库连接 using (var da = new t_scrap_record_mrbTableAdapter()) using (var cmd = da.Adapter.InsertCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //设置事务 da.Transaction = tran; //试运行 try { //检测lot卡是否正确 //正则表达式 string strReg = @"^[1-9]\d(0[1-9]|1[012])-S?[1-9]\d{0,4}"; //检测是否正确lot卡号 if (!Regex.IsMatch(lotId, strReg)) { //非数字返回失败 throw new Exception("您输入了一个不合格的lot卡号 " + lotId + " !"); } //保存一条记录到数据库 if (!ydOperateBalanceLotCrad.InsertOneRecord(cmd, lotId, e, deptName, false)) { //失败就直接返回 return false; } //提交事务 tran.Commit(); //返回成功 return true; } catch (Exception ex) { //回滚事务 tran.Rollback(); //非数字返回失败 throw new Exception(ex.Message); } } } }
/// <summary> /// 根据输入的LOT格式来保存多条数据到数据库 /// </summary> /// <param name="dic">传入的数据参数</param> /// <returns></returns> private string InsertData(Dictionary<string, string> dic) { //数据适配器 //当前添加语句对象 //当前数据库连接 using (var da = new t_scrap_record_mrbTableAdapter()) using (var cmd = da.Adapter.InsertCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //设置事务 da.Transaction = tran; //试运行 try { //要插入的自定义插入事件的参数类实例 var e = new FormViewInsertEventArgs(null); //报废日期 e.Values["scrap_date"] = DateTime.Parse(dic["scrap_date"]); //lot卡号 string lotId = dic["lot_id"]; e.Values["lot_id"] = lotId; //生产编号 e.Values["product_num"] = dic["product_num"]; //备注 e.Values["remark"] = dic["remark"]; //录入员 e.Values["add_person"] = dic["add_person"]; //录入时间 e.Values["add_time"] = dic["add_time"]; //修改时间 e.Values["last_change_time"] = dic["last_change_time"]; //循环保存数据 for (var i = 0; i < 10; i++) { //提供报废板的部门名称 string deptName = dic["dept_name" + i]; //检测部门名称存在才执行后续添加 if (deptName.Length <= 0) { continue; } //写入部门 e.Values["dept_name"] = deptName; //pnl数量 e.Values["pnl_qty"] = dic["pnl_qty" + i]; //pcs数量 e.Values["pcs_qty"] = dic["pcs_qty" + i]; //有扣结存 e.Values["is_deduction_balance"] = bool.Parse(dic["is_deduction_balance" + i]); //报废属于部门 e.Values["scrap_dept_name"] = dic["scrap_dept_name" + i]; //报废原因 e.Values["scrap_reason"] = dic["scrap_reason" + i]; //保存一条记录到数据库 if (!ydOperateBalanceLotCrad.InsertOneRecord( cmd, lotId, e, deptName, "MRB", false )) { //失败就直接返回 return string.Format("插入第 {0} 行数据失败!\r\n报废原因为: \r\n", dic["scrapreason" + i]); } } //提交事务 tran.Commit(); //返回成功 return string.Empty; } catch (Exception ex) { //回滚事务 tran.Rollback(); //返回失败 return ex.Message; } } } }