💡 Voor een oplossing zonder maatwerkcode, zie deze pagina.
Het volgende is van toepassing op alle informatiebestanden: klanten, leveranciers, artikelen, vierde informatiebestand, contactpersonen, algemene rekeningen, analytische rekeningen, vaste activa, prospecten, dienstverleners en locaties.
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.
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()
{
List<string> list = Api.Zselect<string>(Globals.RepData, "select id,module from ACTIONS where (module='DEST') and ((id_actempl='.A-A729D53') or (id_actempl='.A-C48A0EB'))");
if (list == null)
return;
Progress.ProgressCreate(list.Count);
foreach (string idAction in list)
{
Progress.ProgressIncrement(1);
string id = Api.CleanRep(idAction);
string dir = Globals.RepData + "Files\\Actions\\DEST\\" + id;
if (System.IO.Directory.Exists(dir))
Api.CopyFolder(dir, "<" + Api.SqlFilePathRoots.Files + "Files\\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:
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);
Dialogs.Stop("OK !");
}
}
}
💡 De verschillende methoden van MercatorApi.Api die bestanden of mappen beheren, werken op dezelfde manier met bestanden op schijf als met SQL-bestanden. Dit zorgt dus voor een volledige interoperabiliteit.