【问题标题】:How to calculate leave balance if I have Total Allotted Leaves column for each employee?如果我有每个员工的总分配休假列,如何计算休假余额?
【发布时间】:2019-10-09 14:45:08
【问题描述】:

我有 empdetails 表,其中列作为分配的叶子。我有一个额外的专栏LeavesTaken。现在我想计算每个员工的休假余额并相应更新。

        {
            command.Connection = _connection;
            SqlDataReader reader = command.ExecuteReader();
            Employee employee = new Employee();
            List<Users.LeaveRequest> leaves = new List<Users.LeaveRequest>();
            while (reader.Read())
            {
                leaves.Add(new Users.LeaveRequest() { DayPart = reader.GetInt32(3), fromdate = reader["fromdate"].ToString(), todate = reader["todate"].ToString() });
            }
            reader.Close();
            if (leaves.Count>0)
            {
                leaveRequests = leaves;
            }
            else
            {
                leaveRequests = null;
            }

            command.CommandText = "SELECT TotalLeaves,LeavesTaken FROM empDetails WHERE empID = @empid";
            //command.Parameters.AddWithValue("@empid", CurrentUser.Employee.EmpID);
            reader = command.ExecuteReader();
            if (reader.Read())
            {
                employee.TotalLeaves = reader.GetInt32(0);
                employee.LeavesTaken = reader.GetDouble(1);
            }
            reader.Close();
            return employee;
        }````

【问题讨论】:

  • 能否请您发布示例数据库
  • LeaveBalance = TotalLeaves - LeavesTaken .
  • 为什么要在表格中更新它?您有一个 AllotedLeaves 列和一个 LeavesTaken 列,因此您可以随时计算余额以显示在应用程序中。请展示一些示例数据并明确说明您需要什么。

标签: c# asp.net


【解决方案1】:

我可以想到三个解决方案,因为您没有准确指定您想要什么,也没有示例数据:

  1. 您想要为员工合计价值:

    SELECT SUM(TotalLeaves), SUM(LeavesTaken)
    FROM empDetails 
    WHERE empID = @empid
    
  2. 您希望在两个值之间取得平衡

    SELECT SUM(TotalLeaves) - SUM(LeavesTaken)
    FROM empDetails 
    WHERE empID = @empid
    
  3. 如果您有每个empID 的一条记录,您也可以尝试:

    SELECT TotalLeaves - LeavesTaken
    FROM empDetails 
    WHERE empID = @empid
    

【讨论】:

    【解决方案2】:

    我很好奇为什么你的总叶数是整数,但无论如何你可以在CommandText 中完成计算

    假设AllottedLeaves, TotalLeaves, LeavesTaken这三列的数据类型为DECIMAL(4,2)

    现在我想计算每个员工的休假余额并相应更新。

    1. 更新TABLE empDetails中的所有员工

      {
          command.CommandText = "UPDATE empDetails " + 
                                "SET TotalLeaves = TotalLeaves - llottedLeaves, " +
                                "LeavesTaken = LeavesTaken + AllottedLeaves, " +
                                "AllottedLeaves = 0" +
                                "WHERE AllottedLeaves <> 0 AND AllottedLeaves <= TotalLeaves";
          command.Connection = _connection;
          command.ExecuteNonQuery();
      }
      
    2. 更新TABLE empDetails中的一个员工

      {
          command.CommandText = "UPDATE empDetails " + 
                                "SET TotalLeaves = TotalLeaves - llottedLeaves, " +
                                "LeavesTaken = LeavesTaken + AllottedLeaves, " +
                                "AllottedLeaves = 0" +
                                "WHERE empID = @empid";
          command.Parameters.AddWithValue("@empid", CurrentUser.Employee.EmpID);
          command.Connection = _connection;
          command.ExecuteNonQuery();
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多