返回Datagrid中的数据和datareader值中的过程

时间:2015-02-03 10:53:32

标签: c# datareader

我正在为所有员工做一份出勤报告,

基本上我正在尝试做的是,基于每个员工,userID根据日期阅读器的日期返回出勤率,该日期阅读器为所有用户ID循环,然后将其放在datagridview中。

但是有一些问题,它只返回最后一个UserID,我试图放弃循环但同样只返回最后一个userID。

代码如下

MainClass.Connect();
SqlCommand Com_UserID = new SqlCommand("Select UserID From Tuser",MainClass.MyCon);
MainClass.MyCon.Open();

SqlCommand Com_Attendance = new SqlCommand("SP_EmployeeAttendance",MainClass.MyCon);
Com_Attendance.CommandType = CommandType.StoredProcedure;
SqlDataAdapter Da = new SqlDataAdapter(Com_Attendance);
DataSet Ds = new DataSet();

SqlParameter P1 = new SqlParameter("@UserID",SqlDbType.NVarChar,50);
P1.Direction = ParameterDirection.Input ;
Com_Attendance.Parameters.Add(P1);

Com_Attendance.Parameters.Add("@StartDate", SqlDbType.Date).Value = DTDeptStartDate.Value;
Com_Attendance.Parameters.Add("@EndDate", SqlDbType.Date).Value = DTDeptEndDate.Value; ;

SqlDataReader reader = Com_UserID.ExecuteReader();

if (reader.HasRows)
{
    while (reader.Read())
        P1.Value = reader.GetString(0);
    Com_Attendance.ExecuteNonQuery();
    Da.Fill(Ds);
    dataGridView1.DataSource = Ds.Tables[0];
    reader.NextResult(); 
}

2 个答案:

答案 0 :(得分:0)

怎么样

while (reader.Read()){
    P1.Value = reader.GetString(0);
    Com_Attendance.ExecuteNonQuery();
    Da.Fill(Ds);
    dataGridView1.DataSource = Ds.Tables[0];
    reader.NextResult(); 
}

;) while(condetion) {。 。 。 。 。的}

你的循环只改变参数值,当它到达最后一个值时,执行非查询。

答案 1 :(得分:0)

删除nextreader后返回所有数据,并将datagridview数据源放在循环之外

 while (reader.Read())
        {
             P1.Value = reader.GetString(0);
            Com_Attendance.ExecuteNonQuery();
            Da.Fill(Ds);
         }
        dataGridView1.DataSource = Ds.Tables[0];