Задать вопрос
@White_Bambie

Как посчитать количество строк по условию?

Мне нужно, чтобы в отчете вставлялось количество строк в таблице '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();
        }
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы