Problème de Base de Données.

Résolu
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 - 8 sept. 2014 à 14:03
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 - 8 sept. 2014 à 18:16
Bonjour, je reviens vers vous actuellement car j'ai un problème, je m'explique :

J'ai fait une application avec des formulaires contenant des ComboBox. Ces ComboBox sont censées recevoir des données grâce à une connexion à une base de données, jusque là je n'ai pas de problème.

La ComboBox2 est censée recevoir certaines informations de type texte classique.

La ComboBox3 est censée recevoir également certaines informations de type texte classique.

Les ComboBox4 ainsi que toutes les autres jusqu'à la 13ème sont également censées recevoir des informations de type texte classique, mais à partir de cette quatrième ComboBox, lors du lancement de l'application, j'ai un message d'alerte me signifiant qu'il y a une erreur sur la "clause FROM" de ma requête.

Les codes permettant la connexion à la base de données ainsi qu'à l'alimentation des données sont exactement les mêmes hormis les changement de nom de table, de champs, et de ComboBox, normal quoi !

En réalité seuls les deux premiers ComboBox (2 et 3) reçoivent les données de la base de données sans aucun problème, mais dès que j'ajoute un ComboBox de plus à alimenter en données, là ça plante.

Si quelqu'un à une solution à m'apporter, je suis preneur. J'ai revu par 5 fois au moins si je n'avait pas commis d'erreur dans les codes ou si j'avais bien respecté le type de champs dans la base de données, je n'ai rien trouvé d'alarmant, c'est mot-pour-mot un simple copié-collé.

Je vous affiche les codes :

Code de la connexion à la base de données :

const string CHAINE_CONNEXION = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\\bdd\\logiciels_gestion_modding.accdb;";
            string Message;

            try
            {
                Connexion = new OleDbConnection(CHAINE_CONNEXION);
                Connexion.Open();

                AfficherDonneesCommand();
                AfficherDonneesSpecialPower();
                AfficherDonneesObject();
            }
            catch (Exception Ex)
            {
                Message = "Problème de connexion à la base de données !\r\r" + Ex.Message;
                MessageBox.Show(Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }


Code de déconnexion de la base de données :

if (Connexion.State == ConnectionState.Open)
            {
                Connexion.Close();
            }

            Connexion = null;


Fonctions de remplissage de données de la base de données dans les ComboBox :

private void AfficherDonneesCommand()
        {
            string Requete;

            Requete = "SELECT * FROM Command ORDER BY Command ASC";

            OleDbDataAdapter DataAdapter;
            DataTable JeuDeDonnees;

            string Ligne;

            this.comboBox2.Items.Clear();
            DataAdapter = new OleDbDataAdapter(Requete, Connexion);
            JeuDeDonnees = new DataTable("Command");
            DataAdapter.Fill(JeuDeDonnees);

            foreach (DataRow Nouveau in JeuDeDonnees.Rows)
            {
                Ligne = Convert.ToString(Nouveau["Command"]);
                this.comboBox2.Items.Add(Ligne);
            }

            JeuDeDonnees = null;
            DataAdapter = null;
        }

        private void AfficherDonneesSpecialPower()
        {
            string Requete;

            Requete = "SELECT * FROM SpecialPower ORDER BY SpecialPower ASC";

            OleDbDataAdapter DataAdapter;
            DataTable JeuDeDonnees;

            string Ligne;

            this.comboBox3.Items.Clear();
            DataAdapter = new OleDbDataAdapter(Requete, Connexion);
            JeuDeDonnees = new DataTable("SpecialPower");
            DataAdapter.Fill(JeuDeDonnees);

            foreach (DataRow Nouveau in JeuDeDonnees.Rows)
            {
                Ligne = Convert.ToString(Nouveau["SpecialPower"]);
                this.comboBox3.Items.Add(Ligne);
            }

            JeuDeDonnees = null;
            DataAdapter = null;
        }

        private void AfficherDonneesObject()
        {
            string Requete;

            Requete = "SELECT * FROM Object ORDER BY Object ASC";

            OleDbDataAdapter DataAdapter;
            DataTable JeuDeDonnees;

            string Ligne;

            this.comboBox4.Items.Clear();
            DataAdapter = new OleDbDataAdapter(Requete, Connexion);
            JeuDeDonnees = new DataTable("Object");
            DataAdapter.Fill(JeuDeDonnees);

            foreach (DataRow Nouveau in JeuDeDonnees.Rows)
            {
                Ligne = Convert.ToString(Nouveau["Object"]);
                this.comboBox4.Items.Add(Ligne);
            }

            JeuDeDonnees = null;
            DataAdapter = null;
        }


Pour information afin de s'y retrouver, la ComboBox2 reçoit des données provenant d'une table s'appelant "Command", la ComboBox3 reçoit des données provenant d'une table s'appelant "SpecialPower", et la ComboBox4 est censée recevoir des données provenant d'une table s'appelant "Object".

Merci infiniment à celui qui pourra m'éclaircir.

ModdingMaster.

2 réponses

jordane45 Messages postés 37738 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2023 342
8 sept. 2014 à 16:22
Bonjour,

"Object" est sûrement un "nom" réservé.... (en général pour définir le "type" d'une variable...)

Tu peux essayer :
1 - De modifier le nom de ta table (et donc les lignes de codes qui y font appel) en mettant par exemple T_Object

2 - Tu peux aussi essayer d'encapsuler le "nom" de ta table entre quotes inversées :
'Object'

1
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
8 sept. 2014 à 18:16
Bonjour Jordane45, je te remercie d'avoir répondu si rapidement, en effet c'était bien le "Object" qui posait problème, j'avais pas essayé mais les ComboBox suivantes fonctionnaient bien étant donné qu'elles ne contenaient pas la mention "Object". Du coup j'ai remplacé "Object" par "XObject", ainsi que dans la base de données et puis c'est bon.

Merci infiniment, ça m'aurait ennuyé d'être resté bloqué sur ce problème.

:)

ModdingMaster
0
Rejoignez-nous