Мне нужно, чтобы в отчете вставлялось количество строк в таблице 'patients', учитывая фильтрацию по одному из столбцов. Но получаю общее количество строк в таблице. В чем здесь ошибка?
private void test()
{
MySqlConnection con = new MySqlConnection(AppSetting.ConnectonString());
MySqlCommand cmd_FillTestimony; // Получаем данные из таблицы testimony
cmd_FillTestimony = con.CreateCommand();
cmd_FillTestimony.CommandText = "SELECT Name FROM testimony";
con.Open();
List<string> array = new List<string>();
MySqlDataReader sdr_FillTestimony = cmd_FillTestimony.ExecuteReader();
while (sdr_FillTestimony.Read())
{
array.Add(sdr_FillTestimony.GetString(0));
}
con.Close();
try
{
con.Open();
MySqlDataAdapter da_testimony = new MySqlDataAdapter(cmd_FillTestimony);
DataSet dataset_testimony = new DataSet();
da_testimony.Fill(dataset_testimony, "testimony");
report2.RegisterData(dataset_testimony.Tables["testimony"], "testimony");
(report2.Report.FindObject("Testimony_Data") as DataBand).DataSource = report2.GetDataSource("testimony");
report2.GetDataSource("testimony").Enabled = true;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//Пациенты
con.Open();
string sqlQuery = "SELECT COUNT(id) FROM patients WHERE testimony IN({0})";
string parameters = "";
for (int i = 0; i < array.Count; i++)
{
parameters += "@record" + i + (i < array.Count - 1 ? ", " : "");
}
MySqlCommand cmd_FillPatients;
cmd_FillPatients = con.CreateCommand();
cmd_FillPatients.CommandText = string.Format(sqlQuery, parameters);
for (int i = 0; i < array.Count; i++)
{
cmd_FillPatients.Parameters.AddWithValue("@record" + i, array[i]);
}
con.Close();
try
{
con.Open();
numRows = Convert.ToInt32(cmd_FillPatients.ExecuteScalar());
TextObject Numer = report2.FindObject("Cell4") as TextObject;
Numer.Text = numRows.ToString();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
report2.Show();
}