/// <summary> /// 根据输入的参数值来执行更新数据 /// </summary> /// <param name="e">传入的带有数据的事件参数</param> /// <returns></returns> private bool UpdateData(FormViewUpdateEventArgs e) { //数据适配器 //当前添加语句对象 //当前数据库连接 using (var da = new ydERPTY.DAL.AD.DataSetADTableAdapters.t_employeesTableAdapter()) using (var cmd = da.Adapter.UpdateCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //设置事务 da.Transaction = tran; //试运行 try { //当前行id号 Int32 id = Convert.ToInt32(e.Keys["id"]); //获取数据 using (var tab = da.GetDataById(id)) { //检查是否获取到行 if (tab.Rows.Count == 0) { //显示失败 throw new Exception("当前生产记录已经被其他用户删除!"); } else { string employeeId = e.NewValues["employee_id"].ToString(); //查找与当前ID号不同有相同工号且不是离职员工的记录 string sqlstr = @"SELECT count(1) FROM t_employees where employee_id=@employeeId and [leave_date] is NULL and [id]<>@id"; using (var cmd2 = new SqlCommand(sqlstr, conn)) { cmd2.Transaction = tran; cmd2.Parameters.AddWithValue("@employeeId", employeeId); cmd2.Parameters.AddWithValue("@id", id); //存在的记录条数 int count = Convert.ToInt32(cmd2.ExecuteScalar()); //离职日期 string leaveDate = e.NewValues["leave_date"].ToString().Trim(); //有相同工号记录且不是离职员工 if (count > 0 && leaveDate.Length == 0) { string msg = string.Format("增加记录失败,工号:{0}已经存在且不是离职员工!", employeeId); throw new Exception(msg); } } //直接保存 e.Cancel = 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 DeleteData(FormViewDeleteEventArgs e) { //当前用户输入的id号 int id = Convert.ToInt32(e.Keys[0]); //数据适配器 //当前数据库连接 //当前更新语句对象 using (var da = new ydERPTY.DAL.AD.DataSetADTableAdapters.t_employeesTableAdapter()) 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 { //删除当前数据 da.Delete(id); } } //提交事务 tran.Commit(); //返回成功 return true; } catch (Exception ex) { //回滚事务 tran.Rollback(); //非数字返回失败 throw new Exception(ex.Message); } } } }