none
utiliser les caractères "\" et "/" dans une chaine RRS feed

  • Question

  • bonjour,

    j'utilise la fonction suivante pour générer la reference du courrier 

    public static string RetourneRefCourrier(int type)
            {
                    string FilName = string.Empty;
                    string MoisCourant = string.Empty; 
                if (DateTime.Now.Month < 10)
                {
                    MoisCourant = "0" + DateTime.Now.Month.ToString();
                }
                else
                {
                    MoisCourant = DateTime.Now.Month.ToString();
                }
                if (type == 1) //--------------lettre RPO
                {
    
                    try
                    {
                        
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 0));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                            }
                        }
    
                        return FilName ;
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
                else if (type == 2) //-----------------RPT
                {
                    try
                    {
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 1));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                            }
                        }
                        return FilName; 
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
    
                return FilName;
            }


    Ceci se passe sans souci et la valeur est bien renvoyer

    exmple : "002/042012/PHE/FMP-EER"

    je voudrais utiliser cette reference pour creer un fichier 

    avec les fonction suivante

            public static Boolean EcrireDansUnfichier(DataTable dt, string filePath)
            {
    
                int i = 0;
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(filePath, false);
                    for (i = 0; i <= dt.Columns.Count - 1; i++)
                    {
                        sw.Write(dt.Columns[i].ColumnName + ";");
                    }
                    sw.WriteLine();
                    foreach (DataRow Rows in dt.Rows)
                    {
                        Object[] array = Rows.ItemArray;
                        for (i = 0; i < array.Length; i++)
                        {
                            sw.Write(array[i].ToString() + ";");
                        }
                        sw.WriteLine();
                    }
                    sw.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une opération incorrecte: \n" + ex.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }
            }


            private void CmdExportInterpol_Click(object sender, EventArgs e)
            {
                bool Maj = false;
                using (TransactionScope MaTransaction = new TransactionScope())
                {
                    string FilName = string.Empty;
                    try 
                    {
                        //ouvrir l emplacement
                        DataSet Export = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param ("EditionCourrier",new SqlParameter ("@typeEdition",6));
                        
                        //1- recupere le chemin d'execution
                        string Path = Application.StartupPath.ToString();
                        //2-Verifier que le dossier existe
                        Path = @Path + "\\Extraction Interpol";
                        if (! (System.IO.Directory.Exists(Path)))
                        {
                                 System.IO.Directory.CreateDirectory(Path);
                  
                        }
                        //ecrire le fichier
                        FilName = UtilsProcFunc.RetourneRefCourrier(1);
                        if (FilName == string.Empty)
                        {
                            MessageBox.Show("L'ecriture du fichier a echoué!\n Contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        else
                        {
                            string ReferenceExport = System.IO.Path.Combine(Path, FilName);
    
                            //String Chemin = "C:/";
                            //String Fichier = "fichier.txt";
                            //String CheminComplet = System.IO.Path.Combine(Chemin, Fichier);
    
                            ////EXPORT FORMAT TXT
                            //ReferenceExport = ReferenceExport + ".csv";
                            Boolean Success = UtilsProcFunc.EcrireDansUnfichier(Export.Tables[0], ReferenceExport);
                            if (Success)
                            {
                                for (int l = 0; l <= DTGfichierInterpol.Rows.Count - 1; l++)
                                {
                                    string DosID = DTGfichierInterpol.Rows[l].Cells[6].Value.ToString();
                                    //MAJ
                                    // recupere la valeur de l ID SendFile
                                    var idParam_SfID = new SqlParameter
                                    {
                                        ParameterName = "@SfiId",
                                        SqlDbType = SqlDbType.UniqueIdentifier,
                                        Direction = ParameterDirection.Output
                                    };
                                    Maj = ExecuteRequete.ExecuteStoredProcedure("MAJStatutDossier_EnregistrementSendFile_InterpolDPF", new SqlParameter("@StaId", 18),
                                                    new SqlParameter("@DosID", DosID), new SqlParameter("@staBL", null), new SqlParameter("@staCRprod", null),
                                                    idParam_SfID, new SqlParameter("@SfiRefDoc", FilName));
                                }
                                // recupere la valeur de l ID FichierEnvoyer
                                var idParam_FilID = new SqlParameter
                                {
                                    ParameterName = "@filID",
                                    SqlDbType = SqlDbType.UniqueIdentifier,
                                    Direction = ParameterDirection.Output
                                };
                                Maj = ExecuteRequete.ExecuteStoredProcedure("EnregistreFile", idParam_FilID, new SqlParameter("@fillNameSend", FilName),
                                                new SqlParameter("@filDateSend", DateTime.Today.Date),
                                                new SqlParameter("@filNameReturn", null), new SqlParameter("@filDateReturn", null),
                                                new SqlParameter("@filSceDest", "INTERPOL"), new SqlParameter("@filDateRelance", null), new SqlParameter("@filRefRelance", null));
    
                                //Impression du fichier du courrier
                                DataSet Impression = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param("ImpressionRPO", new SqlParameter("@ReferenceLettre", FilName));
                                CR_FichRPO NewFicheRPO = new CR_FichRPO();
                                NewFicheRPO.SetDataSource(Impression.Tables[0]);
                                CRV_FichRPO.ReportSource = NewFicheRPO;
                                CRV_FichRPO.PrintReport();
    
                                //CR_Lettre_RPO NewLettreRPO = new CR_Lettre_RPO();
                                //NewLettreRPO.SetDataSource(Impression.Tables[0]);
                            }
                            else
                            {
                                MessageBox.Show("L'ecriture du fichier a echoue\n contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                return;
                            }
                            MaTransaction.Complete();
                        }
                    }
                    catch (Exception MonEx)
                    {
                        MessageBox.Show(MonEx.Message.ToString()); 
                    }
                }
                if (Maj)
                {
                    MessageBox.Show("Extraction Realise avec success", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    UtilsProcFunc.Edition(this, 3);
                    return;
                }
                else
                {
                    MessageBox.Show("Echec de l'extraction ", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
    
    
           
            }

    Pour le test : Voila le chemin du fichier :

    "C:\Users\Marcelle Ngounou\Documents\Visual Studio 2010\Projects\Solution Reclamation CSR\Prj_RECLACSR\bin\Debug\Extraction Interpol\001/0912/JCF/SMC-MARCY"

    On voit bien que le nom du fichier est bien 001/0912/JCF/SMC-MARCY

    Le message d'erreur est le suivant:

    + ex {"Could not find a part of the path 'C:\\Users\\Marcelle Ngounou\\Documents\\Visual Studio 2010\\Projects\\Solution Reclamation CSR\\Prj_RECLACSR\\bin\\Debug\\Extraction Interpol\\001\\0912\\JCF\\SMC-MARCY'."} System.Exception {System.IO.DirectoryNotFoundException}

    Ce qui est normal car il décompose la suite : "001/0912/JCF/SMC-MARCY"  qui est en faite le nom du fichier a créer.

    comment créer ce fichier en utlisant les caractères "/" sans que ceci ne soit converti...

    Cordialement


    Marcelle NGOUNOU

    lundi 17 septembre 2012 04:30

Réponses

  • bonjour,

    j'utilise la fonction suivante pour générer la reference du courrier 

    public static string RetourneRefCourrier(int type)
            {
                    string FilName = string.Empty;
                    string MoisCourant = string.Empty; 
                if (DateTime.Now.Month < 10)
                {
                    MoisCourant = "0" + DateTime.Now.Month.ToString();
                }
                else
                {
                    MoisCourant = DateTime.Now.Month.ToString();
                }
                if (type == 1) //--------------lettre RPO
                {
    
                    try
                    {
                        
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 0));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                            }
                        }
    
                        return FilName ;
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
                else if (type == 2) //-----------------RPT
                {
                    try
                    {
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 1));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                            }
                        }
                        return FilName; 
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
    
                return FilName;
            }


    Ceci se passe sans souci et la valeur est bien renvoyer

    exmple : "002/042012/PHE/FMP-EER"

    je voudrais utiliser cette reference pour creer un fichier 

    avec les fonction suivante

            public static Boolean EcrireDansUnfichier(DataTable dt, string filePath)
            {
    
                int i = 0;
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(filePath, false);
                    for (i = 0; i <= dt.Columns.Count - 1; i++)
                    {
                        sw.Write(dt.Columns[i].ColumnName + ";");
                    }
                    sw.WriteLine();
                    foreach (DataRow Rows in dt.Rows)
                    {
                        Object[] array = Rows.ItemArray;
                        for (i = 0; i < array.Length; i++)
                        {
                            sw.Write(array[i].ToString() + ";");
                        }
                        sw.WriteLine();
                    }
                    sw.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une opération incorrecte: \n" + ex.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }
            }


            private void CmdExportInterpol_Click(object sender, EventArgs e)
            {
                bool Maj = false;
                using (TransactionScope MaTransaction = new TransactionScope())
                {
                    string FilName = string.Empty;
                    try 
                    {
                        //ouvrir l emplacement
                        DataSet Export = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param ("EditionCourrier",new SqlParameter ("@typeEdition",6));
                        
                        //1- recupere le chemin d'execution
                        string Path = Application.StartupPath.ToString();
                        //2-Verifier que le dossier existe
                        Path = @Path + "\\Extraction Interpol";
                        if (! (System.IO.Directory.Exists(Path)))
                        {
                                 System.IO.Directory.CreateDirectory(Path);
                  
                        }
                        //ecrire le fichier
                        FilName = UtilsProcFunc.RetourneRefCourrier(1);
                        if (FilName == string.Empty)
                        {
                            MessageBox.Show("L'ecriture du fichier a echoué!\n Contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        else
                        {
                            string ReferenceExport = System.IO.Path.Combine(Path, FilName);
    
                            //String Chemin = "C:/";
                            //String Fichier = "fichier.txt";
                            //String CheminComplet = System.IO.Path.Combine(Chemin, Fichier);
    
                            ////EXPORT FORMAT TXT
                            //ReferenceExport = ReferenceExport + ".csv";
                            Boolean Success = UtilsProcFunc.EcrireDansUnfichier(Export.Tables[0], ReferenceExport);
                            if (Success)
                            {
                                for (int l = 0; l <= DTGfichierInterpol.Rows.Count - 1; l++)
                                {
                                    string DosID = DTGfichierInterpol.Rows[l].Cells[6].Value.ToString();
                                    //MAJ
                                    // recupere la valeur de l ID SendFile
                                    var idParam_SfID = new SqlParameter
                                    {
                                        ParameterName = "@SfiId",
                                        SqlDbType = SqlDbType.UniqueIdentifier,
                                        Direction = ParameterDirection.Output
                                    };
                                    Maj = ExecuteRequete.ExecuteStoredProcedure("MAJStatutDossier_EnregistrementSendFile_InterpolDPF", new SqlParameter("@StaId", 18),
                                                    new SqlParameter("@DosID", DosID), new SqlParameter("@staBL", null), new SqlParameter("@staCRprod", null),
                                                    idParam_SfID, new SqlParameter("@SfiRefDoc", FilName));
                                }
                                // recupere la valeur de l ID FichierEnvoyer
                                var idParam_FilID = new SqlParameter
                                {
                                    ParameterName = "@filID",
                                    SqlDbType = SqlDbType.UniqueIdentifier,
                                    Direction = ParameterDirection.Output
                                };
                                Maj = ExecuteRequete.ExecuteStoredProcedure("EnregistreFile", idParam_FilID, new SqlParameter("@fillNameSend", FilName),
                                                new SqlParameter("@filDateSend", DateTime.Today.Date),
                                                new SqlParameter("@filNameReturn", null), new SqlParameter("@filDateReturn", null),
                                                new SqlParameter("@filSceDest", "INTERPOL"), new SqlParameter("@filDateRelance", null), new SqlParameter("@filRefRelance", null));
    
                                //Impression du fichier du courrier
                                DataSet Impression = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param("ImpressionRPO", new SqlParameter("@ReferenceLettre", FilName));
                                CR_FichRPO NewFicheRPO = new CR_FichRPO();
                                NewFicheRPO.SetDataSource(Impression.Tables[0]);
                                CRV_FichRPO.ReportSource = NewFicheRPO;
                                CRV_FichRPO.PrintReport();
    
                                //CR_Lettre_RPO NewLettreRPO = new CR_Lettre_RPO();
                                //NewLettreRPO.SetDataSource(Impression.Tables[0]);
                            }
                            else
                            {
                                MessageBox.Show("L'ecriture du fichier a echoue\n contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                return;
                            }
                            MaTransaction.Complete();
                        }
                    }
                    catch (Exception MonEx)
                    {
                        MessageBox.Show(MonEx.Message.ToString()); 
                    }
                }
                if (Maj)
                {
                    MessageBox.Show("Extraction Realise avec success", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    UtilsProcFunc.Edition(this, 3);
                    return;
                }
                else
                {
                    MessageBox.Show("Echec de l'extraction ", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
    
    
           
            }

    Pour le test : Voila le chemin du fichier :

    "C:\Users\Marcelle Ngounou\Documents\Visual Studio 2010\Projects\Solution Reclamation CSR\Prj_RECLACSR\bin\Debug\Extraction Interpol\001/0912/JCF/SMC-MARCY"

    On voit bien que le nom du fichier est bien 001/0912/JCF/SMC-MARCY

    Le message d'erreur est le suivant:

    + ex {"Could not find a part of the path 'C:\\Users\\Marcelle Ngounou\\Documents\\Visual Studio 2010\\Projects\\Solution Reclamation CSR\\Prj_RECLACSR\\bin\\Debug\\Extraction Interpol\\001\\0912\\JCF\\SMC-MARCY'."} System.Exception {System.IO.DirectoryNotFoundException}

    Ce qui est normal car il décompose la suite : "001/0912/JCF/SMC-MARCY"  qui est en faite le nom du fichier a créer.

    comment créer ce fichier en utlisant les caractères "/" sans que ceci ne soit converti...

    Cordialement


    Marcelle NGOUNOU

    Bonjour,

    Votre nom de fichier ne peux comporter des slashes, remplacez les par des tirets. liste des caractères interdits :

        ", /, \, *, ?, <, >, |, :

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    lundi 17 septembre 2012 05:38
    • Marqué comme réponse marclas jeudi 20 septembre 2012 10:42
    jeudi 20 septembre 2012 10:16

Toutes les réponses

  • bonjour,

    j'utilise la fonction suivante pour générer la reference du courrier 

    public static string RetourneRefCourrier(int type)
            {
                    string FilName = string.Empty;
                    string MoisCourant = string.Empty; 
                if (DateTime.Now.Month < 10)
                {
                    MoisCourant = "0" + DateTime.Now.Month.ToString();
                }
                else
                {
                    MoisCourant = DateTime.Now.Month.ToString();
                }
                if (type == 1) //--------------lettre RPO
                {
    
                    try
                    {
                        
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 0));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString() + ".csv";
                            }
                        }
    
                        return FilName ;
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
                else if (type == 2) //-----------------RPT
                {
                    try
                    {
                        //recupere la reference de la derniere fiche RPO
                        DataRow DrRef = ExecuteRequete.ExecuteStoredProcedureRetourneDataRow_With_Param("RetourneLastRefRPOPRT", new SqlParameter("@typeinfo", 1));
                        if (DrRef == null)
                        {
                            FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                        }
                        else
                        {
                            string RefLastRpoFile = DrRef[1].ToString();
                            string MoisRefLastRpoFile = RefLastRpoFile.Substring(4, 2);
                            if (MoisRefLastRpoFile.Trim() == MoisCourant.Trim())
                            {
                                int NumOrdreRefLastRpoFile = int.Parse(RefLastRpoFile.Substring(0, 3)) + 1;
                                if (NumOrdreRefLastRpoFile < 10)
                                {
                                    FilName = "00" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else if ((NumOrdreRefLastRpoFile > 10) && (NumOrdreRefLastRpoFile < 100))
                                {
                                    FilName = "0" + NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                                else
                                {
                                    FilName = NumOrdreRefLastRpoFile + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                                }
                            }
                            else
                            {
                                FilName = "001" + "/" + MoisCourant + DateTime.Now.Year.ToString().Substring(2, 2) + "/JCF/SMC-" + Properties.Settings.Default.OperateurCourant.ToString();
                            }
                        }
                        return FilName; 
                    }
                    catch (Exception Ex)
                    {
                        FilName = string.Empty;
                        MessageBox.Show(Ex.Message);
                        return FilName;
                    }
                }
    
                return FilName;
            }


    Ceci se passe sans souci et la valeur est bien renvoyer

    exmple : "002/042012/PHE/FMP-EER"

    je voudrais utiliser cette reference pour creer un fichier 

    avec les fonction suivante

            public static Boolean EcrireDansUnfichier(DataTable dt, string filePath)
            {
    
                int i = 0;
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(filePath, false);
                    for (i = 0; i <= dt.Columns.Count - 1; i++)
                    {
                        sw.Write(dt.Columns[i].ColumnName + ";");
                    }
                    sw.WriteLine();
                    foreach (DataRow Rows in dt.Rows)
                    {
                        Object[] array = Rows.ItemArray;
                        for (i = 0; i < array.Length; i++)
                        {
                            sw.Write(array[i].ToString() + ";");
                        }
                        sw.WriteLine();
                    }
                    sw.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une opération incorrecte: \n" + ex.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }
            }


            private void CmdExportInterpol_Click(object sender, EventArgs e)
            {
                bool Maj = false;
                using (TransactionScope MaTransaction = new TransactionScope())
                {
                    string FilName = string.Empty;
                    try 
                    {
                        //ouvrir l emplacement
                        DataSet Export = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param ("EditionCourrier",new SqlParameter ("@typeEdition",6));
                        
                        //1- recupere le chemin d'execution
                        string Path = Application.StartupPath.ToString();
                        //2-Verifier que le dossier existe
                        Path = @Path + "\\Extraction Interpol";
                        if (! (System.IO.Directory.Exists(Path)))
                        {
                                 System.IO.Directory.CreateDirectory(Path);
                  
                        }
                        //ecrire le fichier
                        FilName = UtilsProcFunc.RetourneRefCourrier(1);
                        if (FilName == string.Empty)
                        {
                            MessageBox.Show("L'ecriture du fichier a echoué!\n Contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        else
                        {
                            string ReferenceExport = System.IO.Path.Combine(Path, FilName);
    
                            //String Chemin = "C:/";
                            //String Fichier = "fichier.txt";
                            //String CheminComplet = System.IO.Path.Combine(Chemin, Fichier);
    
                            ////EXPORT FORMAT TXT
                            //ReferenceExport = ReferenceExport + ".csv";
                            Boolean Success = UtilsProcFunc.EcrireDansUnfichier(Export.Tables[0], ReferenceExport);
                            if (Success)
                            {
                                for (int l = 0; l <= DTGfichierInterpol.Rows.Count - 1; l++)
                                {
                                    string DosID = DTGfichierInterpol.Rows[l].Cells[6].Value.ToString();
                                    //MAJ
                                    // recupere la valeur de l ID SendFile
                                    var idParam_SfID = new SqlParameter
                                    {
                                        ParameterName = "@SfiId",
                                        SqlDbType = SqlDbType.UniqueIdentifier,
                                        Direction = ParameterDirection.Output
                                    };
                                    Maj = ExecuteRequete.ExecuteStoredProcedure("MAJStatutDossier_EnregistrementSendFile_InterpolDPF", new SqlParameter("@StaId", 18),
                                                    new SqlParameter("@DosID", DosID), new SqlParameter("@staBL", null), new SqlParameter("@staCRprod", null),
                                                    idParam_SfID, new SqlParameter("@SfiRefDoc", FilName));
                                }
                                // recupere la valeur de l ID FichierEnvoyer
                                var idParam_FilID = new SqlParameter
                                {
                                    ParameterName = "@filID",
                                    SqlDbType = SqlDbType.UniqueIdentifier,
                                    Direction = ParameterDirection.Output
                                };
                                Maj = ExecuteRequete.ExecuteStoredProcedure("EnregistreFile", idParam_FilID, new SqlParameter("@fillNameSend", FilName),
                                                new SqlParameter("@filDateSend", DateTime.Today.Date),
                                                new SqlParameter("@filNameReturn", null), new SqlParameter("@filDateReturn", null),
                                                new SqlParameter("@filSceDest", "INTERPOL"), new SqlParameter("@filDateRelance", null), new SqlParameter("@filRefRelance", null));
    
                                //Impression du fichier du courrier
                                DataSet Impression = ExecuteRequete.ExecuteStoredProcedureRetourneDataSet_With_Param("ImpressionRPO", new SqlParameter("@ReferenceLettre", FilName));
                                CR_FichRPO NewFicheRPO = new CR_FichRPO();
                                NewFicheRPO.SetDataSource(Impression.Tables[0]);
                                CRV_FichRPO.ReportSource = NewFicheRPO;
                                CRV_FichRPO.PrintReport();
    
                                //CR_Lettre_RPO NewLettreRPO = new CR_Lettre_RPO();
                                //NewLettreRPO.SetDataSource(Impression.Tables[0]);
                            }
                            else
                            {
                                MessageBox.Show("L'ecriture du fichier a echoue\n contacter l'administrateur", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                return;
                            }
                            MaTransaction.Complete();
                        }
                    }
                    catch (Exception MonEx)
                    {
                        MessageBox.Show(MonEx.Message.ToString()); 
                    }
                }
                if (Maj)
                {
                    MessageBox.Show("Extraction Realise avec success", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    UtilsProcFunc.Edition(this, 3);
                    return;
                }
                else
                {
                    MessageBox.Show("Echec de l'extraction ", "SAD-CSR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
    
    
           
            }

    Pour le test : Voila le chemin du fichier :

    "C:\Users\Marcelle Ngounou\Documents\Visual Studio 2010\Projects\Solution Reclamation CSR\Prj_RECLACSR\bin\Debug\Extraction Interpol\001/0912/JCF/SMC-MARCY"

    On voit bien que le nom du fichier est bien 001/0912/JCF/SMC-MARCY

    Le message d'erreur est le suivant:

    + ex {"Could not find a part of the path 'C:\\Users\\Marcelle Ngounou\\Documents\\Visual Studio 2010\\Projects\\Solution Reclamation CSR\\Prj_RECLACSR\\bin\\Debug\\Extraction Interpol\\001\\0912\\JCF\\SMC-MARCY'."} System.Exception {System.IO.DirectoryNotFoundException}

    Ce qui est normal car il décompose la suite : "001/0912/JCF/SMC-MARCY"  qui est en faite le nom du fichier a créer.

    comment créer ce fichier en utlisant les caractères "/" sans que ceci ne soit converti...

    Cordialement


    Marcelle NGOUNOU

    Bonjour,

    Votre nom de fichier ne peux comporter des slashes, remplacez les par des tirets. liste des caractères interdits :

        ", /, \, *, ?, <, >, |, :

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    lundi 17 septembre 2012 05:38
    • Marqué comme réponse marclas jeudi 20 septembre 2012 10:42
    jeudi 20 septembre 2012 10:16