C# combobox sur requête paramétée

Résolu
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010 - 24 févr. 2010 à 13:31
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010 - 25 févr. 2010 à 19:47
Bonjour, je suis nouveau sur c#.net je voudrai poser une question si vous pouvez m'aider!
Voilà, j'ai un dataset sur une base de données oracle, j'ai deux tables categorie et sous_categorie, j'ai fait un combobox basé sur la première table catégorie(cde_cat, lib_cat) qui se remplie dès l'ouverture de la form, et je voudrai faire un deuxième combobox basé sur la table sous_categorie(cde_scat,lib_scat,cde_cat) qui se remplie dès qu'on a choisie une valeur du 1er combobox suivant le cde_cat, autrement dit il va afficher les valeurs de la sous_categorie qui correspondent à la catégorie choisie dans la premiere combobox (jointure selon la colonne cde_cat). j'espère que j'étais clair, merci d'avance pour votre aide précieuse!!

9 réponses

Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
25 févr. 2010 à 17:32
Tu crée une methode public que tu apel a chaque fois ou une classe que tu integre voila un exemple de class:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
                            /***** CONNEXION SGBD EX1 (20/11/2009) *****/
namespace Connecter
{
    public partial class Connexion : Form
    {      
        bool connexion = false;
        public Connexion()
        {
            InitializeComponent();
        }
public static SqlConnection sqlConnect;
        public bool Connect()
        {
            string data = "41010-5221291";
            string catalog = "papyrus";

            sqlConnect = new SqlConnection();
            sqlConnect.ConnectionString "Data Source"+data+";initial Catalog = "+catalog+";Integrated Security=true";

            try
            {
                sqlConnect.Open();
                connexion = true;
            }
            catch (Exception ce)
            {
                //MessageBox.Show("Erreur de connexion à la base", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Information);
                connexion = false;
                textBox1.Text = ce.Message;
            }

            return connexion;
        }
        
}

Et dès que j'en ai besoin je l'apel comme ca : (NomdeClasse.NomConnection)
         private SqlCommand sqlCde;
               //Création de la commande
                sqlCde = new SqlCommand();
                sqlCde.Connection = Connexion.sqlConnect;


Voila développe bien...
3
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
24 févr. 2010 à 17:07
Salut,
Dans l'évènement Selected_Index_Change(...) de ta comboBox ou plus simplement en mode design tu double click sur ta comboBox et tu spécifie le remplissage de ta 2eme combo avec La valeur ComboBox1.SelectedValue dans un requête Voici un exemple mais moi je bosse sous sql mais c'est presque pareil en c#:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string Requete="SELECT lib_scat FROM sous-categorie WHERE cde_cat ="+Convert.ToInt32(comboBox1.SelectedValue);
    //ici tu execute ta requete!
}


En espérant que ca puisse t'aider!!

Bon dev
0
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010
25 févr. 2010 à 08:46
Je vous remercie pour votre réponse et je vais l'essayer et vous rendre compte. Merci
0
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010
25 févr. 2010 à 10:57
salut, j'arrive toujours pas à exécuter la requête! est ce que vous pouvez me donner le code adéquat?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010
25 févr. 2010 à 15:00
salut, en fait j'ai réussi à exécuter la requête mais le problème c'est au moment du remplissage de la combobox lstScategorie . voici mon code :
    private void lstCategorie_SelectedIndexChanged(object sender, EventArgs e)
        {
                OleDbConnection dataconnection = new OleDbConnection();
                try
                {
                    lstScategorie.Items.Clear();
                    dataconnection.ConnectionString = "Provider=MSDAORA;Data Source=orcl;Persist Security Info=True;Password= yassou;User ID=yassou123";
                    dataconnection.Open();
                    OleDbCommand lstScatComm = new OleDbCommand();
                    lstScatComm.Connection = dataconnection;
                    string requete "SELECT libelle_scategorie, code_scategorie FROM scategorie WHERE code_categorie " + Convert.ToInt32(lstCategorie.SelectedValue);
                    lstScatComm.CommandText = requete;
                    //MessageBox.Show("on va exécuter la commande: " + lstScatComm.CommandText);
                    OleDbDataReader lstScatReader = lstScatComm.ExecuteReader();
                    while (lstScatReader.Read())
                    {
                        //Comment remplir la combobox
//avec la valeur affichée est libelle_categorie
//et celle passée en valeur de la combobox est code_scategorie??
                       
                    }
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erreur lors de l'accès à la base de données:" + ex.Message);
                }



JE vous remercie d'avance pour votre aide précieuse!
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
25 févr. 2010 à 15:53
tu doit faire ça en 2 étapes :

Les 2 sont similaires mais il y aura une étape au Page_Load qui vas remplir ta comboBox et
Une 2eme qui au comboBox1_SelectedIndexChanged va charger ta 2eme comboBox.
Et pour remplir dans les 2 cas tu fait :

while (lstScatReader.Read())
{
  ComboBox1.Item.Add(lstScatReader.GetValue(0).ToString();
}


En sachant que le 0 de GetValue veut dire le premier objet de ta requete, si tu voulais le "code_scategorie" tu mettrai 1...

Voila
bon dev.
0
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010
25 févr. 2010 à 17:21
merci beaucoup!! ça marche très bien! une dernière question: est ce que à chaque fois que je fais une manipulation
de ce genre je dois ouvrir une nouvelle connexion à la base de données?
est ce que je peux le faire une seule fois?
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
25 févr. 2010 à 19:01
Excuse moi mais pense à mettre "réponse accepté", ça pourra aider ceux qui ont eu le même problème que toi.

Merci.
0
cs_yassou123 Messages postés 30 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 8 mars 2010
25 févr. 2010 à 19:47
Merci infiniment pour votre aide!
0
Rejoignez-nous