Connexion et alimentation d'un combobox [Résolu]

Signaler
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008
-
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008
-
bonjour, je dois créer un application en c# mais j'arrive pas à créer une connexion avec ma base de données (il faut utiliser odbc ou olebd je pense)
et donc je ne peux pas alimenter ma combo box.

mon code de connexion:

  System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
       Connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source= D:\***.mdb";
       OleDbConnection.Open()

ma requete pour ma combobox:
select Titre from Revue;

merci de votre aide

52 réponses

Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

oui oui ma combo est bien alimenté par select Titre from Revue";
mais ce qui posse problème est ce qui est souligné dans : SELECT RaisonSociale,Adresse,DateFin FROM ABONNEMENT,REVUE WHERE ABONNEMENT.CodeRevue=Revue.Code AND Code.Revue = @code ";
J'ai essayé Revue.Code ou CodeRevue à la place mais caa change rien
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

il te faut des cours de SQL :) , le Combo est alimenté par titre , donc la requete "..... AND Revue.Titre = @titre " ce que je t'ai donné juste un exemple de jointure .
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

Salut ,
vous n'allez qu'a faire une petite recherche .
non je plaisante ,

string Sql = "select Titre from Revue";
DataSet DTSet = new DataSet();
OleDbDataAdapter DTA = new OleDbDataAdapter(Sql, Conn);
try
{
DTA.Fill(DTSet, "Revue");
}
catch
{
MessageBox.Show("Une erreur est survenue");
}
COMBO.DataSource =DTSet.Tables["Revue"];
COMBO.DisplayMember = "Revue";
COMBO.ValueMember = "Revue";
Bon dev
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

ok merci beaucoup mais pour la connexion à ma base de donnée? parce que ce que j'ai mis ne fonctionne pas

  System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
            Conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source= D:\Users\Matthieu\Documents\Ecole\2tsig\S3\C#\Projet EPOKA\Presse.mdb";
            OleDbConnection.Open();
            string Sql "select Titre from Revue"; DataSet DTSet new DataSet();
            OleDbDataAdapter DTA = new OleDbDataAdapter(Sql, Conn);
            try { DTA.Fill(DTSet, "Revue"); }
            catch { MessageBox.Show("Une erreur est survenue"); } comboBox.DataSource = DTSet.Tables["Revue"];
            comboBox.DisplayMember = "Revue";
            comboBox.ValueMember = "Revue";

mes erreurs

Erreur    1    Le nom 'Conn' n'existe pas dans le contexte actuel  
Erreur    2    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'System.Data.Common.DbConnection.Open()'   
Erreur    3    Le nom 'Conn' n'existe pas dans le contexte actuel  
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

ok merci beaucoup mais pour la connexion à ma base de donnée? parce que ce que j'ai mis ne fonctionne pas

  System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
            Conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source= D:\Users\Matthieu\Documents\Ecole\2tsig\S3\C#\Projet EPOKA\Presse.mdb";
            OleDbConnection.Open();
            string Sql "select Titre from Revue"; DataSet DTSet new DataSet();
            OleDbDataAdapter DTA = new OleDbDataAdapter(Sql, Conn);
            try { DTA.Fill(DTSet, "Revue"); }
            catch { MessageBox.Show("Une erreur est survenue"); } comboBox.DataSource = DTSet.Tables["Revue"];
            comboBox.DisplayMember = "Revue";
            comboBox.ValueMember = "Revue";

mes erreurs

Erreur    1    Le nom 'Conn' n'existe pas dans le contexte actuel  
Erreur    2    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'System.Data.Common.DbConnection.Open()'   
Erreur    3    Le nom 'Conn' n'existe pas dans le contexte actuel  
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

ca marche ma connexion
ma requete aussi mais dans ma combobox ca affiche :
System.Data.DataRowView

et de plus ceci bug
 //comboBox.DisplayMember = "Revue";
           // comboBox.ValueMember = "Revue";
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

Salut ,
System.Data.DataRowView ??.
j'ai pas compris , les items du Combo sont System.Data.DataRowView ou quoi ??.
pour le chemin du BDD il faut mieux utiliser le dossier de l'exe :
string PATH = Application.ExecutablePath;
Path = Path.Substring(0,Path.LastIndexOf("\"));
this.ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + "\\Presse.mdb";
DisplayMember : élément du DataSource qui sera afficher à l'utilisateur
ValueMember : l'élément qui sera retourné au nivo du COMBO.SelectedItem
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

pardon si c'est illisible , j'ai un probleme dans mon navigateur .
puisque vous travailler en mode deconnecté , je vous conseille de fermer a chaque fois la connexion Conn.close();
et pour l'ouvrir il suffit d'ecrire : Conn.open();
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

dans ma combobox au lieu d'afficher les libellées (donc le nom de mes revues) cela affiche System.Data.DataRowView et 3fois (3fois car j'ai 3tuples)
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

Tu as corrige tes erreurs Conn-->conn , OleDbConnection.Open()-->conn.open() ,??
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

oui oui, j'ai tout bien remplacé. c'est juste pour l'affichage des revues le problème.

comboBox.DisplayMember = "Revue";

c'est surtout celui qui suit qui ne fonctionne pas. il n'y pas possibilité d'un data set?
          comboBox.ValueMember = "Revue";
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

pardon , pardon , c'est pas "Revue" , c'est le champ "Titre" pour Display et Value
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

grand merci!! ca fonctionne!!!

encore une question je dois alimenter une datagrid view en raport avec la revue choisi. c'est à dire quand je choisis "le monde" je dois voir tous les abonnés.
comment dois être dans la requete sql where "combox.text=coderevue" pour afficher les données des abonées

encore merci ;)
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

pour les DataGridView vous utilisez que DataSource et pour la requete si j'ai bien compris la question : string Sql ="SELECT * FROM REVUE WHERE CODE =" + Combo.text;
sinon pour etre plus propre dans ton code vous utilisez les requetes parametrees :
string Sql "SELECT * FROM REVUE WHERE CODE @code ";
OleDbDataAdapter DTA = new OleDbDataAdapter(Sql,conn);
DTA.SelectCommande.Parameters.Add("@code",Combo.text);
juste une remarque , a chaque changement il faut vider le DataSet : DTSet.clear(); ou bien juste la table ça depend des besoins : DTSet.Tables["REVUES"].clear();
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

et comment fais ton pour le data source de la datagridview
genre datagridview.colums1.text??
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

tu veux alimenter ton DataGridView avec l'item du Combo ou bien ton Combo avec une cellule du DataGridView ??
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

je pense que des images serait plus simple
voila le resultat attendu

 et mes tables
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

donc tu dois creer une jointure entre les deux tables et en fonction de la valeur du Combo tu alimentes le DataGridView .
Messages postés
33
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
18 décembre 2008

effectivement, mais je ne vois pas comment faire en c#.
Messages postés
136
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2011

javascript:Insert_Emoticon('/imgs2/smile_question.gif'); c'est une requete sql ça n'a rien avoir avec c# ,mais ....
"SELECT RaisonSocial,Adresse,DateFin FROM ABONNEMENT,REVUE WHERE ABONNEMENT.CodeRevue=Revue.Code AND Code.Revue = @code ";
mais je vous conseille de prendre des cours Sql .
bon dev javascript:Insert_Emoticon('/imgs2/smile_wink.gif');