Me voilà de retour...pour vous jouez un mauvais tour
Avant de poursuivre, je suis en train de pondre un Gantt ...
Je reviendrais dès que j'ai fini ce petit truc
Me voilà de retour...pour vous jouez un mauvais tour
Avant de poursuivre, je suis en train de pondre un Gantt ...
Je reviendrais dès que j'ai fini ce petit truc
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Oui et expliquer au supérieur les raisons de tout ce temps pris à corriger ce projet...
Bon, j'ai un doute sur une correction :
Je pense que la variable resultats à elle seul ne peut pas faire ressortir du texte. Il faudrait donc un resultats.getString() ? Et il me pré-remplit avec nomZone, c'est normal ?
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 /* Récupération de l'installation pour le chargement du template */ String nomInstallation = ""; try { Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet("SELECT NomInstallation FROM Installation;"); Utilitaire.remplirComboBox(jComboBoxInstallation, resultats.getString(nomZone)); resultats.close(); resultats = connexion.getResultSet("SELECT NomInstallation FROM Installation WHERE IdInstallation = "+t.getIdInstallation()+";"); while(resultats.next()) { nomInstallation = resultats.getString("NomInstallation"); } resultats.close(); connexion.closeConn(); jComboBoxInstallation.setSelectedItem(Utilitaire.recupererSelectedItem(jComboBoxInstallation, nomInstallation)); } catch(Exception e) { System.out.println("Fenetre : Récupérer le nom de l'installation pour le chargement "+e.getMessage()); e.printStackTrace(); }
non car resultats.getString(nomZone) ne peut renvoyer qu'une seule donnée (en plus il faudrait que nomZone soit un String qui contienne le nom du champ, bref on ne s'en sort pas ...)
Pour aller vite, poste le code de Utilitaire.remplirComboBox
je subodore encore un bricolage du chef !
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
c'est NB qui le pré-rempli ? alors c'est qu'il a trouvé une variable String un peu plus haut qui porte ce nom.Et il me pré-remplit avec nomZone, c'est normal ?
Ne te laisse pas faire. Dans le choix de variable de Nb, c'est souvent approximatif.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
J'applique ce que j'ai appris : Alt+F7 sur la methode !
Résultat :
C'est moi ou c'est utilisé partout sans être déclaré null part ?
Ah moins que ce soit déclaré par NB directement quelque part ?
C'est probablement une méthode statique.
Poste le code de cette méthode
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Attention les yeux !
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268 package coactivite2; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.sql.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import java.util.Date; public class Utilitaire { /* Méthode permettant de centrer les valeurs des jTable */ public static void centrerTable(JTable table) { DefaultTableCellRenderer custom = new DefaultTableCellRenderer(); custom.setHorizontalAlignment(JLabel.CENTER); for (int i=0 ; i<table.getColumnCount() ; i++) table.getColumnModel().getColumn(i).setCellRenderer(custom); } /* Méthode permettant de formater une date en MM/dd/aaaa pour les requêtes */ public static String formaterDateRequete(Date date) { String format = "MM/dd/yyyy"; java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat(format); return formater.format(date); } /*public static String formaterDateRequeteMail(String date) { System.out.println(date); java.util.Date d = new Date(date); String format = "MM/dd/yyyy"; DateFormat formater = new SimpleDateFormat("format"); System.out.println(formater.format(date)); return formater.format(date); }*/ public static Date stringToDate(String sDate) throws Exception { String sFormat = "dd/MM/yyyy"; SimpleDateFormat sdf = new SimpleDateFormat(sFormat); System.out.println(sdf.parse(sDate)); return sdf.parse(sDate); } /* Méthode permettant de formater une date en dd/MM/aaaa pour l'affichage */ public static String formaterDate(Date date) { String format = "dd/MM/yyyy"; java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat(format); return formater.format(date); } /* Méthode permettant de formater l'heure pour l'affichage */ public static String formaterHeure() { Calendar ca = Calendar.getInstance(); Date heure = ca.getTime(); String format = "HH:mm"; java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat(format); return formater.format(heure); } /* Methode permettant de réinitialiser un tableau à 0 lignes */ public static void reinitialiserTableau(DefaultTableModel model) { int count = model.getRowCount(); if (count <= 0) { return; } for (int i = 0; i < count; ++i) { model.removeRow(0); } } /* Methode permettant de vider un tableau de son contenu */ public static void viderTableau(DefaultTableModel model) { int countRow = model.getRowCount(); int countCol = model.getColumnCount(); if (countRow <= 0) { return; } if (countCol <= 0) { return; } for (int i = 0; i < countRow; ++i) { for (int j = 0; j < countCol; ++j) { model.setValueAt(null, i, j); } } } /* Méthode permettant de remplir un jComboBox à partir du résultat d'une requête */ public static void remplirComboBox(JComboBox j, String query) { try { Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet(query); j.removeAllItems(); while (resultats.next()) { j.addItem(resultats.getString(1)); } resultats.close(); connexion.closeConn(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,e.getMessage()); e.printStackTrace(); } } /* Méthode permettant de remplir un jTextField à partir du résultat d'un requête */ public static void remplirTextField(JTextField tf, String query) { try { Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet(query); while (resultats.next()) { tf.setText(resultats.getString(1)); } resultats.close(); connexion.closeConn(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,e.getMessage()); } } /* Méthode permettant de remplir un jComboBox à partir du résultat d'une requête */ public static void remplirComboBoxCC(JComboBox j, String query) { try { j.removeAllItems(); Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet(query); while (resultats.next()) { j.addItem(resultats.getString(1)+", "+resultats.getString(2)); } resultats.close(); connexion.closeConn(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,e.getMessage()); e.printStackTrace(); } } /* Méthode permettant de vérfier si une date saisie existe */ public static boolean estValide(int annee, int mois, int jour) { Calendar c = Calendar.getInstance(); c.setLenient(false); c.set(annee,mois,jour); try { c.getTime(); } catch(IllegalArgumentException iAE) { return false; } return true; } public static Object recupererSelectedItem(JComboBox jc, String compare) { jc.setSelectedIndex(0); for(int i = jc.getSelectedIndex(); i < jc.getItemCount() ; i++) { if (jc.getSelectedItem().toString().equals(compare)) { i = jc.getItemCount()+1; return jc.getSelectedItem(); } else { jc.setSelectedIndex(i); } } return "erreur"; } public static boolean copier(File source, File dest){ try { // Declaration et ouverture des flux java.io.FileInputStream sourceFile = new java.io.FileInputStream(source); try { java.io.FileOutputStream destinationFile = null; try { destinationFile = new FileOutputStream(dest); // Lecture par segment de 0.5Mo byte buffer[] = new byte[512 * 1024]; int nbLecture; while ((nbLecture = sourceFile.read(buffer)) != -1) { destinationFile.write(buffer, 0, nbLecture); } } finally { destinationFile.close(); } } finally { sourceFile.close(); } } catch (IOException e) { e.printStackTrace(); return false; // Erreur } return true; // Résultat OK } public static boolean deplacer(File source, File destination) { if( !destination.exists() ) { // On essaye avec renameTo boolean result = source.renameTo(destination); if( !result ) { // On essaye de copier result = true; result &= copier(source,destination); if(result) result &= source.delete(); } return(result); } else { // Si le fichier destination existe, on annule ... return(false); } } }
Pour accéder directement au code de la méthode,
tu fais Ctrl + clic sur Utilitaire.remplirComboBox
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Ah oui effectivement, c'est bcp plus pertinent ! Merci
Résultat:
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 /* Méthode permettant de remplir un jComboBox à partir du résultat d'une requête */ public static void remplirComboBox(JComboBox j, String query) { try { Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet(query); j.removeAllItems(); while (resultats.next()) { j.addItem(resultats.getString(1)); } resultats.close(); connexion.closeConn(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,e.getMessage()); e.printStackTrace(); } }
Faudrait que je procède comme le post #215 ?
Pas tout à fait : remplirComboBox a l'air bien comme cela car il suffit de lui passer la requête SQL pour que le JComboBox se remplisse
donc c'est plutôt bien.
Pour le remplir, du coup, il suffit de faire :
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 /* Récupération de l'installation pour le chargement du template */ String nomInstallation = ""; try { /* avant : Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet("SELECT NomInstallation FROM Installation;"); Utilitaire.remplirComboBox(jComboBoxInstallation, resultats.getString(nomZone)); resultats.close(); resultats = connexion.getResultSet("SELECT NomInstallation FROM Installation WHERE IdInstallation = "+t.getIdInstallation()+";"); */ // maintenant : Utilitaire.remplirComboBox(jComboBoxInstallation, "SELECT NomInstallation FROM Installation;"); // ici pas d'ouverture de Connexion c'est remplirComboBox qui s'en charge Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet("SELECT NomInstallation FROM Installation WHERE IdInstallation = "+t.getIdInstallation()+";"); while(resultats.next()) { nomInstallation = resultats.getString("NomInstallation"); } resultats.close(); connexion.closeConn(); jComboBoxInstallation.setSelectedItem(Utilitaire.recupererSelectedItem(jComboBoxInstallation, nomInstallation)); } catch(Exception e) { System.out.println("Fenetre : Récupérer le nom de l'installation pour le chargement "+e.getMessage()); e.printStackTrace(); }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
D'accord, je poursuis merci
Bon, l'application ne contient plus d'erreur mais contient des bugs... on verra ca demain
Par ailleurs, je m’interrogeais sur ceci,
Quel est le rôle de throws SQLException ici alors qu'on a un catch en bas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void supprimerTemplate(String nomTemp) throws SQLException { try{ Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet("DELETE FROM Template WHERE NomTemplate = '"+nomTemp+"';"); resultats.close(); connexion.closeConn(); } catch (Exception e) { e.printStackTrace(); } }
C'est en double.
Retire plutôt le throw exception
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Ok, j'ai fais le ménage dans toute l'application.
J'ai ceci :
Je suppute que la procedure est identique à remplirComboBox. J'ai donc appliqué ce qu'on m'a appris => CTRL + clique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void jComboBoxSocieteRecupererActiviteSociete(java.awt.event.FocusEvent evt) { Societe societeP = new Societe(); societeP.setNom((String) jComboBoxSociete.getSelectedItem()); try{ Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet("SELECT ActiviteSociete FROM Societe WHERE NomSociete ='"+societeP.getNom()+"';"); Utilitaire.remplirTextField(jTextFieldActivite, resultats); connexion.closeConn(); }catch (Exception e){ e.printStackTrace(); }
J'ai donc modifié la méthode jComboBoxSocieteRecupererActiviteSociete ainsi :
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 /* Méthode permettant de remplir un jTextField à partir du résultat d'un requête */ public static void remplirTextField(JTextField tf, String query) { try { Connexion connexion = new Connexion(); ResultSet resultats = connexion.getResultSet(query); while (resultats.next()) { tf.setText(resultats.getString(1)); } resultats.close(); connexion.closeConn(); } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage()); e.printStackTrace(); } }
Ca vous semble correct chef ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void jComboBoxSocieteRecupererActiviteSociete(java.awt.event.FocusEvent evt) { Societe societeP = new Societe(); societeP.setNom((String) jComboBoxSociete.getSelectedItem()); try{ Utilitaire.remplirTextField(jTextFieldActivite, "SELECT ActiviteSociete FROM Societe WHERE NomSociete ='"+societeP.getNom()+"';"); }catch (Exception e){ e.printStackTrace(); }
C'est correct (sous réserve de test contre le bug que l'on n'aurait pas vu)
et c'est bien l'idée de ces méthodes "utilitaires"
Par contre, je suis assez perplexe sur l'intérêt du code remplirTextField .
La requête "SELECT ActiviteSociete FROM Societe WHERE NomSociete ='Westfalia Separator GMBH';"
va renvoyer toutes les activités de cette société ("filtres industriels", "machines laitières", "centrifugeuses")
mais le code remplirTextField fait :de sorte que, en parcourant les enregistrements, le texte du JTextField est systématiquement écrasé et remplacé par le suivant ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ResultSet resultats = connexion.getResultSet(query); while (resultats.next()) { tf.setText(resultats.getString(1)); }
Dans le cas de Westfalia Separator, seule l'activité centrifugeuses va rester...
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Et pour mes INSERT ceci est bon ?
Même si je ne récupère rien, ça devrait quand même exécuter la requête non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 try { Connexion connexion = new Connexion(); connexion.getResultSet("INSERT INTO Realiser (IdCC, IdAnnexe, TypeCC) VALUES ("+idCC+", "+annexe.getIdAnnexe()+", 'Sous-Traitant');"); connexion.closeConn(); } catch(Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public ResultSet getResultSet(String sql) { try { Statement requete = getConnexion().createStatement(); ResultSet rs = requete.executeQuery(sql); return rs; } catch (Exception ex) { ex.printStackTrace(); return null; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager