【问题标题】:getting attendance records from database into gridview ASP.net C#从数据库获取考勤记录到gridview ASP.net C#
【发布时间】:2016-05-25 15:37:04
【问题描述】:

我使用 gridview 构建了一个考勤表,将员工的考勤情况存储到数据库中。我的考勤表是这样的

tblattendance

Att_ID         Emp_ID          Emp_name        Date           Att_status
1               002             xyz           25/05/2016        Absent
2               002             xyz           26/05/2016        Present

现在我想做的是,我想在网格视图中获取出勤记录,以显示从特定日期到特定日期的某个员工的缺勤和出席总数。到目前为止,我已经完成了以下代码,但它在一行中显示缺勤,在第二行显示某个员工的礼物。我希望它显示在同一行。我还没有写出 Date 的 Where 条件。

SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = new SqlCommand("SELECT Emp_ID, Emp_name, COUNT(Att_status) AS Astatus FROM tblattendance WHERE Att_status='Absent' AND Emp_ID='2' GROUP BY Emp_ID, Emp_name, Att_status",conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            SqlDataAdapter da1 = new SqlDataAdapter();
            da1.SelectCommand = new SqlCommand("SELECT COUNT(Att_status) AS Pstatus FROM tblattendance WHERE Att_status='Present' AND Emp_ID='2' GROUP BY Att_status",conn);
            da1.Fill(dt);

            GridView1.DataSource = dt;
            GridView1.DataBind();

它是在页面加载中完成的。

【问题讨论】:

标签: c# asp.net sql-server gridview


【解决方案1】:

假设你的观点是这样的

Emp_Id Emp_name Dates Absent Present

使用以下 SQL 填充您的视图

select emp_id, emp_name, 'from - to dates' as dates,
sum(case when Att_status = 'Absent' then 1 else 0 end) as [Absent],
sum(case when Att_status = 'Present' then 1 else 0 end) as [Present]
from  [dbo].[tblattendance]
where [date] >= CONVERT(date, '05/25/2016') and [date] <= convert(date, '05/27/2016')
group by emp_id, emp_name

用所需的字符串替换“从 - 到日期”字符串,并将日期的下限和上限放在 where 子句中。我在表中插入了 3 条记录,这就是为什么我的上限为 05/27/2016。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2020-12-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多