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

avec Java Discussion :

requete select ne marche pas dans jComobox


Sujet :

avec Java

  1. #1
    Membre actif
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut requete select ne marche pas dans jComobox
    bonsoir à tous ,
    jes deux jcombobox dont l'une dépende de l'autre je m'explique :
    la premiere Jcombobox est remplie depuis la BD des type de matériel (imprimante,scanners...ect);je veux l'orsque je choisi un type de matériel par exemple imprimante qu'il m'affiche dans la deuxieme jcombobox les numéro de série des imrprimantes qui sont en panne .voici ce ma requête à chaque selection d'un type il m'affiche un seul numéro de seri de ce type dans la combo et la liste comprend les numéro de série de tous les types en panne au lieu de ceux de celui que j'ai selectionné ,j' ignore pourquoi il prend pas en considération la condition WHERE en gras voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             String requete= "SELECT NUMSERIMAT FROM  PANNE INNER "
                        + "JOIN MATERIEL ON "
                        + " MATERIEL.NUMSERI= PANNE.NUMSERIMAT "
                        + " where TYPEMAT='" +  jComboType.getSelectedItem().toString()  + "'";
               Statement state = cnx.getConnection().createStatement();
                ResultSet result = state.executeQuery(requete);
                if (result.next()) {
    
                    jComboBox1.setSelectedItem(result.getObject(1).toString());
    avez -vous des suggestions ?
    merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonsoir,
    oui pour les suggestions :
    • Mettre un while à la place du if pour parcourir tous les enregistrements du resultset et ne pas avoir uniquement le premier (while (result.next()){...})
    • Remplacer result.getObject(1).toString() par result.getString(1)
    • Penser à fermer ce qui est ouvert (resultset, statement...), mais tu l'as peut-être fait plus bas...
    • Mais surtout ne pas faire des accès aux données dans l'interface en les délocalisant dans des classes spécifiques d'accès aux données

  3. #3
    Membre actif
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut
    Citation Envoyé par kox2ee Voir le message
    Bonsoir,[*]Mettre un while à la place du if pour parcourir tous les enregistrements du resultset et ne pas avoir uniquement le premier ([B]while (result.next()){...}
    merci de m'avoir répondu mais j'ai tous les enregistrement alors que je veux avoir seulement les enregistrement du matériel sélectionné avec la condition where : " where TYPEMAT='" + jComboType.getSelectedItem().toString() + "'";
    c'est ça mon problème .

    Penser à fermer ce qui est ouvert (resultset, statement...), mais tu l'as peut-être fait plus bas...
    oui je l'ai bien fermé en bas je voulais juste vous montrer la requête .

  4. #4
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (result.next()) {
                    jComboBox1.setSelectedItem(result.getObject(1).toString());
    }
    est quand même surprenant... il ne fait pas du tout ce dont tu parles.

    Si tu veux parcourir le resultset, et ajouter dans la combobox les enregistrements trouvés , il faut déjà supprimer tous les éléments s'y trouvant, puis parcourir tout le resultset (while) pour ajouter les enregistrements via le model de la combo.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DefaultComboBoxModel<String> model = (DefaultComboBoxModel<String>) combo.getModel();
    model.removeAllElements();
    while (result.next()) {
    	model.addElement(result.getString(1));
    }
    Sinon, si ta requête ne semble pas te fournir les résultats attendus, utilise les bonnes vieilles méthodes :
    Tu affiches l'instruction sql, et tu l'exécutes directement dans la DB.

  5. #5
    Membre actif
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut
    Citation Envoyé par kox2ee Voir le message
    Bonjour,
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (result.next()) {
                    jComboBox1.setSelectedItem(result.getObject(1).toString());
    }
    est quand même surprenant... il ne fait pas du tout ce dont tu parles.

    Si tu veux parcourir le resultset, et ajouter dans la combobox les enregistrements trouvés , il faut déjà supprimer tous les éléments s'y trouvant, puis parcourir tout le resultset (while) pour ajouter les enregistrements via le model de la combo.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DefaultComboBoxModel<String> model = (DefaultComboBoxModel<String>) combo.getModel();
    model.removeAllElements();
    while (result.next()) {
    	model.addElement(result.getString(1));
    }
    Sinon, si ta requête ne semble pas te fournir les résultats attendus, utilise les bonnes vieilles méthodes :
    Tu affiches l'instruction sql, et tu l'exécutes directement dans la DB.
    bonsoir ;
    je te remercie infiniment pour ton aide ça marche Dieu merci

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

Discussions similaires

  1. 'Limit' ne marche pas dans une sous requete !?
    Par walou dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2007, 14h06
  2. [XHTML] Title dans une balise select ne marche pas
    Par mcdelay dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 13/08/2007, 12h10
  3. Select qui marche pas dans variable
    Par sawyer20 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/08/2006, 16h06
  4. TO_DATE ne marche pas dans ma requete !
    Par merilith dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/06/2006, 06h31
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 11h43

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