Просмотр списка \ База данных \ ComboBox, c # - PullRequest
0 голосов
/ 28 мая 2019

В моей форме 6 комбо-боксов. Я сохранил их значения в таблице "TableauCombo", чтобы использовать снова. Я установил «для» просмотра таблицы и для каждого шага программа должна записывать в переменную «запрос» все значения, которые есть в таблице. (Создать SQL-запрос). Затем я запускаю запрос SQL и должен записать значения в виде списка. У меня есть некоторые ошибки, но я не могу их исправить. Вы можете мне помочь?

Я поставил код и ошибки под

 string[] TableauCombo = new string[7];
                {
                    TableauCombo[0] = "ID_Rad=@" + CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[1] = "Code_Etat=@" + CodeEtatFS_ComboBox_Home.SelectedIndex.ToString(); ;
                    TableauCombo[2] = "Code_Producteur=@" + Producteur_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[3] = "Code_Centre=@" + Centre_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[4] = "Code_StationdeDestination=@" + StationDestination_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[5] = "Code_Conditionnement=@" + Conditionnement_ComboBox_Home.SelectedIndex.ToString();
                };

                string requery = "";
                for (int i = 0; i < TableauCombo.Length; i++)
                {
                    requery = requery + TableauCombo[i];
                }
                LW_FS_Home.Items.Clear();
                MySqlCommand cmd = new MySqlCommand("SELECT FS FROM cdh.fiche WHERE " + requery + " ", connection);            // Requète SQL SELECT 
                MessageBox.Show("Requery" + requery + "");
                cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.Text);                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

                if (Connecté)
                {
                    using (MySqlDataReader Lire = cmd.ExecuteReader())
                    {
                        while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                        {
                            string FS = Lire["@FS"].ToString();                                                               // Declaration des colonnes et leurs équivalents (remplacants)
                            string ID_Rad = Lire["@ID_Rad"].ToString();
                            string Code_Etat = Lire["@Code_Etat"].ToString();
                            string Code_Producteur = Lire["@Code_Producteur"].ToString();
                            string Code_Centre = Lire["@Code_Centre"].ToString();
                            string Code_StationdeDestination = Lire["@Code_StationdeDestination"].ToString();
                            string Code_Conditionnement = Lire["@Code_Conditionnement"].ToString();

                            LW_FS_Home.Items.Add(new ListViewItem(new[] { FS, ID_Rad, Code_Etat, Code_Producteur, Code_Centre, Code_StationdeDestination, Code_Conditionnement }));// Ajout des nouvelles valeurs dans la list view
                        }
                    }
                    connection.Close();
                }
                else
                {
                    MessageBox.Show("Erreur de connexion");
                }
}

Ошибка:

"MySqlException: параметр '@ 1' должен быть определен."

Но программа может работать сама. (Комментарий: проверка конца) Возвращаемое значение: "RequeryID_Rad = @ 1 + ..........". (Фото) ОШИБКА

Просто чтобы быть в явном виде, весь комбобокс объявлен так:

try //Début Try/Catch pour le ComboBox des catégorie Radiologiqque
{
    connection.Open();
    CatégorieRadiologique_ComboBox_Home.DropDownStyle = ComboBoxStyle.DropDownList; //ReadOnly sur la comboBox
    string selectQuery = "SELECT ID_Rad , Radiologique FROM cdh.ctg_rad";
    MySqlCommand command = new MySqlCommand(selectQuery, connection);
    MySqlDataReader reader = command.ExecuteReader();

    while (reader.Read()) {
        CatégorieRadiologique_ComboBox_Home.Items.Add(reader.GetString("Radiologique"));
        string[, ] TableauRad = new string[1, 2] {
            {
                "ID_Rad", "Radiologique"
            },

        };
    }
    connection.Close();
} catch (MySqlException cn)

{
    MessageBox.Show(cn.Message);
    connection.Close();
}

Я думаю, что мое "за" это неправильно или ссылка с idk просмотра списка ..

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Пожалуйста, замените код на

string[] TableauCombo = new string[6];
            {
                TableauCombo[0] = "ID_Rad=@ID_Rad";
                TableauCombo[1] = "Code_Etat=@Code_Etat";
                TableauCombo[2] = "Code_Producteur=@Code_Producteur";
                TableauCombo[3] = "Code_Centre=@Code_Centre";
                TableauCombo[4] = "Code_StationdeDestination=@Code_StationdeDestination";
                TableauCombo[5] = "Code_Conditionnement=@Code_Conditionnement";
            };
0 голосов
/ 28 мая 2019

Вы передали параметр неправильно, вы должны передать только имя параметра в запросе и установить параметр с помощью command.Parameters.Add, как показано ниже:

string[] TableauCombo = new string[6];
TableauCombo[0] = "ID_Rad=@ID_Rad";
TableauCombo[1] = "Code_Etat=@Code_Etat";
TableauCombo[2] = "Code_Producteur=@Code_Producteur";
TableauCombo[3] = "Code_Centre=@Code_Centre";
TableauCombo[4] = "Code_StationdeDestination=@Code_StationdeDestination";
TableauCombo[5] = "Code_Conditionnement=@Code_Conditionnement";

string requery = string.Join(" AND ", TableauCombo);
LW_FS_Home.Items.Clear();
MySqlCommand cmd = new MySqlCommand("SELECT FS FROM cdh.fiche WHERE " + requery + " ", connection);

cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.SelectedIndex.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.SelectedIndex.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.SelectedIndex.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.SelectedIndex.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.SelectedIndex.ToString());                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

но я не уверен насчет индексов, выбранных в поле со списком, которые совпадают со значениями столбцов в cdh.fiche таблица

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