C# 如果我有每个员工的总分配假期列,如何计算假期余额?
我有一个列为分配的叶子的详细信息表。我有一个额外的列用于C# 如果我有每个员工的总分配假期列,如何计算假期余额?,c#,asp.net,C#,Asp.net,我有一个列为分配的叶子的详细信息表。我有一个额外的列用于LeavesTaken。现在我想计算每个员工的假期余额,并相应地更新它 { command.Connection = _connection; SqlDataReader reader = command.ExecuteReader(); Employee employee = new Employee(); List<Us
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;
}````
{
command.Connection=\u Connection;
SqlDataReader=command.ExecuteReader();
员工=新员工();
列表叶子=新列表();
while(reader.Read())
{
添加(新用户.LeaveRequest(){DayPart=reader.GetInt32(3),fromdate=reader[“fromdate”].ToString(),todate=reader[“todate”].ToString();
}
reader.Close();
如果(叶数>0)
{
叶子=叶子;
}
其他的
{
leaveRequests=null;
}
command.CommandText=“从empDetails中选择TotalLeaves,LeavesTaken,其中empID=@empID”;
//command.Parameters.AddWithValue(“@empid”,CurrentUser.Employee.empid);
reader=command.ExecuteReader();
if(reader.Read())
{
employee.totaleaves=reader.GetInt32(0);
employee.levestaken=reader.GetDouble(1);
}
reader.Close();
返回员工;
}````
我可以想出三种解决方案,因为您没有准确地指定所需的内容,也没有指定示例数据:
SELECT SUM(TotalLeaves), SUM(LeavesTaken)
FROM empDetails
WHERE empID = @empid
SELECT SUM(TotalLeaves) - SUM(LeavesTaken)
FROM empDetails
WHERE empID = @empid
empID
有一条记录,您也可以尝试:
SELECT TotalLeaves - LeavesTaken
FROM empDetails
WHERE empID = @empid
我很好奇为什么你的总假期是整数,但无论如何你可以在
CommandText
假设这三列AlloctedLeaves、TotalLeaves、LeavesTaken的数据类型为DECIMAL(4,2)
现在我想计算每个员工的假期余额,并相应地更新它
{
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;
}````
更新表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();
}
{
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();
}
请发布示例数据库LeaveBalance=TotalLeaves-LeavesTaken
。为什么要在表中更新它?您有一个AllocatedLeaves列和一个LeavesTaken列,因此您可以随时计算要在应用程序中显示的余额。请出示一些样本数据,并明确说明您需要什么。