Это не сработало, потому что в вашей таблице нет столбца с именем "Resigned"
, как у вас, когда вы работаете с SqlDataReader
.
РЕДАКТИРОВАТЬ : Я думаю, что корень проблемы в том, как вы добавляете параметры. AddParam()
- это не тот метод, который вы хотите использовать. Следовательно, ваш набор результатов, вероятно, пуст.
....
SqlCommand sc = new SqlCommand();
sc.CommandText = "usp_GetResignPool";
sc.CommandType = CommandType.StoredProcedure;
sc.Connection = conn;
sc.Parameters.AddWithValue("@EndDate", EndDate);
sc.Parameters.AddWithValue("id", am_id);
SqlDataReader reader;
reader = sc.ExecuteReader();
using (reader = sc.ExecuteReader())
{
while (reader.Read())
{
if (Convert.ToInt32(read["Resign"]) == 1)
{
resigned = Convert.ToInt32(read["Sum"]);
resign_count = Convert.ToInt32(read["Count"]);
}
else
{
not_resigned = Convert.ToInt32(read["Sum"]);
notresign_count = Convert.ToInt32(read["Count"]);
}
}
}
Обратите внимание, как я изменил индикатор элемента на "Resign"
. Это должно соответствовать столбцу, который возвращается в вашем наборе данных. Или вы можете использовать номер столбца, чтобы получить это, например, так:
if (Convert.ToInt32(read[1]) == 1)
{
resigned = Convert.ToInt32(read[2]);
resign_count = read[3];
}
else
{
not_resigned = Convert.ToInt32(read[2]);
notresign_count = Convert.ToInt32(read[3]);
}
Кроме того, учтите, что в каждой итерации или цикле while
вы будете перезаписывать переменные resigned
, resign_count
или not_resigned
и notresign_count
.