Bonjour,
J'ai créé un formulaire de configuration permettant l'extraction de données d'un fichier plat.
En gros, mes fichiers plats contiennent plusieurs champs, et l'idée, étant donné que l'emplacement des champs n'est pas le même d'un fichier plat à un autre, c'est de créer un configurateur me permettant de définir l'emplacement de chaque champ.
Mes lignes de fichiers plats se comportent alors comme un tableau dans lequel je vais définir un indice pour chaque champ.
L'idée au final est donc d'effectuer un contrôle sur les indices définis pour ne pas se retrouver avec un champ sur le même indice.
J'ai donc une variable pour chacun des 10 champs présents. Si le champ 1 est à la position 2, alors aucun autre champ ne pourra occuper cette position. Et au moment de ce test de cohérence, j'ai un peu de mal à trouver mon chemin.
Je suis tout d'abord passé par 2 tableaux, en mettant dans le premier les valeurs entrées par l'utilisateur. J'utilise donc le deuxième tableau pour recopier les valeurs du premier, en vérifiant que la donnée n'est pas présente.
Voilà un bout de code, j'ai l'impression que je me complique un peu la vie alors si vous avez des suggestions, n'hésitez pas:
Je ne sais pas si mon code est bien clair, enfin je l'espère. Pour le moment aucune erreur n'est remontée, même lorsque deux champs sont à la même position. Je pense que j'ai du faire quelque chose de pas bien correct mais je n'arrive pas à trouver où.
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 // Déclaration de la liste des champs actifs pour générer le message d'erreur String[] champsArticles = new String[7]; // Création des deux tables de travail int[] enregistrements1 = new int[7]; int[] enregistrements2 = new int[7]; int a = 0; //Si le champ est présent (checkbox) alors on ajoute sa définition dans la table des enregistrements, et dans la table des messages if (caElem.getPresenceCodeArticle()) { enregistrements1[a] = Integer.parseInt(caElem.getPCodeArticle()); champsArticles[a] = "code article"; a++; } if (caElem.getPresenceLibelleArticle()) { enregistrements1[a] = Integer.parseInt(caElem.getPLibelleArticle()); champsArticles[a] = "libellé article"; a++; } if (caElem.getPresenceContenant()) { enregistrements1[a] = Integer.parseInt(caElem.getPContenant()); champsArticles[a] = "contenant"; a++; } if (caElem.getPresenceContenance()) { enregistrements1[a] = Integer.parseInt(caElem.getPContenance()); champsArticles[a] = "contenance"; a++; } if (caElem.getPresenceConditionnement()) { enregistrements1[a] = Integer .parseInt(caElem.getPConditionnement()); champsArticles[a] = "conditionnement"; a++; } if (caElem.getPresenceTypeConditionnement()) { enregistrements1[a] = Integer.parseInt(caElem .getPTypeConditionnement()); champsArticles[a] = "type de conditionnement"; a++; } if (caElem.getPresenceDegre()) { enregistrements1[a] = Integer.parseInt(caElem.getPDegre()); champsArticles[a] = "degre"; } boolean error = false; for (int i = 0; i < enregistrements1.length; ++i) { for (int j = 0; j > enregistrements2.length; ++j) { if (enregistrements1[i] == enregistrements2[j]) { error("Les champs " + champsArticles[i] + " et " + champsArticles[j] + " ont la même position !"); error = true; } } if (error == false) enregistrements2[i] = enregistrements1[i]; } return error;
Merci par avance pour votre aide,
Thibault
Partager