Bonjour tous le monde,
Je suis face à un problème bizarre.
Je suis sur un projet swing avec JDBC et Oracle.
Mon problème c'est le tri.
J'ai un Jtable, quand je demande de faire le tri il ne trie pas comme il faut.
Je m'explique.
si j'ai 0,2,10,12,20 quand je fais le tri par ordre croissant il m'affiche : 0,10,12,2,20 alors que je veux 0,2,10,12,20
Ce que je fais c'est que je récupère le type de mon champ et je rajoute le type devant afin d'envoyer la requête à oracle en la préfixant avec le type.
des fois ça marche mais pour d'autres champs ça marche pas.
voici mon extrait du code:
Je sais pas vraiment ce qu'il faut 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 public String getAttribut() { String result = attribut.getNomCourt(); String dataType = attribut.getField().getDataType(); LOG.info(" La colonne : " + result + " est de type : " + dataType); if (dataType.equals(Field.DATATYPE_INTEGER) || dataType.equals(Field.DATATYPE_DECIMAL)) { return result = "TO_NUMBER(" + result + ")"; } if (dataType.equals(Field.DATATYPE_INT_DATE)) { return result = "TO_DATE(" + result + ")"; } if (!caseSensitive) { return result = "UPPER(" + result + ")"; } return result; }
Merci de me dire si vous avez deja eu ce probleme et quelle pistes avez vous explorer.
Le truc qui me vient a l'esprit est de prendre le champ peu importe son type et examiner la valeur suivant les types predeifinies.
Peut etre y'a des choses que je n'ai pas saisi en disant ça.
un exemple de la trace:
voici le champ en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 La colonne : SERV_NL_CODE est de type : TEXT
Pour info tous les champs dans la base sont de type varchar2. et il est impossible de changer le type car c'est une veille application et changer le type demande un travail colossal.
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 0004 1508 1404 1604 1604 1604 1104 2704 1114 1204 1209 0000 0000 1604 2114 2604 2214 2214 2214 0000 2524 1304 1304 2134 1204 2214 0704 1808 0704 2214
Cordialement
Partager