C# combobox sur requête paramétée [Résolu]

cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 24 févr. 2010 à 13:31 - Dernière réponse : cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention
- 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!!
Afficher la suite 

9 réponses

Répondre au sujet
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 25 févr. 2010 à 17:32
+3
Utile
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...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Smirneo
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 24 févr. 2010 à 17:07
0
Utile
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
Commenter la réponse de Smirneo
cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 25 févr. 2010 à 08:46
0
Utile
Je vous remercie pour votre réponse et je vais l'essayer et vous rendre compte. Merci
Commenter la réponse de cs_yassou123
cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 25 févr. 2010 à 10:57
0
Utile
salut, j'arrive toujours pas à exécuter la requête! est ce que vous pouvez me donner le code adéquat?
Commenter la réponse de cs_yassou123
cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 25 févr. 2010 à 15:00
0
Utile
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!
Commenter la réponse de cs_yassou123
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 25 févr. 2010 à 15:53
0
Utile
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.
Commenter la réponse de Smirneo
cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 25 févr. 2010 à 17:21
0
Utile
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?
Commenter la réponse de cs_yassou123
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 25 févr. 2010 à 19:01
0
Utile
Excuse moi mais pense à mettre "réponse accepté", ça pourra aider ceux qui ont eu le même problème que toi.

Merci.
Commenter la réponse de Smirneo
cs_yassou123 30 Messages postés dimanche 25 avril 2004Date d'inscription 8 mars 2010 Dernière intervention - 25 févr. 2010 à 19:47
0
Utile
Merci infiniment pour votre aide!
Commenter la réponse de cs_yassou123

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.