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

Collection et Stream Java Discussion :

Utiliser HashMap pour remplir un JTable


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut Utiliser HashMap pour remplir un JTable
    Bonjour à tous,
    Je reviens encore vers vous après maintes recherches sans pourvoir m'en sortir.
    Voici mon problème :
    Je dispose d'un HashMap contenant des fournisseurs. En index, j'ai l'ID du fournisseur, et en valeur l'objet représentant le nom du fournisseur.
    Pour l'instant, avec cette méthode,
    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
    public static Map<String, String> getMapNomFourNumFour(){
    	connexion = new BDConnectAS400();
    	String requette = "SELECT DISTINCT NFOUFO,RSOCFO FROM B33STFC.FTFOUL01 WHERE CRAYFO = '205' OR CRAYFO = '208'"+"" +
    		"OR CRAYFO = '220' OR CRAYFO = '221' OR CRAYFO = '222' OR CRAYFO = '225' OR CRAYFO = '230' ORDER BY RSOCFO ASC";
    		//String requette  = "SELECT DISTINCT NFOUFO,RSOCFO FROM B33STFC.FTFOUL01 ORDER BY RSOCFO ASC";
    	Statement state;
    	ResultSet res;
    	Map<String, String> maHashMap = new TreeMap<String, String>();
    	try{
    	state = connexion.getInstance().createStatement();
    	res = state.executeQuery(requette);
    	while(res.next()){
    	maHashMap.put(res.getString(2), res.getString(1));}
    	res.close();
    	return maHashMap;
    	}catch (SQLException e){	  }
    	return null;
    	}
    je réussi à remplir sans trop de difficulté ma JComboFournisseur des noms des fournisseurs et lorsque je sélectionne un nom de fournisseur son code est affiché dans un JText.

    J'ai une autre table dans ma bdd contenant les articles des fournisseurs et j'aimerais mettre en place un second hashmap associé au prémier pour que lorsque je selectionne un fournisseur dans le combobox il affiche les objets article avec trois colonnes : code_article, le libellé, et le prix dans un JTable. Je précise que un fournisseur a 1 ou plusieurs articles.
    Je vous remercie pour votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    tu ajoute a ton objet Fournisseur un methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<Articles> getArticle()
    et l'ors de la selection dans ta combobox tu modifie ton TableModel

    il te faudra crée ton propre TableModel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private class ArticlesTableModel extends AbstractTableModel {
     
        public ArticlesTableModel(List<Articles> data){
        }
     
    ...
    }
    et tu redéfini tout ce que tu a besoin

    après au niveau de ton évènement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<Articles> articleFourniseur = maJComboBox.getselectedItem().getArticle();
    myJTable.setModel(new ArticlesTableModel (articleFourniseur ));

  3. #3
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Citation Envoyé par rolfone Voir le message
    et tu redéfini tout ce que tu a besoin
    après au niveau de ton évènement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<Articles> articleFourniseur = maJComboBox.getselectedItem().getArticle();
    myJTable.setModel(new ArticlesTableModel (articleFourniseur ));
    Il ya un problème à ce niveau car la JCombobox n'accepte pas getArticle

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    eu oui il faut un petit cast

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((Fournisseur )maJComboBox.getselectedItem()).getArticle()
    ou sinon la version qui ce lit un peux mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Fournisseur  fournisseur = (Fournisseur )maJComboBox.getselectedItem();
    List<Articles> articleFourniseur = fournisseur.getArticle();
    myJTable.setModel(new ArticlesTableModel (articleFourniseur ));

  5. #5
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    En suivant la méthode de rolfone :
    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
    public JComboBox getComboFournisseur() {
    	if (ComboFournisseur == null){
    	ComboFournisseur = new JComboBox();
    	ComboFournisseur.setBounds(135, 130, 352, 22);
    	ComboFournisseur.setSelectedIndex(-1);
    	//Action pour sélectionner le numéro du fournisseur
    	ComboFournisseur.addActionListener(new ActionListener() {
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    	//String code = (String) ComboFournisseur.getSelectedItem();
    	Object code = ComboFournisseur.getSelectedItem();
    	TxtNumFourniss.setText((String) fournisseur.get(code));
    	nomFour = (String) ComboFournisseur.getSelectedItem();
    	txtNomFournisseur.setText(nomFour);	
    //** ICI					
    DAOFourEtNumero fourEtNumero = (DAOFourEtNumero)ComboFournisseur.getSelectedItem();
    List<ArticleFourAS400> articleFournisseur = fourEtNumero.getArticleFourAS400();
    Table.setModel(new ArticleFourAS400TableModel(articleFournisseur));
    //** ICI
    }});
    }
    return ComboFournisseur;
    	}
    J'ai cette erreur :
    Exception in thread "Thread-4" java.lang.ClassCastException: java.lang.String cannot be cast to ci.dataService.DAOFourEtNumero
    at ci.interGraph.AddReception$4.actionPerformed(AddReception.java:472)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1311)
    Et du coup ma ComboFournisseur ne contient plus les codes des fournisseurs.

  6. #6
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    En fait voici le problème :
    J'ai une table Fournisseur contenant le nom du fournisseur et le code associer.
    Ex.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Code_Fournisseur|Nom_Fournisseur
         6059       | Sarkozy
         5387       | Sylvio
         8129       | Margaret
    ...
    J'ai aussi une seconde table de la bdd contenant les articles des ces fournisseurs se présentant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Code_Fournisseur|Code_Article|Nom_Article|Prix_Article
         6059       | 1234566    |   Viande  |    23.25
         5387       | 5977852    |   Poupée  |    11.03
         8129       | 5698781    |   Jupont  |    08.44
         6059       | 0215899    |   Slip    |    08.44
    ...
    J'ai mis en place une méthode avec hashMap qui me permet de remplir maCombobox avec les noms des fournisseurs et lorsque je sélectionne un nom_Fournisseur le code_Fournisseur correspondant s'affiche dans un Jtext.

    Cette fois-ci, je voudrais réaliser la même méthode(hashMap) mais sur deux tables (Fournisseurs, Articles) de sorte que lors que je sélectionne un fournisseur dans la JCombobox la liste de ses articles s'affiches dans un JTable. Je précise que un fournisseur a 1 ou plusieurs articles alors c'est la listes des articles d'un fournisseur donné que je doit chercher dans la table article J'ai vu dans un post où l'on parle de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap<Object, HashMap<String, Object>>
    Mais je n'ai pas très bien compris cela.

    Votre aide est très précieuse pour moi.
    Merci à encore les amis.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    alors voila comment je m'y prendrais moi les Map ne m'on pas l'aire d'etre la bonne solution

    ceci doit etre ta class DAOFourEtNumero si je ne me trompe pas
    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
    public class Fournisseurs {
     
        private String nom;
        private List<Articles> Articles = null;
     
        public Fournisseurs(String nom) {
            this.nom = nom;
            // recuperation des articles
        }
     
        public String getNom() {
            return nom;
        }
     
        public List<Articles> getArticles() {
            return Articles;
        }
     
        // on redefinie to string pour l'affichage
        @Override
        public String toString() {
            return this.nom;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Articles {
        private int code;
        private String nom;
        private double prix;
     
        // constructeur getter/Setter en fonction de ce que tu veux
    ...
    }
    ce qui fait que après tu remplis ta JComboBox directement avec tes Fournisseurs:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // en gros un truc comme ça 
    for(Fournisseurs  f : mapFournisseurs ){
        ComboFournisseur.additem(f);
    }
    ce qui fait que tu n'a plus des String dans ta JComboBox mais des Fournisseurs.

    donc ceci vas marché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fournisseurs selectedFournisseur = (Fournisseurs) ComboFournisseur.getSelectedItem();
    comme cela tu ne manipule qu'une seul List ou Map (je pense qu'une List peux très bien allé)

    tu comprend ce que je veux t'expliqué ?

  8. #8
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Merci beaucoup cher rolfone, de l'intérêt accordé à ma préoccupation.
    En effet je pense aussi à la même chose que toi
    Citation Envoyé par rolfone Voir le message
    les Map ne m'on pas l'aire d'etre la bonne solution
    Dans ma class DAOFourEtNumero j'ai ceci :
    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
    public static ArrayList<ArticleFourAS400> getArticleFourAS400(){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    		String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NFOUEF,B33STFC.FTEFAL01.NARTEF,B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"+""+
    		" FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208')";
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
    		try{
    			state = connexion.getInstance().createStatement();
    			res = state.executeQuery(requete);
    			while(res.next()){
    			ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    				artFourAS400.setNFOUEF(res.getString(1));
    				artFourAS400.setNARTEF(res.getString(2));
    				artFourAS400.setLARFEF(res.getString(3));
    				artFourAS400.setPXACTF(res.getString(4));
    				list.add(artFourAS400);	}
    			res.close();
    			return list;}
    		catch(SQLException e){e.printStackTrace();}
    		return null;
    	}
    Puisque j'ai rempli dans mon arraylist avec ma requete chargé en mémoire les données dont j'ai besoin dans un Arraylist, l'idée est de pourvoir manipuler cette list en fonction des critères que j'aurai choisi dans la combobox.

    Merci encore des vos idées.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Il y a 2 truc qui me choque mes après je n'est pas tout sous les yeux pour dir que c'est une erreur

    déjà le static devant la méthode

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NFOUEF,B33STFC.FTEFAL01.NARTEF,B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"+""+
    		" FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208')";
    ceci vas toujours te retourné le même résultat alors soit il te manque un paramètre soit t'a méthode n'est pas statique est utilise une des variable de ta class.

  10. #10
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Citation Envoyé par rolfone Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NFOUEF,B33STFC.FTEFAL01.NARTEF,B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"+""+
    		" FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208')";
    ceci vas toujours te retourné le même résultat alors soit il te manque un paramètre soit t'a méthode n'est pas statique est utilise une des variable de ta class.
    En fait cette requête est l'ensemble des données dans laquelle je souhaiterais rechercher des valeurs en fonction du critère défini sinon voici mon entité:
    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
    import java.io.Serializable;
     
    public class ArticleFourAS400 implements Serializable{
    	private static final long serialVersionUID = 1L;
    	private String NARTAR;//Numéro d'article du fichier des articles FTARL01
    	private String LARTAR;//Désignation de l'article du fichier des articles FTARL01
    	private String LAREAR;//Libelé externe de l'article
    	private String LARFEF;//Libellé de l'article dans le fichier FTEFAL01
    	private String NARTTF;//Numéro d'article du fichier FTTBAL01
    	private String PXACTF;//Prix d'article du fichier FTTBAL01
    	private String NARTEF;//Numéro des articles dans le fichier FTEFAL01 : Article multifournisseur
    	private String MDIREF;//Désignation de l'article dans le fichier FTEFAL01 : Aricle multifournisseur
    	private String NFOUEF;//Numéro du fournisseur de l'article
     
    	public ArticleFourAS400(){
     
    	}
    // les getter et setter ...
    Je voudrais pouvoir rechercher des valeurs dans cette Arraylist et les afficher dans un JTable

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    voila ce que je te propose

    à la place de récupérer tout les articles de ta DB dans une List et de faire effectuer la recherche à ton programme dans cette dernier.

    utilise les compétence de ton SGBD

    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
    46
    47
    48
    public class DAOFourEtNumero {
     
        private String nom;
        private int id;
     
        public DAOFourEtNumero(String nom, int id) {
            this.nom = nom;
            this.id = id;
        }
     
        public List<ArticleFourAS400> getArticleFourAS400() {
     
            connexion = new BDConnectAS400();
            reception = new AddReception();
     
            // ici on ajoute une clause au WHERE pour que le SGBD ne retourne que les article du fourniseur
            String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NFOUEF,B33STFC.FTEFAL01.NARTEF,B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"
                    + "FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 "
                    + "WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208') AND B33STFC.FTEFAL01.NFOUEF='" + this.id + "'";
            Statement state;
            ResultSet res;
            ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
            try {
                state = connexion.getInstance().createStatement();
                res = state.executeQuery(requete);
                while (res.next()) {
                    ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
                    artFourAS400.setNFOUEF(res.getString(1));
                    artFourAS400.setNARTEF(res.getString(2));
                    artFourAS400.setLARFEF(res.getString(3));
                    artFourAS400.setPXACTF(res.getString(4));
                    list.add(artFourAS400);
                }
                res.close();
                return list;
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
     
        }
     
        // on redefinie to string pour l'affichage
        @Override
        public String toString() {
            return this.nom;
        }
    }
    tu utilise ton SGBD a la place de ton programme tu utilisera moins de ressources au niveau de ton programme.

    dit moi si ça te pause problème

  12. #12
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Une question ?
    le paramètre :
    + this.id +
    que tu as mis dans la clause where. Comment je le récupère puisque ma Jcombobox contenant les fournisseurs se trouve dans une autre class ?

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    il faut que ta comboBox contienne des Fournisseurs est plus des String

    c'est pour cela que tu poura faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DAOFourEtNumero selectedFournisseur = (DAOFourEtNumero) ComboFournisseur.getSelectedItem();
    et donc que tu pourra utiliser directement les attribut de ta class

    j'avoue que je n'est pas était très claire sur ce point

  14. #14
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Ma comboboxFournisseur n'est pas remplit. J'éessaie de le remplir à l'aide de cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public void remplirComboBox(){
        	for(DAOFourEtNumero  f : mapFournisseurs ){
        		ComboFournisseur.addItem(f);
        	}
        }
    Mais je crois que je suis coincé ici : mapFournisseurs. Il me demande de créer une variable locale

  15. #15
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Merci infiniment rolfone,
    Ça fonction avec un peu de modification dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NARTEF, B33STFC.FTEFAL01.MDIREF, B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"+""
            +" FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208')"+""
            +" AND NFOUEF = (SELECT B33STFC.FTFOUL01.NFOUFO FROM B33STFC.FTFOUL01 WHERE B33STFC.FTFOUL01.RSOCFO = '" + this.nomFour + "')";
    Citation Envoyé par rolfone Voir le message
    tu utilise ton SGBD a la place de ton programme tu utilisera moins de ressources au niveau de ton programme.
    Cependant, on constate un temps de réponse un peu long du serveur car la la requête est exécutée à chaque sélection d'un fournisseur dans la combobox.
    L'idéale serait d'utiliser les données chargée en mémoire. J'aimerais bien tenter le coups.
    Pourrais-tu me donner un coup de main ?

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    bon je ne sais pas au nombre d'enregistrement ça risque d'être un peut lourd en mémoire mais bon moi je ferais comme ça.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    public class DAOFourEtNumero {
     
        private String nom;
        private int id;
        private List<ArticleFourAS400> listeArtciles = null;
     
        public DAOFourEtNumero(String nom, int id) {
            this.nom = nom;
            this.id = id;
            this.InitArticleFourAS400();
        }
     
        private void InitArticleFourAS400() {
     
            connexion = new BDConnectAS400();
            reception = new AddReception();
     
            // ici on ajoute une clause au WHERE pour que le SGBD ne retourne que les article du fourniseur
            String requete = "SELECT DISTINCT B33STFC.FTEFAL01.NFOUEF,B33STFC.FTEFAL01.NARTEF,B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"
                    + "FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 "
                    + "WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208') AND B33STFC.FTEFAL01.NFOUEF='" + this.id + "'";
            Statement state;
            ResultSet res;
            this.listeArtciles = new ArrayList<ArticleFourAS400>();
            try {
                state = connexion.getInstance().createStatement();
                res = state.executeQuery(requete);
                while (res.next()) {
                    ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
                    artFourAS400.setNFOUEF(res.getString(1));
                    artFourAS400.setNARTEF(res.getString(2));
                    artFourAS400.setLARFEF(res.getString(3));
                    artFourAS400.setPXACTF(res.getString(4));
                    list.add(artFourAS400);
                }
                res.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public List<ArticleFourAS400> getListeArtciles() {
            return listeArtciles;
        }
     
        public void setListeArtciles(List<ArticleFourAS400> listeArtciles) {
            this.listeArtciles = listeArtciles;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
     
     
        // on redefinie to string pour l'affichage
        @Override
        public String toString() {
            return this.nom;
        }
    }

Discussions similaires

  1. Utiliser HashMap pour retrouver la correspondance
    Par the watcher dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/08/2010, 00h04
  2. Comment utiliser fread pour remplire 1tableau dynamique
    Par MClover dans le forum Débuter
    Réponses: 9
    Dernier message: 13/04/2008, 15h38
  3. Probleme dans une boucle while pour remplir une JTable
    Par sky88 dans le forum Composants
    Réponses: 3
    Dernier message: 27/03/2008, 14h01
  4. Besoin de conseils pour remplir une JTable.
    Par Mike888 dans le forum Composants
    Réponses: 13
    Dernier message: 16/05/2007, 15h06
  5. Réponses: 36
    Dernier message: 13/05/2004, 18h22

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