我正在为所有员工做一份出勤报告,
基本上我正在尝试做的是,基于每个员工,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();
}
答案 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];