private void btnExec_Click(object sender, EventArgs e) { int cpt = 0; //compteur qui sert a compter le nb de lignes en temps reel pour le feedback utilisateur //-------------------------------------------------------- // Verifications des champs remplis par l'utilisateur //-------------------------------------------------------- #region Verification des champs saisis par l'utilisateur bool verifChampsSaisis = true; //Verif que le fichier source existe if (!File.Exists(txtFichierSource.Text)) { MessageBox.Show("Fichier introuvable.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); verifChampsSaisis = false; } //Verification du format de l'adresse ip du serveur string ip = txtAdrServ.Text; IPAddress adrIp; bool ok = IPAddress.TryParse(ip, out adrIp); if (!ok) { txtAdrServ.BackColor = Color.FromArgb(255, 196, 196); //couleur rouge MessageBox.Show("Adresse IP du serveur non valide !", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); verifChampsSaisis = false; } else { txtAdrServ.BackColor = Color.FromArgb(214, 255, 215); //couleur verte } //Verification du port du serveur (doit etre composé de chiffres uniquement) Regex r = new Regex("^[0-9]*$"); Match regPortServ = r.Match(txtPortServ.Text); if (!regPortServ.Success) { txtPortServ.BackColor = Color.FromArgb(255, 196, 196); //couleur rouge verifChampsSaisis = false; } else { txtPortServ.BackColor = Color.FromArgb(214, 255, 215); //couleur verte } //Verification du format de l'adresse email Regex regexem = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); // pour l'email Match regexMail = regexem.Match(txtAdrMail.Text); // verifie que le mail rentre dans les critères if (!regexMail.Success) { MessageBox.Show("Adresse mail non valide.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); txtAdrMail.BackColor = Color.FromArgb(255, 196, 196); //couleur rouge verifChampsSaisis = false; } else { txtAdrMail.BackColor = Color.FromArgb(214, 255, 215); } #endregion //-------------------------------------------------------- // Envoie des informations dans la BDD //-------------------------------------------------------- if (verifChampsSaisis) { #region Connexion BDD //Overture de la connexion a la BDD //Informations de connexion string adresse = ip; //on prend l'adresse ip qu'on vient de vérifier string name = txtNomBdd.Text; string port = txtPortServ.Text; string userId = txtIdBdd.Text; string password = txtMdpBdd.Text; // Connexion à la base de données try { //Connexion lors des tests //conn = new NpgsqlConnection("Server=localhost;port=5432;User Id=openpg;password=openpgpwd;Database=Test;"); string chaineConnex = "Server=" + ip + ";port=" + txtPortServ.Text + ";User Id=" + userId + ";password="******";Database=" + name + ";"; conn = new NpgsqlConnection(chaineConnex); conn.Open(); //conn = new NpgsqlConnection("Server=" + adresse + ";port=8069;User Id=" + userId + ";" + "Password="******";Database=" + name + ";"); dbcmd = conn.CreateCommand(); //Feedback utilisateur connexion reussie richTxtResultat.Text += "Connexion BDD réussie !\n"; #endregion #region Envoie vers la BDD //On crée une nouvelle importation qui va aller récupérer et instancier la liste des entreprises contenues dans le fichier csv import = new Importation(DateTime.Now, txtFichierSource.Text); List <Entreprise> listEntreprises = import.GetLesEntreprises(); //On set le maximum de la barre de chargement au nombre d'entreprises progressBar.Maximum = listEntreprises.Count; foreach (Entreprise ent in listEntreprises) { //On effectue les vérifications des champs avant leur insertion dans la base de données ent.verifRaisonSoc(); ent.verifAdresse(); ent.verifCP(); ent.verifVille(); ent.verifTel(); ent.verifFax(); ent.verifEmail(); //Insertion dans la base de données string t = "INSERT INTO public.res_partner(name, company_id, comment, function, create_date, color, date, street, city, display_name, zip, title, country_id, parent_id, supplier, ref, email, is_company, website, customer, fax, street2, employee, credit_limit, write_date, active, tz, write_uid, lang, create_uid, phone, mobile, type, use_parent_address, user_id, birthdate, vat, state_id, commercial_partner_id, notify_email, message_last_post, opt_out, signup_type, signup_expiration, signup_token, debit_limit) VALUES('" + ent.GetRaison() + "', 1, null, null, '" + DateTime.Now.ToString() + "', 0, null, '" + ent.GetAdresse() + "', '" + ent.GetVille() + "', '" + ent.GetRaison() + "', '" + ent.GetCP() + "', null, null, null, false, '" + ent.GetCode() + "', '" + ent.GetEmail() + "', true, null, true, '" + ent.GetFax() + "', null, false, null, '" + DateTime.Now.ToString() + "', true, null, 1, 'fr_FR', 1, '" + ent.GetTel() + "', null, false, false, null, null, '" + ent.GetReglement() + "', null, null, 'always', null, false, null, null, null, 0.0);"; //richTxtResultat.Text = t; //Debug dbcmd.CommandText = t; dbcmd.ExecuteNonQuery(); progressBar.PerformStep(); progressBar.Refresh(); //richTxtProgression.Text += "Ligne numero "+cpt+" insérée !\n"; //Feedback utilisateur avec le compteur de lignes cpt++; } //Feedback utilisateur richTxtResultat.Text += "Insertions dans la base réussie !\n"; #endregion } catch (NpgsqlException) { MessageBox.Show("Problème d'insertion avec la base de données", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); //MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message); } try { #region Generation du document contenant les erreurs StreamWriter writer = new StreamWriter("Erreurs.txt"); //Chemin ou on enregistre le fichier txt //Ecriture du document texte contenant les erreurs writer.WriteLine("Bonjour\n\tVoici les erreurs rencontrées lors de l'importation vers la base de données :\n"); foreach (Erreur err in import.GetLesErreurs()) { writer.WriteLine(err.ToString()); } writer.Close(); //Feedback utilisateur richTxtResultat.Text += "Document généré !\n"; #endregion #region Envoie du mail contenant le rapport d'erreur //Envoi du mail Attachment pj = new Attachment("Erreurs.txt"); //chemin d'acces ou a été enregistré le fichier txt (voir StreamWriter ci-dessus : variable writer) import.EnvoieMail(txtAdrMail.Text, pj); //Appel de la methode permettant l'envoie du mail : on renseigne l'adresse mail de destination en paramètre (qui correspond au champ txtAdrMail) //Feedback utilisateur richTxtResultat.Text += "Rapport d'erreur envoyé par mail !\n"; #endregion //Feedback richTxtResultat.Text += "\nNombre de lignes insérées : " + cpt + "\nNombre d'erreurs rencontrées : " + import.GetLesErreurs().Count; } catch (Exception er) { MessageBox.Show("Erreur : " + er.Message); } } //End if(verifChampsSaisis) } //End btnExecClick