Example #1
0
 //导出数据到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();
         }
     }
 }
Example #2
0
 /// <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;
             }
         }
     }
 }