IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Comment choisir d'apres un position definie la position que la combobox doit prendre


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Femme Profil pro
    4ème année Exia.CESI
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : 4ème année Exia.CESI

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Comment choisir d'apres un position definie la position que la combobox doit prendre
    Je suis en BTS IG, en premiere année. Je fais une PTI (Pratique des techniques informatiques) en c# graphique avec le thème : gestion des voitures.
    Pour cela, j'ai créé une base de donnée qui comprend :
    une table : Voiture (Immatriculation, IdMarque, Modele, DateMiseEnService, prix)
    clé primaire : Immatriculation ;
    clé étrangère : IdMarque en référence à IdMarque de la table Marque
    une table : Marque (IdMarque, LibelleMarque)
    clé primaire : IdMaque.

    Avec le code suivant, j'affiche el contenue de ma table marque dans ma combobox : CBMarque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     private void ModifierVoiture_Load(object sender, EventArgs e)
            {
                CBMarque.Items.Clear();
                string source = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=\"C:\\Users\\Julie\\Cours_BTS1\\TP_Csharp\\PTI_voitures\\pti_voiture.mdb\"";
     
                OleDbConnection maConnexion = new OleDbConnection(source);
     
                // ouvrir la connexion
                maConnexion.Open();
     
                String requete = "SELECT LibelleMarque FROM Marque;";
     
                // execution de la requete
                // 1ere lecture
                OleDbCommand mCommand = new OleDbCommand(requete, maConnexion);
                OleDbDataReader mReader;
                mReader = mCommand.ExecuteReader();
     
                // tant que le curseur est plein 
                while (mReader.Read())
                {
                    CBMarque.Items.Add(mReader[0]);
                }
     
                // fermeture du curseur
                mReader.Close();
                //fermeture de la base
                maConnexion.Close();
            }
    Ma liste déroulante se remplie sans problème.

    Dans ce windowsFrom je souhaiterai effectuer une recherche dans la table voiture, en fonction de l'immatriculation saisie et afficher les informations qui y sont présentes, j'arrive sans problème a afficher dans TBModele, TBDateMES et TBPrix a afficher mon résultat de ma requête, ais e n'arrive pas a indique que la liste déroulante affiche l'item 5 par exemple et si l'on clique sur la liste déroulante, toujours voir afficher le reste des proposition. puisque ce formulaire permet de modifier les informations sur un véhicule.

    contenue table Marque :
    id libelle
    1 Citroen
    2 Peugeot
    etc.

    la combobox commençant par zéro, je souhaiterais récupérer l'identifiant de la marque d'y soustraire 1 et afficher item de ce résultat.

    pouvez vous m'aider a faire cela ? Merci d'avance.

    voici le code actuel qui me permet afficher les résultats de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    private void BTLancerRecherche_Click(object sender, EventArgs e)
            {
                if (TBImmatriculation.Text == "")
                {
                    MessageBox.Show("Veuillez saisir une immatriculation");
                }
                else
                {
                    CBMarque.Items.Clear();
                    string source = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=\"C:\\Users\\Julie\\Cours_BTS1\\DAIGL (François)\\TP_Csharp\\PTI_voitures\\pti_voiture.mdb\"";
     
                    OleDbConnection maConnexion = new OleDbConnection(source);
     
                    // ouvrir la connexion
                    maConnexion.Open();
     
                    String requete = "SELECT IdMarque, Modele, DateMiseEnService, prix FROM Voiture WHERE Immatriculation = \"" + TBImmatriculation.Text + "\";";
     
                    // execution de la requete
                    // 1ere lecture
                    OleDbCommand mCommand = new OleDbCommand(requete, maConnexion);
                    OleDbDataReader mReader;
                    mReader = mCommand.ExecuteReader();
                    int pos = -1;
                    // tant que le curseur est plein 
                    while (mReader.Read())
                    {
                        TBModele.Text = Convert.ToString(mReader["Modele"]);
                        TBDateMES.Text = Convert.ToString(mReader["DateMiseEnService"]);
                        TBPrix.Text = Convert.ToString(mReader["prix"]);
                        pos = Convert.ToInt32(mReader["IdMarque"]);
                    }
                   CBMarque.SelectedIndex = pos -1;     //Mon erreur, problème
     
                    // fermeture du curseur
                    mReader.Close();
                    //fermeture de la base
                    maConnexion.Close();
     
                    if (pos == -1)
                    {
                        MessageBox.Show("cette immatriculation (" + TBImmatriculation.Text + ") n'est pas résente dans la base");
                    }
                }
            }
    Si vous souhaitez mon projet complet pour essayer faites moi signe

  2. #2
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CBMarque.Items.Clear();
    .......
    ........
     CBMarque.SelectedIndex = pos -1;     //Mon erreur, problème
    Erreur évident car tu vide ton CBMarque avant de faire une sélection.

    A+

  3. #3
    Futur Membre du Club
    Femme Profil pro
    4ème année Exia.CESI
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : 4ème année Exia.CESI

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    oui, je l'ai vu apres avoir publié en re-re-lisant mon code.
    Maintenant j'ai bien ma liste rempli, mais elle ne s'affiche pas a "l'item" souhaité, elle reste en position -1 (soit vide).

    Savez-vous comment faire ?

  4. #4
    Futur Membre du Club
    Femme Profil pro
    4ème année Exia.CESI
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : 4ème année Exia.CESI

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    PS : Je vous remercie de votre réponse Ramajb. Bonne fin de soirée à vous.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    4ème année Exia.CESI
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : 4ème année Exia.CESI

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Rectification, pour mes test, j'avais mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CBMarque.SelectedIndex = pos -1;
    en commentaire.

    Problème résolu.
    Merci beaucoup.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    P.S. Concernan la clé primaire de voiture, je te conseille de prendre le bon réflexe de toujours utilisé un clé primaire de type ID qui n'a rien a voir avec l'entité représentée afin d'éviter de coûteux problème due à une modélisation boiteuse.(un clé primaire qui doit être modifiable (pour une raison fonctionnelle) est un cauchemars à gérer)

    Ça ne t'empêche pas de mettre une contrainte d'unicité sur un autre champs de clé primaire métier (bien au contraire).

    Quand à savoir s'il faut prendre un champs de type auto-incrémentée, un guid, ou un nombre incrémenté à la main. Je ne relancerais pas ce vieux débat de pilier de comptoir.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    4ème année Exia.CESI
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : 4ème année Exia.CESI

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci Sinople. je prends note. Je ne vais pas modifier cette application, car ça modifierai trop de truc. Mais pour ma prochaine PTI, je prend note.
    Pour mon formulaire modification, je demande de saisir l'immatriculation, et seul les autres éléments peuvent être modifier. Quand j'ai créé ma base, j'avais considéré qu'une plaque d'immatriculation était unique.
    Merci. Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/07/2013, 20h48
  2. Réponses: 2
    Dernier message: 09/06/2008, 14h43
  3. Association : comment choisir le sens ?
    Par 1cado dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 26/09/2004, 23h12
  4. [JSP][Tomcat] COmment choisir la place des fichiers .class?
    Par mathieu dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 03/03/2004, 09h24
  5. Comment choisir une langue differente de la locale?
    Par julian_ross dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/03/2004, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo