Esempio n. 1
0
 /// <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);
             }
         }
     }
 }
Esempio n. 2
0
 /// <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);
             }
         }
     }
 }