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

AWT/Swing Java Discussion :

Remplir une combobox en lien avec une autre combobox


Sujet :

AWT/Swing Java

  1. #21
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Comment simplifier mes 3 combobox , est il possible d'avoir qu'une seul requête pour les 3 ?

    ma classe :
    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
     
    public class Salarie {
     
    	private int id;
    	private String matricule;
    	private String nometprenom;
     
    	 public Salarie(int id, String matricule, String nometprenom) {
             this.id=id;
             this.matricule=matricule;
             this.nometprenom=nometprenom;
    	 }
     
    	 public int getId() {
             return id;
        }
     
        public String getmatricule() {
             return matricule;
        }
     
        public void setLibelle(String nometprenom) {
             this.setNometprenom(nometprenom);
        }
     
    	public String getNometprenom() {
    		return nometprenom;
    	}
     
    	public void setNometprenom(String nometprenom) {
    		this.nometprenom = nometprenom;
    	}
     
    }
    ma Jframe

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    	JPanel panel = new JPanel();
     
    		JComboBox<Salarie> comboBox_1 = new JComboBox<>();
    		JComboBox<Salarie> comboBox_2 = new JComboBox<>();
    		JComboBox<SectionSalarie> comboBox_3 = new JComboBox<>();
     
    		panel.add(comboBox_1);
    		panel.add(comboBox_2);
    		panel.add(comboBox_3);
     
    		frmSaisieDesHeures.add(panel);
    		String selection = combobox_1.getSelectedItem();
    		String selectionCombo2 = (String) comboBox_2.getSelectedItem();
    		comboBox_2.removeAllItems();
     
    		comboBox_2.setSelectedItem(selectionCombo2); 
     
    		comboBox_1.addItemListener(e->selectcomboBox_1(comboBox_1,comboBox_3));
    		comboBox_2.addItemListener(e->selectcomboBox_2(comboBox_2,comboBox_3));
    		comboBox_3.addItemListener(e->selectcomboBox_3(comboBox_3));
     
    		selectcomboBox_1(comboBox_1, comboBox_2);
    		selectcomboBox_2(comboBox_2, comboBox_3);
     
     
    		JComboBox<String> comboBox_1 = new JComboBox<String>(new DefaultComboBoxModel<String>());
    		comboBox_1.setBounds(276, 149, 160, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_1);
    		PreparedStatement stmt1 = null;
    		ResultSet rs1 = null;
     
    		try {
    			stmt1 = Connexion_BDD.get().prepareStatement("SELECT DISTINCT NomEtPrenom FROM MOD_SalariesPresents_Vue01 where id");
     
    			rs1 = stmt1.executeQuery();
     
    			while (rs1.next()) {
     
    				comboBox_1.addItem(rs1.getString("NomEtPrenom"));
    			}
     
    			rs1.close();
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		}
     
    		//JComboBox<String> comboBox_2 = new JComboBox<String>();
    		comboBox_2.setBounds(81, 149, 113, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_2);
     
    		try(PreparedStatement stmt2 = Connexion_BDD.get().prepareStatement("SELECT Matricule FROM MOD_SalariesPresents_Vue01")){
     
    			ResultSet rs2 = stmt2.executeQuery();
     
    			while (rs2.next()) {
     
    				comboBox_2.addItem(rs2.getString("Matricule"));
    			}
     
    			rs2.close();
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		}
     
     
    		JComboBox<SectionSalarie> comboBox_3 = new JComboBox<>();
    		comboBox_3.setBounds(522, 149, 212, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_3);
    		comboBox_3 .setRenderer(new DefaultListCellRenderer() {
     
    			public DefaultListCellRenderer getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
    					boolean cellHasFocus) {
     
    				if ( value instanceof SectionSalarie ) {
    					SectionSalarie sectionSalarie = (SectionSalarie ) value;
    					setText(sectionSalarie.getSectionSalarie()+"-"+sectionSalarie.getLibellesection()); 
    				}
     
    				 return this;
    			}
     
     
    		});
     
    		try (PreparedStatement stmt3 = Connexion_BDD.get().prepareStatement("SELECT DISTINCT id,SectionSalarie,LibelleSection FROM MOD_SalariesPresents_Vue01 ")) {
    			   ResultSet rs3 = stmt3.executeQuery();
     
    			 while((rs3.next())) {
     
    		          comboBox_3.addItem(new SectionSalarie(rs3.getInt("id"), rs3.getString("SectionSalarie"), rs3.getString("LibelleSection")));
    		 SectionSalarie sectionsalarie = (SectionSalarie)comboBox_3.getSelectedItem();
     
    		 sectionsalarie.getId();			     
    		 sectionsalarie.getSectionSalarie();
    		 sectionsalarie.getLibellesection();
     
    			 } 
     
    			  rs3.close();
     
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		}
    merci

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Alex1407 Voir le message
    Comment simplifier mes 3 combobox , est il possible d'avoir qu'une seul requête pour les 3 ?
    Si 2 combo sont "liées", c'est que les items de l'une dépendent d'un item dans l'autre (celui sélectionné), item dont l'id va te servir à faire à le where. Autant, la deuxième et la troisième pourrait être liées chacune à la première, et donc on pourrait avoir la même requête pour les deux (d'ailleurs, inutile d'exécuter 2 fois la requête : on remplit une liste qui sert à remplir les 2 combo), mais sinon il y a forcément au moins 2 requêtes différentes. Après, on peut imaginer avec une seule 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
    19
    20
    21
    22
    23
    24
    25
    26
    List<Salarie> getSalaries(Integer id) {
     
       String sql = <le select from table>
       if ( id!=null) {
          sql+=" where id = ?";
       }
     
       List<Salarie> list = new ArrayList<>();
       Connection cnx = Connection.getConnection();
       try {
           try(PreparedWhere pw = cnx.preparedWhere(sql)) {
     
                  if ( id!=null ) {
                      pw.setInteger(1, id);
                  }
                  ResultSet rs = pw.executeQuery();
                  while( rs.nex() ) {
                        list.add( new Salarie( ... ) );
                  }
     
           }
       finally(){
           Connection.release(cnx);
       }
       return list;
    }
    Ainsi pour remplir la première combo tu auras getSalaries(null), et pour les autres getSalaries( selectedSalarie.getId() )
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    j'essaie depuis hier soir de mettre en place les combo-box mais en vain. Rien ne fonctionne, les list ne sont pas reconnu...
    Merci de votre aide

    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
     
    		JPanel panel = new JPanel();
     
    		JComboBox<Salarie> comboBox_1 = new JComboBox<>();
    		JComboBox<Salarie> comboBox_2 = new JComboBox<>();
    		JComboBox<SectionSalarie> comboBox_3 = new JComboBox<>();
     
    		panel.add(comboBox_1);
    		panel.add(comboBox_2);
    		panel.add(comboBox_3);
     
    		frmSaisieDesHeures.add(panel);
    		String selection = combobox_1.getSelectedItem();
    		String selectionCombo2 = (String) comboBox_2.getSelectedItem();
    		comboBox_2.removeAllItems();
     
     
    		JComboBox<String> comboBox_1 = new JComboBox<String>(new DefaultComboBoxModel<String>());
    		comboBox_1.setBounds(276, 149, 160, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_1);
     
    		List<Salarie> list = new ArrayList<>();
    		List<Salarie> getSalaries(Integer id) {
     
    			   String sql = ("SELECT id,Matricule,NomEtPrenom,LibelleSection FROM MOD_SalariesPresents_Vue01");
    			   if ( id!=null) {
    			      sql+=" where id = ?";
    			   }
     
     
    			   Connection cnx = Connexion_BDD.get();
    			   try {
    			       try(PreparedStatement pw = Connexion_BDD.get().prepareStatement(sql)) {
     
    			              if ( id!=null ) {
    			                  pw.setInt(1, id);
    			              }
    			              ResultSet rs = pw.executeQuery();
    			              while(rs.next()) {
    			                    list.add(new Salarie(rs.getInt("id"),rs.getString("Matricule"),rs.getString("NomEtPrenom"),rs.getString("LibelleSection")));
    			              }
     
    			       }finally {
    			      cnx.close();
    			   }
    			   return list;
    			   }
    		}

  4. #24
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ne me mets pas de bribes de code parce que je ne sais comment les interpréter. Si je prends ton dernier code, j'ai une séquence d'instructions dont je ne sais si elles sont dans une méthode ou pas. Si je suppose qu'elles sont dans une méthode, alors tu as une méthode détfinie dans une méthode (List<Salarie> getSalaries(Integer id)) ce qui n'existe pas en Java.

    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
    public class JeSaisPasQuoi {
     
    public void buildUI() {
    JPanel panel = new JPanel();
     
    		JComboBox<Salarie> comboBox_1 = new JComboBox<>();
    		JComboBox<Salarie> comboBox_2 = new JComboBox<>();
    		JComboBox<SectionSalarie> comboBox_3 = new JComboBox<>();
     
    		panel.add(comboBox_1);
    		panel.add(comboBox_2);
    		panel.add(comboBox_3);
     
    		frmSaisieDesHeures.add(panel);
    		String selection = combobox_1.getSelectedItem();
    		String selectionCombo2 = (String) comboBox_2.getSelectedItem();
    		comboBox_2.removeAllItems();
     
     
    		JComboBox<String> comboBox_1 = new JComboBox<String>(new DefaultComboBoxModel<String>());
    		comboBox_1.setBounds(276, 149, 160, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_1);
     
    		List<Salarie> list = getSalaries(null); // liste de tous les salaries
     
    	        list.forEach(item-> comboBox_1.addItem(item)); // on ajoute tous les items de list dans la combo
     
     
    }
     
    		List<Salarie> getSalaries(Integer id) {
     
    			   String sql = "SELECT id,Matricule,NomEtPrenom,LibelleSection FROM MOD_SalariesPresents_Vue01";
    			   if ( id!=null) {
    			      sql+=" where id = ?";
    			   }
     
     
    			   Connection cnx = Connexion_BDD.get();
     
    			       try(PreparedStatement pw = Connexion_BDD.get().prepareStatement(sql)) {
     
    			              if ( id!=null ) {
    			                  pw.setInt(1, id);
    			              }
    			              ResultSet rs = pw.executeQuery();
    			              while(rs.next()) {
    			                    list.add(new Salarie(rs.getInt("id"),rs.getString("Matricule"),rs.getString("NomEtPrenom"),rs.getString("LibelleSection")));
    			              }
     
    			       }finally {
    			      cnx.close();
     
    			   return list;
    			   } 
     
    }
    list.forEach(item-> comboBox_1.addItem(item)) est une façon de faire. Tu peux aussi itérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(Salarie item : list) {
         comboBox_1.addItem(item);
    }
    ou encore plein d'autres solutions. Comme changer le modèle aussi : comboBox_1.setModel(new DefaultComboBoxModel<>(list.toArray(new Salarie[list.size()])));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #25
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Ne me mets pas de bribes de code parce que je ne sais comment les interpréter
    c'est quoi des bribes ? le code que j'ai mis est le code de ma jframe.

    je ne sais pas ce que je peux enlever, j'essaye plein de chose et je m'y perd.

  6. #26
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Alex1407 Voir le message
    c'est quoi des bribes ? le code que j'ai mis est le code de ma jframe.
    Je veux dire indique moi au moins les signatures de méthodes, et l'accolade fermante. Si le code est trop long, tu mets que la partie intéressant et le reste tu mets des /** ... ici du code qui fait ci ou ça ... **/. Et précise-moi où se trouve cette méthode (le nom de la classe à minima).

    Si je reprends ton dernier code, je rajoute en jaune ce que j'aurais préféré avoir,

    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
    public class MachinTruc {
    
    
    public void methodTrucBidule() {
    
            /** ... là du code qui fait des trucs qui ne concernent pas la question ... **/
    
    
    		JPanel panel = new JPanel();
     
    		JComboBox<Salarie> comboBox_1 = new JComboBox<>();
    		JComboBox<Salarie> comboBox_2 = new JComboBox<>();
    		JComboBox<SectionSalarie> comboBox_3 = new JComboBox<>();
     
    		panel.add(comboBox_1);
    		panel.add(comboBox_2);
    		panel.add(comboBox_3);
     
    		frmSaisieDesHeures.add(panel);
    		String selection = combobox_1.getSelectedItem();
    		String selectionCombo2 = (String) comboBox_2.getSelectedItem();
    		comboBox_2.removeAllItems();
     
     
    		JComboBox<String> comboBox_1 = new JComboBox<String>(new DefaultComboBoxModel<String>());
    		comboBox_1.setBounds(276, 149, 160, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_1);
     
    		List<Salarie> list = new ArrayList<>();
    		List<Salarie> getSalaries(Integer id) {
     
    			   String sql = ("SELECT id,Matricule,NomEtPrenom,LibelleSection FROM MOD_SalariesPresents_Vue01");
    			   if ( id!=null) {
    			      sql+=" where id = ?";
    			   }
     
     
    			   Connection cnx = Connexion_BDD.get();
    			   try {
    			       try(PreparedStatement pw = Connexion_BDD.get().prepareStatement(sql)) {
     
    			              if ( id!=null ) {
    			                  pw.setInt(1, id);
    			              }
    			              ResultSet rs = pw.executeQuery();
    			              while(rs.next()) {
    			                    list.add(new Salarie(rs.getInt("id"),rs.getString("Matricule"),rs.getString("NomEtPrenom"),rs.getString("LibelleSection")));
    			              }
     
    			       }finally {
    			      cnx.close();
    			   }
    			   return list;
    			   }
    		}
    
                     /** ... là du code qui fait des trucs qui ne concernent pas la question ... **/
    
              }
    }
    Et donc là je vois tout de suite que ce que tu me montres ne peut pas compiler : il y a une méthode dans une méthode !

    Alors qu'avec ton message, je me suis dit soit il a mis bout à bout deux codes qui n'ont rien à voir dans la même balise code, soit il a vraiment mis un code de méthode dans une méthode... c'est quand même mieux quand on n'est pas obligé de supposer toutes les possibilités. Enfin, si tu veux avoir une réponse directe et précise rapidement.
    Accessoirement, ça me donne des renseignements annexes : si la méthode est static, si elle attend un paramètre en retour, etc... qui peuvent nous permettre de te donner une réponse encore plus précise, ou des alertes sur des problèmes que tu risques d'avoir.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #27
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    d'accord j'essayerais d'être plus clair.

    dois-je mettre mon code dans une nouvelle classe ?

    Je mets mes fichiers en pièces jointes pour être plus clair et ne pas dire de bêtise.

    merci
    Fichiers attachés Fichiers attachés

  8. #28
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pas la peine de le mettre dans une autre classe (ce serait plus propre de séparer l'ui et le dao, mais ton programme a 3 classes, ce n'est pas un projet d'application professionnelle avec 25000 classes).

    Mais surtout il faut que le code soit dans une méthode à part. Là, je vois que tu as simplement virer la signature de la méthode et l'accolade finale :

    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
    List<Salarie> list = getSalarie(null); // liste de tous les salaries
     
    	        list.forEach(item-> comboBox_1.addItem(item)); // on ajoute tous les items de list dans la combo
     
     
    			   String sql = ("SELECT id,Matricule,NomEtPrenom,LibelleSection FROM MOD_SalariesPresents_Vue01");
    			   if ( id!=null) {
    			      sql+=" where id = ?";
    			   }
     
    			   Connection cnx = Connexion_BDD.get();
    			   try {
    			       try(PreparedStatement pw = Connexion_BDD.get().prepareStatement(sql)) {
     
    			              if ( id!=null ) {
    			                  pw.setInt(1, id);
    			              }
    			              ResultSet rs = pw.executeQuery();
    			              while(rs.next()) {
    			                    list.add(new Salarie(rs.getInt("id"),rs.getString("Matricule"),rs.getString("NomEtPrenom"),rs.getString("LibelleSection")));
    			              }
     
    			       }finally {
    			      cnx.close();
    			   }
    			   return list;
    Ça ne risque pas de mieux fonctionner. Ça ne risque pas de compiler puis que tu te retrouves à avec un return en plein milieu de ta méthode initialize(), ce qui est formellement interdit.

    Je te remets le canevas de ce que devrais être ta classe Fenetre :

    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
    public class Fenetre {
     
        public static void main(String[] args) {
        }
     
        public Fenetre() {
    		initialize();
        }
     
        private void initialize() {     
        }
     
        private List<Salarie> getSalaries(Integer id) {
        }
     
        private List<SectionSalarie> getSectionSalaries(Integer id) {
        }
     
     
    }
    Les méthodes (et le constructeur) sont bien séparés. Il n'y en a aucun l'un dans un autre. Maintenant, il te suffit de remettre le code dans les méthodes. Et dans la sous partie de initialize() qui suit, j'ai barrée ce qui devrait être dans private List<Salarie> getSalaries(Integer id) { //ICI }
    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
    JComboBox<String> comboBox_1 = new JComboBox<String>(new DefaultComboBoxModel<String>());
    		comboBox_1.setBounds(276, 149, 160, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_1);
    	
    		List<Salarie> list = getSalarie(null); // liste de tous les salaries
     
    	        list.forEach(item-> comboBox_1.addItem(item)); // on ajoute tous les items de list dans la combo
    	
    			 
    			   String sql = ("SELECT id,Matricule,NomEtPrenom,LibelleSection FROM MOD_SalariesPresents_Vue01");
    			   if ( id!=null) {
    			      sql+=" where id = ?";
    			   }
    			   
    			   Connection cnx = Connexion_BDD.get();
    			   try {
    			       try(PreparedStatement pw = Connexion_BDD.get().prepareStatement(sql)) {
    			 
    			              if ( id!=null ) {
    			                  pw.setInt(1, id);
    			              }
    			              ResultSet rs = pw.executeQuery();
    			              while(rs.next()) {
    			                    list.add(new Salarie(rs.getInt("id"),rs.getString("Matricule"),rs.getString("NomEtPrenom"),rs.getString("LibelleSection")));
    			              }
    			 
    			       }finally {
    			      cnx.close();
    			   }
    			   return list;
    Ensuite, pour les autres requêtes, tu devrais commencer à déplacer la partie qui concerne que la requête dans une méthode à part.
    [entre parenthèse]Tu devrais d'ailleurs plus découper ton code en méthode, parce que ta méthode initialize() de 530 lignes, c'est vraiment trop long. Même quelqu'un d'expériementé va difficilement trouver où se trouve un problème lorsqu'il survient. Quand on découpe, on isole chaque partie, ce qui fait que lorsque quelque chose ne va pas, on se paluche pas 500 lignes, mais 40 tout au plus. Ensuite, on peut rapidement module (commenter une méthode, inverser l'appel de 2 méthodes, ajouter un élément intermédiaire, remplacer une méthode, par une méthode de test/debug, etc... en cas de problème). Avec 500 lignes tu peux de retrouver avec des commentaires dans tous le sens et ne plus savoir ce qu'il faut conserver, virer ou décommenter.[fin de la parenthèse]
    Tu appliques le même principe plus ou moins (utilsier une classe pour représenter la donnée d'une table), retourner une liste. Remplir une combo avec cette liste.
    Tu pourras ensuite mutualiser (fusionner 2 méthodes qui traitent la même tâble avec une requête légèrement différente (avec id ou sans, comme dans getSalarie()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #29
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    j'essaie de mieux organiser mon code.

    Par exemple le code ci dessous , je dois le mettre dans quel parti de ma jframe puisque j'ai de l'interface et du code ?

    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
    JComboBox<String> comboBox_2 = new JComboBox<String>();
    			comboBox_2.setBounds(81, 149, 113, 20);
    			frmSaisieDesHeures.getContentPane().add(comboBox_2);
     
    			try(PreparedStatement stmt2 = Connexion_BDD.get().prepareStatement("SELECT Matricule FROM MOD_SalariesPresents_Vue01")){
     
    				ResultSet rs2 = stmt2.executeQuery();
     
    				while (rs2.next()) {
     
    					comboBox_2.addItem(rs2.getString("Matricule"));
    				}
     
    				rs2.close();
    			} catch (SQLException e1) {
    				// 
    				e1.printStackTrace();
    			}
    ce serait plus propre de séparer l'ui et le dao
    je voulais séparer mon code mais je n'ai pas réussi de plus je n'ai jamais fait de programme avec une interface si imposante

    Merci
    Fichiers attachés Fichiers attachés

  10. #30
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est exactement le même principe que pour l'autre combo :

    Il y a une partie ui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JComboBox<String> comboBox_2 = new JComboBox<String>();
    			comboBox_2.setBounds(81, 149, 113, 20);
    			frmSaisieDesHeures.getContentPane().add(comboBox_2);
     
     
        // ici un appel à une méthode pour remplir la combo
    La méthode (DAO) pour remplir la combo va être du genre :

    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
    public List<String> getSalariesPresents()) {
     
           List<String> list = new ArrayList<>();
     
    			try(PreparedStatement stmt2 = Connexion_BDD.get().prepareStatement("SELECT Matricule FROM MOD_SalariesPresents_Vue01")){
     
    				ResultSet rs2 = stmt2.executeQuery();
     
    				while (rs2.next()) {
     
    					list.addI(rs2.getString("Matricule"));
    				}
     
     
    			} catch (SQLException e1) {
    				// 
    				e1.printStackTrace();
    			}
     
          return list;
     
    }
    Ici j'ai fait une liste de String, parce que ça suffit à stocker un matribule. Ensuite, si tu veux pouvoir récupérer ou modifier autre chose que le matricule, fais une classe "SalariesPresents" et génére une List<SalariesPresnent>, comme dans l'autre cas qu'on a vue.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #31
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Plus rien ne marche , il me souligne les List, le nom de mes combo box.

    plus j'avance moins ca marche

    merci
    Fichiers attachés Fichiers attachés

  12. #32
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Dans ton fichier Fenetre3, à la fin de la classe il y a un bout de code d'une autre classe (est-ce vraiment comme ça dans ton code ou tu as tout concaténé dans le fichier juste pour mettre qu'un seul fichier joint ?) :

    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
    	import java.awt.List;
    	import java.sql.PreparedStatement;
    	import java.sql.ResultSet;
    	import java.sql.SQLException;
    
    	import javax.swing.DefaultListCellRenderer;
    	import javax.swing.JButton;
    	import javax.swing.JComboBox;
    	import javax.swing.JList;
    
    	import DB.Connexion_BDD;
    
    	public class SalariePresent {
    		
    
    		
    		JComboBox<String> comboBox_2 = new JComboBox<String>();
    		comboBox_2.setBounds(81, 149, 113, 20);
    		frmSaisieDesHeures.getContentPane().add(comboBox_2);
    		
    		try(PreparedStatement stmt2 = Connexion_BDD.get().prepareStatement("SELECT Matricule FROM MOD_SalariesPresents_Vue01")){
    
    			ResultSet rs2 = stmt2.executeQuery();
    
    			while (rs2.next()) {
    
    				comboBox_2.addItem(rs2.getString("Matricule"));
    			}
    			
    			rs2.close();
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		}
    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
    	Jprivate List<SectionSalarie> getSectionSalaries(Integer id) {
    		comboBox_3 .setRenderer(new DefaultListCellRenderer() {
    			 
    			public DefaultListCellRenderer getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
    					boolean cellHasFocus) {
    
    				if ( value instanceof SectionSalarie ) {
    					SectionSalarie sectionSalarie = (SectionSalarie ) value;
    					setText(sectionSalarie.getSectionSalarie()+"-"+sectionSalarie.getLibellesection()); 
    				}
    
    				 return this;
    			}
    
    
    		});
    		
    		try (PreparedStatement stmt3 = Connexion_BDD.get().prepareStatement("SELECT DISTINCT id,SectionSalarie,LibelleSection FROM MOD_SalariesPresents_Vue01 ")) {
    			   ResultSet rs3 = stmt3.executeQuery();
    
    			 while((rs3.next())) {
    				 
    		          comboBox_3.addItem(new SectionSalarie(rs3.getInt("id"), rs3.getString("SectionSalarie"), rs3.getString("LibelleSection")));
    		 SectionSalarie sectionsalarie = (SectionSalarie)comboBox_3.getSelectedItem();
    		 
    		 sectionsalarie.getId();			     
    		 sectionsalarie.getSectionSalarie();
    		 sectionsalarie.getLibellesection();
    			 } 
    			 
    			  rs3.close();
    
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		} 
    	}
    Le premier bloc en jaune est uné sequence de code : on ne peut pas mettre une séquence de code dans le corps d'une classe, seulement dans une méthode, ou un constructeur éventuellement.
    Le second bloc en jaune, c'est une méthode qui est censé retourner une liste de salariés, et elle commence par manipuler un combobox pour lui affecter un renderer ! Et la variable comboBox3 n'est pas définie en plus (elle l'est dans une autre méthode d'une autre classe; mais à l'endroit que tu l'utilises, c'est comme si elle n'existait pas). En l'occurence c'est du code d'UI, et je t'ai dit de le mettre juste après la création de la combo (new JComboBox() je veux dire).

    Ensuite, il y a un mélange de code ici :
    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
    try (PreparedStatement stmt3 = Connexion_BDD.get().prepareStatement("SELECT DISTINCT id,SectionSalarie,LibelleSection FROM MOD_SalariesPresents_Vue01 ")) {
    			   ResultSet rs3 = stmt3.executeQuery();
     
    			 while((rs3.next())) {
     
    		          comboBox_3.addItem(new SectionSalarie(rs3.getInt("id"), rs3.getString("SectionSalarie"), rs3.getString("LibelleSection")));
    		 SectionSalarie sectionsalarie = (SectionSalarie)comboBox_3.getSelectedItem();
     
    		 sectionsalarie.getId();			     
    		 sectionsalarie.getSectionSalarie();
    		 sectionsalarie.getLibellesection();
    			 } 
     
    			  rs3.close();
     
    		} catch (SQLException e1) {
    			// 
    			e1.printStackTrace();
    		}
    Tu est dans la boucle de recupération d'informations du ResultSet, pour remplir une combo (qui n'existe pas), et tu fais appel à une selection de combo, dont tu appelles les getters juste pour le fun (parce le but d'appeler un getter c'est de récupérer une information, alors que là tu ignores simplement le retour des getters).
    On manipule la sélection d'une combo lorsque la sélection change : donc sur écoute d'évenement. Certainement pas à l'endroit où on remplit la combo.

    Je ne peux pas t'aider :
    1. si tu n'as pas les bases : comment est fait une classe, où met-on le code, comment s'organisent les méthodes et le classes, comment appeler une méthode et récupérer un résultat produit par cette méthode, etc
    2. si tu prends des blocs de code que tu mets n'importe où, en dépit de la logique aussi bien fonctionnelle qu'élémentaire.
      Je t'ai montré une méthode pour récupérer les données lues dans la base par une requête dans une liste, je t'ai montré différentes façon d'utiliser cette liste pour remplir une JComboBox, je t'ai donné un petit programme ou on voit comment réagir à la sélection d'une combo pour l'exploiter pour faire quelque chose (en l'occurence changer les items d'une combo). Je vois bien que tu es perdu, mais si tu ne découpes pas ton problème en éléments séparés, ou que tu le fais mais que tu mélanges des bouts de ces éléments séparés ensembles, je ne vois pas trop comment je peux t'aider. Si je t'ai montré comment récupérer le résultat d'une requête dans une liste d'une part et d'autre part comment remplir une combo d'autre part, c'est bien pour que ces notions restent séparées, et ne se mélange pas. Donc commence par ne pas les mélanger. Ensuite, programmer c'est assembler les différents élements sans les mélanger : une méthode en appelle une autre et récupère son resultat, une méthode d'une classe créé un objet d'une autre classe et en stocke la référence, les connexions entre méthodes, entre classes/instances, ou entre méthodes et classes, sont limitées et il n'y a pas de bout de l'un qui doit aller dans l'autre.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #33
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    Merci beaucoup pour votre aide, a chaque fois que j'ai demandé de l'aide vous me l'avez apporté.

    Mais le Java a eu raison de moi cette fois-ci, c'est trop compliquer pour moi, interfaces, pas interfaces etc....

    Je mets résolu, le poste aidera surement d'autres personnes qui on une logique plus développer que moi.

    Merci beaucoup en tout cas

  14. #34
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il ne faut pas pour autant abandonner. Et il n'y a rien de tellement spécifique à Java : dans la plupart des langages, tu auras les mêmes structures (et le code devra aller dans des méthodes, des procédures, des scripts, des sous-programmes, enfin des entités séparées et délimitées, quelque soit leur forme). MSAccess étant plus orienté BD, tu auras des outils interactifs qui te rendront les choses plus abordables si tu prefères (et probablement des menus pour lier automatiquement 2 combos).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #35
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut
    je n'abandonne pas, je laisse le projet de coté quelque temps. Je me suis tourné vers le Java pour son côté professionnel, on peut faire pas mal de chose.
    MS Access est pour moi pas du tout professionnel. De plus je suis en apprentissage et je me vois mal leur présenter quelque chose de "bidon".
    Je vais reprendre les bases et à partir de là, je pourrais avancer.

    Merci

  16. #36
    Membre habitué Avatar de Alex1407
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 166
    Points : 149
    Points
    149
    Par défaut Verification formulaire et requete d'insertion
    Bonjour,

    je suis en train de terminer mon application , mais j'ai quelque soucis pour l'insertion dans ma base de données. Dans le code que j'ai mis, je vérifie que mes jtextfield "tpsmachine, tpsmo, tpschgt, duree" ne sont pas vide,je fais appel a la méthode getTimeWithStringValue qui convertie leur contenue. Puis je vérifie le contenue des autres jtexfield et j’insère dans la base.je problème c'est que j'insère dans la base alors que tous les champs ne sont pas remplis.
    Je voudrais tous vérifier dans une seul boucle et sortir que quand le formulaire est bien remplis par l'utilisateurs et faire l'insertion dans la base ? je sais pas si ma démarche est correcte. j'ai essayer plusieurs chose sans succès.

    Merci de votre aide

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    btnEnregistrer.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				if (tpsmachine.getText().length() != 0 && tpsmo.getText().length() != 0
    						&& tpschgt.getText().length() != 0 && duree.getText().length() != 0) {
    					tpsmachine.setText("" + getTimeWithStringValue(tpsmachine.getText()));
    					tpsmo.setText("" + getTimeWithStringValue(tpsmo.getText()));
    					tpschgt.setText("" + getTimeWithStringValue(tpschgt.getText()));
    					duree.setText("" + getTimeWithStringValue(duree.getText()));
    				} else {
     
    					JOptionPane.showMessageDialog(null, "Veuillez remplir les champs horaire");
    					return;
    				}
     
    				PreparedStatement ps = null;
     
    				try {
    					/**
                                             * Permet de controle si tous les champs sont remplis
                                             */
    					if (jtextfieldAutoComplete.getText().trim().length() > 0 && textField_1.getText().trim().length()>0 && textField_2.getText().trim().length()>0 &&
    						  automachine.getText().trim().length() >0  &&tpschgt.getText().trim().length() >0 && 
    						 complet.getText().trim().length() >0 && quantite.getText().trim().length() >0 && nbarret.getText().trim().length() >0 &&
    						tpsmachine.getText().trim().length() >0 && tpsmo.getText().trim().length()>0 )
    					{		
    					ps = Connexion_BDD.get().prepareStatement(
    					"insert into dbo.MODTESTTABLE ([Dates],[NomEtPrenom], [Matricule], [SectionSalarie], [NomRecouvrement], [MatriculeRecouvrement], [Poste], [ComPoste], [TravailExcept], [ComTravailExcept], [TempsDejeuner], [Machine], [MCUmachine], [TempsChgt], [CodeArticle], [Quantite], [Nbarret], [TempsMachine], [TempsMO]) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
     
    					ps.setString(1, (((JTextField) dateChooser.getDateEditor().getUiComponent()).getText()));
    					ps.setString(2, (String) jtextfieldAutoComplete.getText());
    					ps.setString(3, (String) textField_1.getText());
    					ps.setString(4, (String) textField_2.getText());
    					ps.setString(5, (String) nom.getText());
    					ps.setString(6, (String) matricule.getText());
    					ps.setString(7, (String) comboBox_1.getSelectedItem());
    					ps.setString(8, (String) temps_travail.getText());
    					ps.setString(9, (String) comboBox_2.getSelectedItem());
    					ps.setString(10, (String) texte.getText());
    					ps.setString(11, (String) duree.getText());
    					ps.setString(12, (String) automachine.getText());
    					ps.setString(13, (String) mcu.getText());
    					ps.setString(14, (String) tpschgt.getText());
    					ps.setString(15, (String) complet.getText());
    					ps.setString(16, (String) quantite.getText());
    					ps.setString(17, (String) nbarret.getText());
    					ps.setString(18, (String) tpsmachine.getText());
    					ps.setString(19, (String) tpsmo.getText());
     
    					ps.executeUpdate();
    					ps.close();
     
    					UpdateTable();
     
    					}
    					else
    					{
    						JOptionPane.showMessageDialog(null,"Tous les Champs doivent etre remplis");
     
     
    						if(jtextfieldAutoComplete.getText().trim().length() > 0 && textField_1.getText().trim().length()>0 && textField_2.getText().trim().length()>0 &&
    						  automachine.getText().trim().length() >0  &&tpschgt.getText().trim().length() >0 && 
    						 complet.getText().trim().length() >0 && quantite.getText().trim().length() >0 && nbarret.getText().trim().length() >0 &&
    						tpsmachine.getText().trim().length() >0 && tpsmo.getText().trim().length()>0 ){
     
    						}else{
     
    							ps = Connexion_BDD.get().prepareStatement(
    									"insert into dbo.MODTESTTABLE ([Dates],[NomEtPrenom], [Matricule], [SectionSalarie], [NomRecouvrement], [MatriculeRecouvrement], [Poste], [ComPoste], [TravailExcept], 
                                                                [ComTravailExcept], [TempsDejeuner], [Machine], [MCUmachine], [TempsChgt], [CodeArticle], [Quantite], [Nbarret], [TempsMachine], [TempsMO]) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
                                                                ?, ?)");
     
     
    							ps.setString(1, (((JTextField) dateChooser.getDateEditor().getUiComponent()).getText()));
    							ps.setString(2, (String) jtextfieldAutoComplete.getText());
    							ps.setString(3, (String) textField_1.getText());
    							ps.setString(4, (String) textField_2.getText());
    							ps.setString(5, (String) nom.getText());
    							ps.setString(6, (String) matricule.getText());
    							ps.setString(7, (String) comboBox_1.getSelectedItem());
    							ps.setString(8, (String) temps_travail.getText());
    							ps.setString(9, (String) comboBox_2.getSelectedItem());
    							ps.setString(10, (String) texte.getText());
    							ps.setString(11, (String) duree.getText());
    							ps.setString(12, (String) automachine.getText());
    							ps.setString(13, (String) mcu.getText());
    							ps.setString(14, (String) tpschgt.getText());
    							ps.setString(15, (String) complet.getText());
    							ps.setString(16, (String) quantite.getText());
    							ps.setString(17, (String) nbarret.getText());
    							ps.setString(18, (String) tpsmachine.getText());
    							ps.setString(19, (String) tpsmo.getText());
     
    							ps.executeUpdate();
    							ps.close();
     
    							UpdateTable();
    						}
    					}
     
     
    				} catch (SQLException e) {
    					e.printStackTrace();
     
    					JOptionPane.showMessageDialog(null,
    							"Erreur lors de l'enregistrement ! Veuillez contactez l'administrateur");
    					return;
     
    				}
    				/**
                                     * PERMET LE RESET DU FORMULAIRE
                                     */
     
    				dateChooser.setDate(new Date());
    				jtextfieldAutoComplete.setText("");quantite.setText("");
    				textField_1.setText("");textField_2.setText("");
    				nom.setText("");matricule.setText("");
    				comboBox_1.setSelectedIndex(0);temps_travail.setText("");
    				comboBox_2.removeAllItems();texte.setText("");
    				duree.setText("");; automachine.setText("");
    				mcu.setText("");tpschgt.setText("");
    				complet.setText("");quantite.setText("");
    				nbarret.setText(""); tpsmachine.setText("");
    				tpsmo.setText("");
    			}
     
    		});

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2013] Requête avec dernier enregistrement d'une table en lien avec une autre
    Par Defaultuser01 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/08/2016, 23h38
  2. Remplir un champs TEXT caché avec une fonction on change sur une liste déroulante
    Par tang le breton dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 11h04
  3. [java] établir un lien avec une application java
    Par pmartin8 dans le forum Access
    Réponses: 2
    Dernier message: 19/10/2005, 14h36
  4. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  5. Réponses: 3
    Dernier message: 21/06/2005, 11h37

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