Contrôler l’incrémentation des numéros de séquences en C#
Salut à tous,
j'ai une table avec une colonne numsequence possédant les valeurs 00001, 00002, 00003, 00004 , 00005, etc.... Ces données sont récupérées à partir d'un fichier .txt formaté manuellement.
Il arrive des fois ou les utilisateurs omettent certaines valeurs. Par exemple : 00001, 00002, 00004, 00005 , 00006. je veux m'assurer que la valeur n+1 est bien incrémentée à 1 dans le cas contraire afficher un message d'erreur.
Mon code :
Code:
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
|
//*************************************************************************************************************************
//Controle du numero de sequence
string requete_cptsequence = "select numsequence from matable ";
OleDbDataReader lire_cptsequence = cls.ouvrirRequète(requete_cptsequence, maconnexion);
List<string> result = new List<string>();
try
{
while (lire_cptsequence.Read())
{
result.Add(lire_cptsequence.GetString(0));
string[] tabseq = result.ToArray();
int cpttab = tabseq.Length; //recuperation de la longeur du tableau pour le traitement dans les boucles for
for (int i = 1; i < cpttab ; i++) // La première boucle commence à partir de la valeur i=1 c'est à dire 00001
{
for (int y = 2; y < cpttab; y++) // La deuxième boucle commence à partir de la valeur y=2 c'est à dire 00002
{
int ti = Convert.ToInt16( tabseq[i]); // Je recupere la premiere valeur 00001 que je met dans la variable ti
int ty = Convert.ToInt16(tabseq[y]); // Je recupere la premiere valeur 00002 que je met dans la variable ty
int somme = ty - 1; //La variable somme va recevoir 00001 - 00002 = 00001. Le resultat doit etre egale à la valeur de ti pour que je passe à la ligne suivante
if ( somme != ti )
{
string[] linecptseq = { "Saut de numeros de sequence " + " " + tabseq[y] + " " };
System.IO.File.AppendAllLines(Application.StartupPath + "\\erreur_confrere.txt", linecptseq);
}
y = y + 1;
}
i = i + 1;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
} |
Le premier test se fait avec les valeurs biens ordonnées (00001,00002,00003,00004,00005) et j'obtiens le résultat suivant :
Code:
00003 ,00005 ,00003
Le deuxième test se fait avec les valeurs 00001,00002,00004,00005,00006 et j'obtiens le résultat suivant :
Code:
00004,00004,00004,00004,00006,00004
.
je sollicite votre aide.