Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifer colonne ficher CSV et supprimer ligne

Modifier une clonne d'un fichier CSV et supprimer ligne d'un autre

Sujet résolu
    15 juin 2018 à 9:59:15

    Bonjour,
    (oui c'est encore moi)

    Tout d'abord, excusé moi pour toutes les fautes !!!



    Pour mon stage je dois faire un programme permettant de gérer les entrées et les sorties des intervenants qui viennent dans l'entreprise.
     Je possède donc 3 fichiers CSV :
    L'un pour les données sur les intervenants (nom, prénom, société, date de début de contrat, date de fin).

    L'un pour savoir quand l'intervenant est entré dans l'entreprise et quand il en ai sortie avec dedans les colonnes : Nom, Prénom, Société, heure entré, heure sortie.

    L'un pour savoir qui est actuellement dans l'entreprise avec comme colonne : Nom, Prénom, Société.

    Avec le premier fichier je devais pouvoir récupérer ses données et les afficher dans une liste box afin que quand on clique sur une bouton cela nous dis si il est autorisé à entrer dans l'entreprise ou non via ça date de fin de contrat, puis si il est autorisé à entrer cela ajoute une ligne dans le fichier d'entré et sortie en disant à quelle heure il est entré, ça ajoute une ligne dans le fichier CSV servant pour dire qui est dans l'entreprise puis ça envois un mail.
    Cette partie là et faite.

    Maintenant ce que je dois faire c'est que quand il va sortir de l'entreprise ça va rajouter au niveau de sa ligne qui c'est créée quand il et entré, la ligne avec la date de sortie, donc ça modifie le fichier CSV d'entré et de sortie, et en même temps ça supprime la ligne qui est apparue quand il est entré du CSV disant qu'il est l'entreprise.
    Ceci doit ce trouver dans :

    private void valide_Sortie_Click(object sender, EventArgs e)
            {
    
            }




    Voici donc mon code :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Net.Mail;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            #region list
    
    
            //création de liste pour les différente colonne
    
            List<String> Nom = new List<String>();
            List<String> Prenom = new List<String>();
            List<String> Societe = new List<String>();
            List<DateTime> DateDebut = new List<DateTime>();
            List<DateTime> DateFin = new List<DateTime>();
    
            #endregion
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                int counter = 0;
                string line;
                System.IO.StreamReader file = new System.IO.StreamReader(@"C:\Users\BEA2\Documents\Stage_M.C\ficher_personnel.csv");
                
                while ((line = file.ReadLine()) != null)
                {
                    #region initialisation colonne
    
                    //initialisation et création des colonnes
    
                    LB_CSV.Items.Add(line);
                 string[] colonnesCSV = line.Split(';');
                    int compteurCol = 0;
                    foreach (string uneColonneCSV in colonnesCSV)
                    {
                        switch (compteurCol)
                        {
                            case 0:
                                Nom.Add(uneColonneCSV);
                                break;
                            case 1:
                                Prenom.Add(uneColonneCSV);
                                break;
                            case 2:
                                Societe.Add(uneColonneCSV);
                                break;
                            case 3:
                                DateDebut.Add(DateTime.Parse(uneColonneCSV));
                                break;
                            case 4:
                                DateFin.Add(DateTime.Parse(uneColonneCSV));
                                break;
                        }
                        compteurCol++;
                    }
                    counter++;
    
                    #endregion
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                //initialisation intervenant
    
                DateTime dateJ = DateTime.Now;
                string nom = "";
                string prenom = "";
                nom = TB_Nom.Text;
                prenom = TB_prenom.Text;
                int counter = 0;
                string line;
                System.IO.StreamReader file = new System.IO.StreamReader(@"C:\Users\BEA2\Documents\Stage_M.C\ficher_personnel.csv");
                bool autorisation = false;
                while ((line = file.ReadLine()) != null)
                {
                    #region intervennant
    
                    //initialisation des colonne corespondante au nom, prenom, date
    
                    string[] colonnesCSV = line.Split(';');
                    int compteurCol = 0;
    
                    string un_Nom = "";
                    string un_Prenom = "";
                    string une_Societe = "";
                    DateTime une_Date = new DateTime();
                    foreach (string uneColonneCSV in colonnesCSV)
                    {
                        switch (compteurCol)
                        {
                            case 0:
                                un_Nom = uneColonneCSV;
                                break;
                            case 1:
                                un_Prenom = uneColonneCSV;
                                break;
                            case 2:
                                une_Societe = uneColonneCSV;
                                break;
                            case 4:
                                une_Date = DateTime.Parse(uneColonneCSV);
                                break;
                        }
                        if(nom == un_Nom && prenom == un_Prenom)
                        {
                            //si la date de fin de contrat est supérieur à la date du jour alors il est autorisé
                            if (une_Date > dateJ)
                            {
                                autorisation = true;
                            }
                        }
                        compteurCol++;
                        la_Societe.Visible = false;
                        la_Societe.Text = une_Societe;
                    }
                    counter++;
    
                    #endregion
                }
                if (autorisation == true)
                {
                    autorise.Text = "Personnel autorisé !";
    
                    #region mail
                    
                    //envoyer un mail
    
                    MailMessage email = new MailMessage();
    
                    //adresse de l'expéditeur
    
                    email.From = new System.Net.Mail.MailAddress("adresse expéditeur");
    
                    //adresse du destinataire
    
                    email.To.Add(new MailAddress("adresse destinataire"));
                    email.IsBodyHtml = true;
    
                    //objet du mail
    
                    email.Subject = "TEST";
    
                    //contenue du mail
    
                    email.Body ="L'intervenant " + TB_Nom.Text +" " + TB_prenom.Text + " est arrivé à "+ DateTime.Now;
                    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
    
                    //hébergeur de l'adresse mail de l'expediteur
    
                    smtp.Host = "smtp.laposte.net";
    
                    //adresse mail de l'expediteur et son mot de passe
    
                    smtp.Credentials = new System.Net.NetworkCredential("adresse expediteur", "mot de passe");
                    try
                    {
                        smtp.Send(email);
                        MessageBox.Show("L'email est envoyer");
                    }
                    catch (SmtpException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    
                    #endregion
    
                    System.IO.File.AppendAllText(@"C:\Users\BEA2\Documents\Stage_M.C\entre.csv", TB_Nom.Text + ";" + TB_prenom.Text + ";"+ la_Societe.Text +";" + DateTime.Now + "\r\n");
                    System.IO.File.AppendAllText(@"C:\Users\BEA2\Documents\Stage_M.C\dans_entreprise.csv", TB_Nom.Text + ";" + TB_prenom.Text + ";" + la_Societe.Text + ";" + DateTime.Now.ToString("dd/MM/yyyy") + "\r\n");
                }
                else if (autorisation == false)
                {
                    autorise.Text = "Personnel non autorisé !";
                }
    
            }
            private void valide_Sortie_Click(object sender, EventArgs e)
            {
    
            }



    voici les screens de mes fichiers CSV :

    Fichier comportant la liste des personnels :

    Fichier pour entré et sortie :

    Fichier pour ceux qui sont dans l'entreprise :

    (Je viens de voir que j'ai oublié la société dans le premier CSV...)

    Exemple : Dupon Denis entre dans l'entreprise aujourd'hui à 8h30
    Dans le fichier CSV d'entré ça marque :
    Dupon;Denis;Telecom;15/06/2018 8h30

    en même temps dans le fichier CSV qui note qui est actuellement dans l'entreprise ça marque :
    Dupond;Denix;Telecom

    Puis quand il va biper pour sortir (on va dire a 16h) dans le fichier d'entré il y aura donc une modification qui va s’effectuer et marquer :
    Dupon;Denis;Telecom;15/06/2018 8h30;15/06/2018 16h

    Et dans le fichier qui note qui est actuellement dans l'entreprise la ligne :
    Dupond;Denis;Telecom
    Va ce supprimer.

    Pour modifier et supprimer des lignes j'ai bien trouvé une réponse ici :
    https://openclassrooms.com/forum/sujet/modifier-et-supprimer-un-ligne-fichier-txt-c

    Mais je n'ai pas compris où intégrer les lignes de code :'(

    -
    Edité par Ava Naru 15 juin 2018 à 11:59:22

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2018 à 1:20:13

      L'utilisation de fichiers plats à la place d'une simple base de données relationnelle rend vos actions très très laborieuses.

      Pour ne pas être trop éloignée d'une solution simple, je vous conseille chaudement d'utiliser un DataSet avec toutes vos données correctement reliées avec des Relations à l'intérieur.

      Le DataBinding simplifiera votre code, le DataSet renforcera la cohérence des données et vous n'avez qu'à complètement remplacer les données des fichiers CSV pour une extraction des informations contenues dans le DataSet.

      Ne modifiez pas le contenu des fichiers CVS, remplacez tout le contenu par les données à jour.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        22 juillet 2018 à 12:55:42

        Bonjour,
        J'ai oublié de donner des nouvelles.
        J'ai finalement réussi à finir le programme et il est fonctionnel donc le sujet est résolu
        Merci quand même

        Cordialement

        • Partager sur Facebook
        • Partager sur Twitter

        Modifer colonne ficher CSV et supprimer ligne

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown