Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Uploader dans la base de données SQL des fichiers de l'onglet explorateur de fichiers

0000002117     -      29/02/2016

Le module repris ci-dessous montre comment uploader dans la base de données SQL des fichiers de l'onglet explorateur de fichiers. Cela requiert bien entendu l'activation au préalable des fichiers stockés dans la base de données SQL et de l'utilisation de SqlFileView.

Le but ici est de télécharger les fichiers correspondant à des actions du 4ème signalétiques (DEST) et dont l'ID_ACTEMPL (ID du template d'actions) est connu. Le code peut bien entendu être adapté facilement à toutes autres circonstances. Il est exécuté directement depuis l'éditeur de code de Mercator.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace MyNameSpace
{
     public class Class1 : MercatorUi.Interfaces. IExec
    {

         public void Main()
        {
             DataSet ds = Api .Zselect( Globals .RepData, "select id,module from actions where (module='DEST') and ((id_actempl='.A-A729D53') or (id_actempl='.A-C48A0EB'))" );
             if (ds == null )
                 return ;
             Progress .ProgressCreate(ds.Tables[0].Rows.Count);
             foreach ( DataRow dr in ds.Tables[0].Rows)
            {
                 Progress .ProgressIncrement(1);
                 string id = Api .CleanRep(dr[ "id" ].ToString().TrimEnd());
                 string dir = Globals .RepData + "Files\\Actions\\DEST\\" + id;
                 if (System.IO. Directory .Exists(dir))
                     Api .CopyFolder(dir, "<" + Api . SqlFilePathRoots .Files.ToString() + "\\Actions\\DEST\\" + id);
            }
             Progress .ProgressDestroy();
             Dialogs .Stop( "OK !" );
        }
    }
}

Si on souhaite ne pas conserver la copie d'origine des fichiers sur disque, il suffit de remplacer Api.CopyFolder par Api.MoveFolder.

Le code ci-dessous présente une alternative : il copie tous les fichiers de tous les sous-répertoires du répertoire "Files" vers Sql :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace MyNameSpace
{
    public class Class1 : MercatorUi.Interfaces.IExec
    {

        public void Main()
        {
            Api.CopyFolder(Globals.RepData + "Files", "<" + Api.SqlFilePathRoots.Files.ToString());
            Dialogs.Stop("OK !");
        }
    }
}