13 juillet 2012
publié par 
Les traitements d'une application WINDEV, d'un site WEBDEV ont directement accès aux données des fichiers décrits dans l'analyse, à l'aide des fonctions HFSQL.

 

Cependant il n'est pas rare de devoir consulter ou mettre à jour un fichier HFSQL d'une autre application, sans qu'il ne soit décrit dans l'analyse. C'est très simple à condition de connaître la bonne fonction : HdéclareExterne.
Mieux qu'une longue explication, voici un exemple adapté à la lecture d'un fichier HFSQL quelconque :

// Déclaration d'une source de données qui sera utilisée dans le code
// exactement comme on utilise le nom logique d'un fichier décrit dans l'analyse
FIC_ARTICLE est une Source dede Données

// Association de cette variable, au fichier physiquement sur disque à lire
HDéclareExterne(fRepDonnées()+["\"]+"ARTICLE.FIC",FIC_ARTICLE)

// On peut lire le nombre d'enregistrements du fichier
Trace(HNbEnr(FIC_ARTICLE))

// On peut parcourir son contenu complet, et si on ne connaît pas
// sa structure, la récupérer avec HListeRubrique
POUR TOUT FIC_ARTICLE
Trace("-------------------------------")
POUR TOUTE chaîne srubrique de HListeRubrique(FIC_ARTICLESEPAREE PARAR RC
Trace({"EXT_ARTICLE."+srubrique, indRubrique})
FIN
FIN


Notes :
  • toutes les fonctions HFSQL s'appliquent alors à la source de données, comme si il s'agissait d'un fichier décrit dans l'analyse,
  • si le fichier est hébergé par le moteur HFSQL Client/Serveur, il suffit d'ajouter le nom de la connexion à la fonction HdéclareExterne,
  • si le fichier est protégé par un mot de passe, il doit être spécifié lors de l'appel de HdéclareExterne,
  • si le fichier est antérieur au format HFSQL, donc HF 5, c'est la fonction Hdéclare qui doit être utilisée. Elle nécessite le fichier .WDD en complément du .FIC : le descripteur d'analyse.
  • pour l'exemple une indirection est faite afin de récupérer le nom des rubriques du fichier. Mais dans le cas d'un fichier connu, il est tout à fait possible de nommer directement les rubriques :
    Trace(FIC_ARTICLE.NomRubrique)

- Mise à jour 4/6/2020 -

Exemple similaire pour accéder au contenu d'une table HFSQL Client/Serveur. Pour que le cas soit le plus détaillé possible, la table est dans un sous-dossier de la base de données, et est protégée par un mot de passe ...

 

 

CnxHFSQL est une Connexion
sdTableHorsAnalyse est une Source dede Données

// Paramètres de la connexion
CnxHFSQL..Provider = hAccèsHFClientServeur
CnxHFSQL..Utilisateur = "admin"
CnxHFSQL..MotDePasse = ""
CnxHFSQL..Serveur = "GB:4925"
CnxHFSQL..BaseDeDonnées = "CRM"
CnxHFSQL..Cryptage = hCryptageRC5_16

HOuvreConnexion(CnxHFSQL)
HPasse(sdTableHorsAnalyse,"<mot-passe>") //
HDéclareExterne(".\<nom-sous-dossier>\CLIENT.FIC", sdTableHorsAnalyse, CnxHFSQL)
// Si le fichier est à la racine de la base de données :
//HDéclareExterne(".\CLIENT.FIC", sdTableHorsAnalyse, CnxHFSQL)

POUR TOUT sdTableHorsAnalyse
Trace(HRécupèreEnregistrement(sdTableHorsAnalyse))
FIN

 

 

 

< Retour