Как написать запрос по результатам проверенных флажков C# - PullRequest
0 голосов
/ 06 апреля 2020

Я пытался написать программу, которая выглядит следующим образом:

enter image description here

Суть в том, чтобы иметь возможность выбрать более одного значения в первом групповом окне, представляющем, является ли человек матерью, отцом или воспитателем, второе групповое поле позволяет нам выбрать, являются ли дети этого человека мужчинами или женщинами, а numericUpDown позволяет нам определить количество детей, которых имеет этот человек. Нажатие кнопки должно дать все записи из базы данных, которые соответствуют критериям. Я написал программу, которая работает только тогда, когда некоторые из флажков отмечены, но нет, если мы выбрали более одного флажка в каждом критерии:

        cmd.CommandText = "Select Roditelj.Ime, Roditelj.Prezime, Adresa, Svojstvo From Roditelj, Svojstvo_Roditelja, Dete, Pol Where Roditelj.SvojstvoID = Svojstvo_Roditelja.SvojstvoID And Pol.PolID = Dete.PolID And Roditelj.RoditeljID = Dete.RoditeljID ";
        if (checkBox1.Checked)
            cmd.CommandText += " And Svojstvo='Otac'";
        if (checkBox2.Checked)
            cmd.CommandText += " And Svojstvo='Majka'";
        if (checkBox3.Checked)
            cmd.CommandText += " And Svojstvo='Staratelj'";
        if (checkBox4.Checked)
            cmd.CommandText += " And Pol='Muški'";
        if (checkBox5.Checked)
            cmd.CommandText += " And Pol='Ženski'";
        cmd.CommandText += " Group By Roditelj.Ime, Roditelj.Prezime, Adresa, Svojstvo Having Count(Dete.RoditeljID) = " + numericUpDown1.Value.ToString();

        DataSet ds = new DataSet();
        OleDbDataAdapter da = new OleDbDataAdapter();
        da.SelectCommand = cmd;
        da.Fill(ds);

Затем я попытался расширить свою команду и написал это:

        cmd.CommandText = string.Format("Select Roditelj.Ime, Roditelj.Prezime, Adresa, Svojstvo From Roditelj, Svojstvo_Roditelja, Dete, Pol Where Roditelj.SvojstvoID = Svojstvo_Roditelja.SvojstvoID And Pol.PolID = Dete.PolID And Roditelj.RoditeljID = Dete.RoditeljID And (Svojstvo_Roditelja.Svojstvo='{0}' Or Svojstvo_Roditelja.Svojstvo='{1}' Or Svojstvo_Roditelja.Svojstvo='{2}') And (Pol.Pol='{3}' Or Pol.Pol='{4}')", checkBox1.Checked.ToString(), checkBox2.Checked.ToString(), checkBox3.Checked.ToString(), checkBox4.Checked.ToString(), checkBox5.Checked.ToString());

В результате этот запрос всегда записывает только пустую строку в gridview. Может кто-нибудь, пожалуйста, помогите мне. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...