SilExporterDonnees() et SilExporterDonneesUTF8()

Définition :
Ces fonctions permettent de créer un fichier texte à partir d'une requête ou d'une procédure stockée et de l'enregistrer dans l'emplacement et le nom spécifié en argument.
soit dans le format ASCII soit dans le format UTF8.

SilExporterDonnees :

image-20240103-111310.png

SilExporterDonneesUTF8 :

image-20240103-111346.png

Syntaxe :
SilExporterDonnees ("Requête source de données SQL", "Emplacement et Nom du Fichier CSV", "Paramètres d'export")
ou
SilExporterDonneesUTF8 ("Requête source de données SQL", "Emplacement et Nom du Fichier CSV", "Paramètres d'export")

Trois paramètres :

  • 1 : La source de données correspond à une instruction SQL qui permet d'obtenir les données à extraire de l'ERP.

  • 2 : Le chemin et le nom du fichier à générer (Avec l'extension). Ce paramètre correspond au nom du fichier à générer. Il peut contenir le chemin d ’accès au fichier complet ou
    de manière relative par rapport au chemin de l’ERP.

Une option OverwriteIfExists peut-être utilisée dans les paramètres de fonctionnement de l’instruction pour indiquer si le fichier peut-être remplacé si celui-ci existe déjà.

  • 3 : Les paramètres d'export : Ce paramètre est optionnel. S’il n’est pas renseigné, le traitement d’import fonctionnera en appliquant des paramètres par défaut.

Les valeurs par défaut du fichier d'export :
Si aucun paramètre n’est fourni à la fonction concernant la description du fichier d'export, la fonction considérera le fichier comme un fichier :

=> Au format CSV,
=> Utilisant le caractère ‘;’ comme séparateur de colonnes,
=> Ayant les entêtes de colonnes sur la première ligne du fichier,
=> Utilisant le point comme séparateur décimals,
=> Utilisant un format de date compatible avec le moteur SQL,
=> Utilisant les guillemets comme identificateur de texte,
=> Ayant ses colonnes de mêmes noms que les colonnes de la table de destination.

 

La description du fichier d'export :
Ce paramètre est optionnel. S’il n’est pas renseigné, le traitement d’import fonctionnera en appliquant des paramètres par défaut.

Les paramètres de fonctionnement de l’'export peuvent être enregistrés dans un fichier texte au format d’un fichier ini. Dans ce cas, le paramètre contiendra la chaîne de caractères ‘’FICHIER={chemin+nom du fichier}’’.

L’exemple ci-dessous présente le contenu possible d’un fichier de description d’un export d’un fichier dans une table. Ce contenu peut donc être stocké dans un fichier dont le chemin d’accès sera passé en paramètre à la fonction ou bien dans une chaîne de caractères directement passée en paramètre de la fonction.

[FileDescription] ColumnsSeparator= ColumnsHeader=1 ShortDateFormat=dd/MM/yyyy DateSeparator= ShortTimeFormat=hh:mm:ss TimeSeparator=: FixeWidth=1 SeparatorDecimal=. OverwriteIfExist=1 ReplaceCR=- [FileColumns] CodeArticle=35 CodeFamille=35 DateCreation=12 PrixVente=10

Cette description reprend le formalisme d’un fichier “ini” avec des sections et des valeurs. Il est important que :

  1. Les crochets soient présents pour définir le nom de la section.

  2. Qu'il n'y ait pas d'espace autour du signe égal entre le nom de la propriété et sa valeur.

  3. Que la casse soit respectée dans le nom des sections et des propriétés.

 

La section [FileDescription] du fichier mis en 3ème paramètre :

Un fichier peut contenir les entêtes de colonnes et des colonnes définies de différentes manières comme avec des largeurs fixes ou non.

Il est donc possible de préciser ces informations avec les propriétés suivantes :

  • FixeWidth : Cette propriété permet d’indiquer que les largeurs des colonnes sont d’une largeur fixe en nombre de caractères (1=oui). Par défaut, le traitement considère que les largeurs ne sont pas fixes (0=non). Si le fichier est défini selon des colonnes fixes, la section [FileColumns] devient obligatoire et la zone "ColumnsSeparator" n'est pas prise en compte.

  • ColumnsHeader : Valeur 1 (oui) ou 0 (non), cette propriété permet de préciser si les entêtes de colonnes sont présentes en première ligne du fichier ou non.

  • ColumnsSeparator : Caractère, cette propriété permet de préciser le caractère à utiliser pour indiquer le changement de colonnes, ‘ ;’ Par défaut. Il faut indiquer la chaîne ‘TAB’ à ce niveau pour indiquer que le caractère de séparation correspond à la tabulation.

  • TextIdentificator : Caractère, cette propriété permet de préciser le caractère utilisé pour identifier des chaînes de caractères dans les valeurs des colonnes quand elles peuvent contenir le caractère de séparation des colonnes. Guillemet (‘’) par défaut et limité à un seul caractère.Pour forcer la fonction à ne rien mettre autour des chaines de caractère, il faut saisir la valeur EMPTY.

  • SeparatorDecimal : Caractère, indique le caractère utilisé comme séparateur décimal pour les valeurs numériques. Le traitement considère le point comme caractère par défaut. Si aucun format de date et heure n’est mentionné dans les paramètres de fonctionnement, le traitement enverra dans la colonne de date la chaîne de caractères trouvée dans la source sans transformation de la date et heure contenue. Il convient donc dans ce cas de s’assurer de la compatibilité du format contenu dans le fichier avec le serveur SQL.

  • ShortDateFormat : Cette propriété permet de préciser la position de l’année, du mois et du jour dans la chaîne de caractères qui représentera une date dans les colonnes du fichier. Il convient d’utiliser la convention suivante : yyyy pour l’année, MM pour le mois et dd pour le jour. Si un caractère de séparation est utilisé pour distinguer les différents éléments qui constituent la date, il doit être représenté par le caractère ‘/’ dans la définition du format. Il devra être également précisé dans la définition DateSeparator.

  • DateSeparator : Il s’agit du caractère utilisé pour séparer les différents éléments qui constituent la date. Utiliser le code ‘EMPTY’ pour indiquer qu’aucun séparateur n’est utilisé.

  • ShortTimeFormat : Permet de préciser le format utilisé pour représenter une heure dans la chaîne de caractères. Si un caractère de séparation est utilisé pour distinguer les différents éléments qui constituent l’heure, il doit être représenté par le caractère ‘:’ dans la définition du format. Il devra être également précisé dans la définition TimeSeparator. Il convient d’utiliser la convention suivante pour représenter les différents éléments constitutifs d’une heure : hh pour l’heure, mm pour les minutes et ss pour les secondes.

  • TimeSeparator : Il s’agit du caractère de séparation utilisé pour distinguer les différents éléments qui constituent une heure : heure, minutes et secondes.

  • OverwriteIfExist : Ce paramètre permet de préciser si le fichier de destination doit être remplacé si celui-ci existe déjà (1=oui, 0=non).

  • ReplaceCR : Cette information permet de préciser le caractère à utiliser pour remplacer les sauts de lignes qui pourraient être présents dans les colonnes de type texte. Par défaut, ce paramètre utilise le caractère espace (' ').

Il est important de noter que le caractère espace est utilisé pour séparer la date de l’heure dans une chaîne de caractères.

 

Exemples de description de formats de date et heure :

1- La chaîne 2013-08-29 12.10.20 de représentation d’une date et heure dans un fichier CSV doit être décrite de la manière suivante dans la section [FileDescription] :

2- La chaîne 20130829 121020 doit être décrite de la manière suivante :

3- La chaîne 29/08/2013 12:10:20 doit être décrite de la manière suivante :

 

La section [FileColumns] du fichier mis en 3ème paramètre :

Elle permet de préciser la largeur des colonnes présentes dans le fichier dans le cas où celui-ci est décrit comme ayant des largeurs fixes.
Si le fichier contient en première ligne les entêtes des colonnes, il convient alors de reprendre les libellés des colonnes pour indiquer la largeur de chacune d’elles.
Si le fichier ne contient pas de ligne d’entête pour les colonnes, il faut alors utiliser un indice pour indiquer le numéro de colonne concerné. Cet indice est 1 pour la première colonne, 2 pour la deuxième, etc …

 

Exemple de fichiers, avec une ligne d'entête :

 

Exemple de fichiers, sans ligne d'entête :

Les valeurs de retour :
La fonction retourne 0 quand aucune erreur n’a été détectée lors du traitement d'export de données du fichier source dans la table de destination.

Si une erreur a été détectée, la fonction retournera une valeur différente de 0 :

  • 11004 : Le nom du fichier à créer est vide.

  • 11005 : Aucune colonne définie pour le fichier source.

  • 11006 : Les colonnes n'ont pas de largeur définie

  • 12003 : Une erreur SQL s'est produite lors de l'exécution de l'instruction d'insertion des données dans la table de destination

  • 200 : Le fichier existe déjà et l'option de remplacement n'a pas été utilisée

  • 202 : Une erreur s'est produite à la suppression du fichier existant

 

Exemples de paramétrage :
Sans le troisième paramètre, le fichier est généré au format CSV.

SilExporterDonnees("Select codearticle, codefamille from article", "C:\TRF\ART.txt", "")

Autre exemple utilisant un fichier de paramétrage :

vu(1)=SilExporterDonnees("Select codearticle, codefamille, DateCreation,PrixVente from article", "C:\TRF\ART.txt", "FICHIER=Fichier.ini") [SI] vu(1)=0 [FINSI] [ALORS] SAM("", "Le fichier a été créé", 0) [FINALORS] [SINON] SAM("",SilGetLastError(vu(1)),0) [FINSINON]

 

Contenu du fichier de paramètres “Fichier.ini"

 

Résultat :

 

Donnez votre avis sur la Base de connaissance Silog ici ou contactez-nous directement par mail sur confluence@silog.fr