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
|
private void BTSOURCEBIAO_Click(object sender, EventArgs e)
{
FILEDIALOGBIAO.InitialDirectory = Environment.CurrentDirectory;
//FILEDIALOG1.Filter = "FICHIER CSV(*.csv)|*.csv|All Files (*.*)|*.txt";//defini le type de fichier autorisé dans la boîte de dialogue
FILEDIALOGBIAO.Filter = "FICHIER TXT(*.rec)|*.rec|All Files (*.*)|*.csv";
FILEDIALOGBIAO.FilterIndex = 1;
DialogResult rs = FILEDIALOGBIAO.ShowDialog();
if (rs == DialogResult.OK)
{
//Le textbox reçoit le chemin du fichier csv.
TXTSOURCEBIAO.Text = FILEDIALOGBIAO.FileName;
}
//On vide le fichier erreur après avoir cliqué sur le bouton
using (FileStream fstream = new FileStream(Application.StartupPath + "\\erreur_prelevement.txt", FileMode.Truncate))
{
}
}
private void button1BIAO_Click(object sender, EventArgs e)
{
// Connection à la base et insertion des enregistrements.
OleDbConnection maconnexion = cls.ouvrirConnection(ClassGle.chaine);
//Au clic on vide la la table virement
string requete_delete = "delete from prelevement";
OleDbDataReader lire_delete = cls.ouvrirRequète(requete_delete, maconnexion);
// Suppression de id dans ma Table prelevement
string requete_drop = "ALTER TABLE prelevement DROP COLUMN id";
//Ajout de id de type COUNTER dans ma Table virement
string requete_add = "ALTER TABLE prelevement ADD id COUNTER";
//Départ de id de type COUNTER à base avec un pas de step
string requete_finale = "ALTER TABLE prelevement ALTER COLUMN id COUNTER(1,1)";
OleDbDataReader lire_requete_drop = cls.ouvrirRequète(requete_drop, maconnexion);
OleDbDataReader lire_requete_add = cls.ouvrirRequète(requete_add, maconnexion);
OleDbDataReader lire_requete_finale = cls.ouvrirRequète(requete_finale, maconnexion);
//On recupere la date du jour afin de renommer le fichier erreurs du jour
DateTime datej = DateTime.Today;
string date2 = Convert.ToString(datej).Replace("/", "");
string datejour = date2.Substring(0, 8);
string fichier_erreur = "erreur_prelevement" + datejour + ".txt";
if (TXTSOURCEBIAO.Text == "")
{
MessageBox.Show("Veuillez selectionner le fichier à controler");
TXTSOURCEBIAO.Focus();
}
else
{
//On vide le fichier erreur après avoir cliqué sur le bouton
using (FileStream fstream = new FileStream(Application.StartupPath + "\\erreur_prelevement.txt", FileMode.Truncate))
{
}
//On vide le fichier erreur après avoir cliqué sur le bouton
using (FileStream fstream = new FileStream(Application.StartupPath + "\\erreur_prelevement.txt", FileMode.Truncate))
{
}
utf8 = new UTF8Encoding(false);
string fileName = FILEDIALOGBIAO.FileName;
string[] lignes = File.ReadAllLines(fileName);
int lignesfichier = lignes.Length;
FileStream fs;
BinaryReader br;
// Controle des caractères invisibles à windows
//Lecture du fichier à partir de la position 0
fs = File.Open(fileName, FileMode.Open);
fs.Seek(0, SeekOrigin.Begin);
//Lecture binaire des caractères du fichier
br = new BinaryReader(fs);
// while (fs.Position < fs.Length)
for (int ii = 1; ii < lignesfichier; ii++)
{
string codeascii = Convert.ToString(br.ReadByte());
string requete_codeascii = "select Code as cptcode from codeascii where Code = '" + codeascii + "' ";
OleDbDataReader lire_requete_codeascii = cls.ouvrirRequète(requete_codeascii, maconnexion);
while (lire_requete_codeascii.Read())
{
int code_ascii = Convert.ToInt16(lire_requete_codeascii["cptcode"]);
if (code_ascii == 0)
{
string[] lines_caractere = { "Caractères invisibles present dans le fichier. " };
//remplir le fichier erreur.txt avec retour à la ligne
System.IO.File.WriteAllLines(Application.StartupPath + "\\erreur_prelevement.txt", lines_caractere);
}
}
}
string line0 = lignes[0];
try
{
//Controle de la première ligne. On vérifie si toutes les valeurs sont renseignées
if (line0.Length == 69 || line0.Length == 128 || line0.Length == 116)
{
try
{
string zero = "00000000000000000000000000000000000000000000000000000000000";
//On recupere les 69 premiers caractères de la premiere afin d'eviter les problemes sur la longueur de la ligne
string carc = line0.Substring(0, 69).Replace("\"", "");
string line1 = carc + zero;
string codeoper1 = line1.Substring(0, 2).Replace("\"", "");
string typeenreg1 = line1.Substring(2, 1).Replace("\"", "");
string sequence1 = line1.Substring(3, 5).Replace("\"", "");
string dateremise1 = line1.Substring(8, 6).Replace("\"", "");
string codebanq1 = line1.Substring(14, 3).Replace("\"", "");
string codeguichet1 = line1.Substring(17, 5).Replace("\"", "");
string compte1 = line1.Substring(22, 11).Replace("\"", "");
string nom1 = line1.Substring(33, 24).Replace("\"", "");
string libanq1 = line1.Substring(57, 17).Replace("\"", "");
string liboper1 = line1.Substring(74, 30).Replace("\"", "");
string montant1 = line1.Substring(104, 12).Replace("\"", "");
string requete_biao = "insert into prelevement (codeoper,typeenreg,numsequence,dateremise,codebanq,codeguichet,compte,nom,libbanq,liboper,montant) values('" + codeoper1 + "','" + typeenreg1 + "','" + sequence1 + "','" + dateremise1 + "','" + codebanq1 + "','" + codeguichet1 + "','" + compte1 + "','" + nom1.Replace("'", "") + "','" + libanq1 + "','" + liboper1 + "','" + montant1 + "');";
OleDbDataReader lire_biao = cls.ouvrirRequète(requete_biao, maconnexion);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
for (int i = 1; i < lignesfichier; i++)
{
try
{
if (lignes[i].Length == 116 || lignes[i].Length == 128)
{
string codeoper = lignes[i].Substring(0, 2).Replace("\"", "");
string typeenreg = lignes[i].Substring(2, 1).Replace("\"", "");
string sequence = lignes[i].Substring(3, 5).Replace("\"", "");
string dateremise = lignes[i].Substring(8, 6).Replace("\"", "");
string codebanq = lignes[i].Substring(14, 3).Replace("\"", "");
string codeguichet = lignes[i].Substring(17, 5).Replace("\"", "");
string compte = lignes[i].Substring(22, 11).Replace("\"", "");
string nom = lignes[i].Substring(33, 24).Replace("\"", "");
string libanq = lignes[i].Substring(57, 17).Replace("\"", "");
string liboper = lignes[i].Substring(74, 30).Replace("\"", "");
string montant = lignes[i].Substring(104, 12).Replace("\"", "");
string requete = "insert into prelevement (codeoper,typeenreg,numsequence,dateremise,codebanq,codeguichet,compte,nom,libbanq,liboper,montant) values('" + codeoper + "','" + typeenreg + "','" + sequence + "','" + dateremise + "','" + codebanq + "','" + codeguichet + "','" + compte + "','" + nom.Replace("'", "") + "','" + libanq + "','" + liboper + "','" + montant + "');";
OleDbDataReader lire = cls.ouvrirRequète(requete, maconnexion);
}
else if (lignes[i].Length < 69)
{
string[] ligne_espace = { "Presente d'espace vide en fin de fichier" };
//remplir le fichier erreur.txt avec retour à la ligne
System.IO.File.WriteAllLines(Application.StartupPath + "\\erreur_prelevement.txt", ligne_espace);
}
else
{
string ligne_erreur = lignes[i].Substring(3, 5);
string[] lines_0 = { "Certaines lignes ne comportent pas 123 caractères notamment celle du numéros de sequence suivant : " + " " + ligne_erreur };
//remplir le fichier erreur.txt avec retour à la ligne
System.IO.File.WriteAllLines(Application.StartupPath + "\\erreur_prelevement.txt", lines_0);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
} |
Partager