Bestanden van het tabblad "Bestandsbrowser" uploaden in de SQL-database

0000002117     -      29-02-2016

De onderstaande module laat zien hoe men bestanden van het tabblad "Bestandsbrowser" laadt in de SQL-database. Daartoe moet men uiteraard vooraf de in de SQL-database opgeslagen bestanden activeren en moet men werken met SqlFileView.

Doel hiervan is het downloaden van bestanden die overeenstemmen met acties uit het 4e informatiebestand (DEST) en waarvan de ID_ACTEMPL (ID van het actietemplate) gekend is. Deze code kan uiteraard makkelijk worden aangepast aan alle andere omstandigheden. Ze wordt rechtstreeks uitgevoerd via de code-editor van 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 !" );
        }
    }
}

Wenst u de originele kopie van de bestanden niet te bewaren op schijf, dan vervangt u gewoon Api.CopyFolder door Api.MoveFolder.

De onderstaande code biedt een alternatief: hiermee worden alle bestanden van alle subdirectories van de directory "Files" gekopieerd naar 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 !");
        }
    }
}