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 :
FIC_ARTICLE est une Source dede Données
HDéclareExterne(fRepDonnées()+["\"]+"ARTICLE.FIC",FIC_ARTICLE)
Trace(HNbEnr(FIC_ARTICLE))
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
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)
POUR TOUT sdTableHorsAnalyse Trace(HRécupèreEnregistrement(sdTableHorsAnalyse)) FIN
|
|
< Retour
|
|
|
|
|
|