DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Fonction HDéclareExterne : Utilisation avec les Connecteurs Natifs et/ou le provider OLE DB
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
HDéclareExterne (Fonction)
En anglais : HDeclareExternal
ODBCNon disponible avec ce type de connexion
Importe temporairement dans l'analyse en cours la description d'un fichier de données à partir d'un fichier de données HFSQL existant. Ce fichier de données est ouvert. Pour ne plus utiliser cette description de fichier de données, utilisez la fonction HAnnuleDéclaration.
WEBDEV - Code ServeurAjax
// Déclaration d'un fichier de données FournisseurWD à partir du chemin complet 
// du fichier HFSQL Classic (extension .FIC comprise)
HDéclareExterne("C:\GestCom\Fournisseur.fic", "FournisseurWD")
SI ErreurDétectée = Vrai ALORS
	// Erreur de déclaration du fichier, on affiche l'erreur
	Erreur(HErreurInfo())
FIN
Syntaxe
WEBDEV - Code ServeurAjaxHFSQL Classic

Utilisation avec des fichiers HFSQL Classic (monoposte ou réseau) Masquer les détails

<Résultat> = HDéclareExterne(<Chemin complet du fichier HFSQL> , <Alias> [, <Mot de passe>])
<Résultat> : Booléen
  • Vrai si l'opération a été réalisée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'identifier l'erreur.
<Chemin complet du fichier HFSQL> : Chaîne de caractères
Chemin complet d'accès au fichier de données HFSQL dont la description doit être importée (260 caractères maximum). Ce nom doit contenir le chemin et l'extension du fichier de données.
Si la fonction HDéclareExterne est utilisée dans une procédure stockée, le chemin du fichier de données doit être relatif à la base de données en cours.
Linux Attention : le nom physique des fichiers doit être en minuscules et sans accent.
<Alias> : Chaîne de caractères
Nom logique du fichier de données. Ce nom permettra de manipuler le fichier de données. Ce nom peut également correspondre à une variable de type Source de données.
<Mot de passe> : Chaîne de caractères optionnelle
  • Mot de passe associé au fichier de données.
  • Chaîne vide ("") si aucun mot de passe n'est utilisé.
Si le mot de passe est précisé, il est conservé : il n'est pas nécessaire d'indiquer à nouveau ce mot de passe dans les prochaines fonctions de manipulation du fichier de données.
WEBDEV - Code ServeurAjaxHFSQL Client/ServeurOLE DBConnecteurs Natifs (Accès Natifs)

Utilisation avec un accès OLE DB, un Connecteur Natif, HFSQL Client/Serveur et une connexion existante Masquer les détails

<Résultat> = HDéclareExterne(<Fichier de données> , <Alias> , <Connexion>)
<Résultat> : Booléen
  • Vrai si l'opération a été réalisée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'identifier l'erreur.
<Fichier de données> : Chaîne de caractères
Nom du fichier de données dans la base externe.
HFSQL Client/Serveur Ce paramètre correspond au nom physique du fichier de données, relatif à la base de données (extension comprise). Exemple : "monfichier.fic" (ou si la base a des sous-répertoires : ".\repertoire\monfichier.fic").
Si le fichier de données possède un mot de passe, il est nécessaire de préciser ce mot de passe avec la fonction hPasse avant d'utiliser la fonction HDéclareExterne.
<Alias> : Chaîne de caractères
Nom logique du fichier de données. Ce nom permettra de manipuler le fichier de données dans l'application en cours. Ce nom peut également correspondre à une variable de type Source de données.
<Connexion> : Chaîne de caractères
Connexion à une base de données. Cette connexion a été définie dans l'éditeur d'analyses ou décrite par programmation grâce à la fonction HDécritConnexion.
WEBDEV - Code ServeurAjaxOLE DBConnecteurs Natifs (Accès Natifs)

Utilisation avec un accès OLE DB ou un Connecteur Natif Masquer les détails

<Résultat> = HDéclareExterne(<Fichier de données> , <Alias> , <Utilisateur> [, <Mot de passe> [, <Source de données> [, <Provider OLE DB ou Connecteur Natif> [, <Accès>]]]])
<Résultat> : Booléen
  • Vrai si l'opération a été réalisée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'identifier l'erreur.
<Fichier de données> : Chaîne de caractères
Nom du fichier de données dans la base externe.
<Alias> : Chaîne de caractères
Nom logique du fichier de données. Ce nom permettra de manipuler le fichier de données dans l'application en cours.
<Utilisateur> : Chaîne de caractères
Nom de l'utilisateur de la source de données.
<Mot de passe> : Chaîne de caractères optionnelle
Mot de passe du fichier de données à ouvrir (si ce mot de passe existe).
<Source de données> : Chaîne de caractères optionnelle
Chemin complet de la source de données.
<Provider OLE DB ou Connecteur Natif> : Chaîne de caractères optionnelle
Nom du provider OLE DB à utiliser ou une des constantes suivantes :
hAccèsNatifAS400Connecteur Natif AS/400 (module optionnel)
hAccèsNatifDB2Connecteur Natif DB2 (module optionnel)
hAccèsNatifInformixConnecteur Natif informix (module optionnel)
hAccèsNatifMariaDBConnecteur Natif MariaDB (module optionnel de WINDEV/WEBDEV)
hAccèsNatifMySQLConnecteur Natif MySQL (module optionnel)
hAccèsNatifOracleConnecteur Natif Oracle (module optionnel)
hAccèsNatifPostgreSQLConnecteur Natif PostgreSQL (module optionnel de WINDEV/WEBDEV)
hAccèsNatifProgressConnecteur Natif Progress (module optionnel)
hAccèsNatifSQLAzureConnecteur Natif SQL Azure (module optionnel, fourni avec le Connecteur Natif SQL Server)
hAccèsNatifSQLiteConnecteur Natif SQLite
hAccèsNatifSQLServerConnecteur Natif SQL Server (module optionnel)
hAccèsNatifSybaseConnecteur Natif Sybase (module optionnel)
hAccèsNatifXBaseConnecteur Natif xBase
hAccèsNatifXMLConnecteur Natif XML
hODBCProvider OLE DB pour ODBC. Permet d'accéder à une source de données ODBC déclarée dans les sources de données ODBC de Windows
hOledbAccess97Provider OLE DB pour Access 97
hOledbAccess2000Provider OLE DB pour Access 2000
hOledbAccess2007Provider OLE DB pour Access 2007
hOledbAccess2010Provider OLE DB pour Access 2010
hOledbDBase5Provider OLE DB pour DBase 5
hOledbExcel2000Provider OLE DB pour Excel 2000
hOledbExcel2007Provider OLE DB pour Excel 2007
hOledbExcel97Provider OLE DB pour Excel 97
hOledbLotus4Provider OLE DB pour Lotus 4
hOledbOracleProvider OLE DB pour Oracle
hOledbSQLServerProvider OLE DB pour SQL Server
Attention : Pour utiliser une connexion OLE DB il est nécessaire :
  • d'installer le MDAC version 2.6 minimum (installation réalisée avec WINDEV/WEBDEV et lors de la création de la version Client)
  • d'installer le provider OLE DB correspondant à la base de données manipulée.
<Accès> : Constante optionnelle
Paramètre le type d'accès au fichier de données.
hOLectureLe fichier de données est accessible uniquement en lecture. Seule la lecture des enregistrements est possible. Il n'est pas possible d'en ajouter ou d'en supprimer.
hOLectureEcriture
(valeur par défaut)
Le fichier de données est accessible en lecture et en écriture. Il est possible aussi bien de lire des enregistrements que d'écrire de nouveaux enregistrements.
Remarques
  • Toutes les fonctions HFSQL peuvent être utilisées sur le fichier de données importé, à l'exception de la gestion de l'intégrité.
  • Le nombre d'importations de descriptions est illimité.
  • Cette fonction peut être utilisée avec des fichiers de données au format XML.
  • Pour utiliser la fonction HDéclareExterne dans une procédure stockée :
    • il faut donner le chemin relatif du fichier de données par rapport au répertoire de la base contenant la procédure stockée. Le chemin devra indiquer le nom et l'extension du fichier de données.
    • il ne faut pas utiliser de connexion : c'est la base en cours sur laquelle se trouve la procédure stockée qui sera utilisée.
  • Par défaut, si le projet en cours :
    • est associé à une analyse, le mode de blocage effectué sur les fichiers de données est multi-utilisateurs (les fichiers ne sont pas bloqués à leur ouverture, les autres applications peuvent accéder aux fichiers).
    • n'est pas associé à une analyse, le mode de blocage effectué sur les fichiers de données est mono-utilisateurs : les fichiers sont totalement bloqués en lecture et en écriture dès leur ouverture. Ce mode empêche tout autre application d'accéder aux fichiers déjà ouverts par l'application en cours.
WEBDEV - Code ServeurAjaxOLE DBConnecteurs Natifs (Accès Natifs)

Fonction HDéclareExterne : Utilisation avec les Connecteurs Natifs et/ou le provider OLE DB

Par défaut, le nom logique fourni à la fonction HDéclareExterne est considéré comme étant le seul nom de la table. Il est encapsulé en utilisant les caractères d'encapsulation correspondant à la base ou spécifiés par le provider OLE DB avant d'être envoyé à la base (ce qui permet de gérer des noms de table contenant des caractères spéciaux).
Pour fournir un nom de fichier composé de <nom du user>.<nom de la table> (ou suivant la base de données <nom du schéma>.<nom de la table>) dans la fonction HDéclareExterne, il est nécessaire de fournir ces noms déjà formatés (en utilisant les caractères d'encapsulation correspondant à la base de données ou spécifiés par le provider OLE DB).
Exemple pour SQLServer :
Les caractères d'encapsulation sont " ".
Pour changer le nom CLIENT en DBO.CLIENT avec la fonction HDéclareExterne, il est nécessaire de passer la chaîne "DBO"."CLIENT".
Il faut donc utiliser le code suivant :
HDéclareExterne("""DBO"".""CLIENT""", sdClient, "MaConnexion")
Composante : wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Exemple HDéclareExterne + HExécuteRequêteSQL
MaSrce est une Source de Données
HDéclareExterne(Variable_Chemin_Complet_DE_MA_TABLE,"MA_TABLE")

TextReq est une chaîne = [
SELECT * FROM MA_TABLE where Ma_Rubrique ='%1'
]

TextReq=ChaîneConstruit(TextReq,VAR_VAleur_Cherche)

SI HExécuteRequêteSQL(MaSrce, hRequêteDéfaut, TextReq) ALORS
........SI HNbEnr(MaSrce)=1 ALORS
...............SI HLitPremier(MaSrce) ALORS
.........................RENVOYER MaSrce.Ma_Rubrique
.................FIN
..........FIN
FIN
Monsieur MECHI
14 juin 2023
Declaration d'une table dynamique
// Déclaration dynamique du (ou des) fichier(s) utilisé(s) dans la requête
SI HDéclareExterne("CLIENT.FIC", "CLIENT", cnxBase) = Faux ALORS
Erreur(HErreurInfo())
RETOUR
FIN
Baptiste - BLV TECH
20 nov. 2022
Exemple de la syntaxe OLEDB + connexion
gcnxNORTH est une Connexion

gcnxNORTH..MotDePasse="monmotdepasse"
gcnxNORTH..Utilisateur = "sa"
gcnxNORTH..Provider=hOledbSQLServer
gcnxNORTH..BaseDeDonnées = "Northwind"
gcnxNORTH..Serveur = "WIN-DDGVOCMN9FC" // NOM DU SERVEUR

HOuvreConnexion(gcnxNORTH)


sdClients est une Source de Données

HDéclareExterne("Customers",sdClients,gcnxNORTH)

HLitPremier(sdClients)


Trace(sdClients.CompanyName)
Hervé Franco
21 aoû. 2019
Exemple en lien avec la syntaxe ?
Exemple :
// Déclaration d'un fichier FournisseurWD à partir du chemin complet
// du fichier HFSQL Classic (extension .FIC comprise)
HDéclareExterne("C:\GestCom\Fournisseur.fic", "FournisseurWD")
SI ErreurDétectée = Vrai ALORS
// Erreur de déclaration du fichier, on affiche l'erreur
Erreur(HErreurInfo())
FIN

Selon la syntaxe :
// Déclaration d'un fichier FournisseurWD à partir du chemin complet
// du fichier HFSQL Classic (extension .FIC comprise)
si HDéclareExterne("C:\GestCom\Fournisseur.fic", "FournisseurWD") = Faux ALORS
// Erreur de déclaration du fichier, on affiche l'erreur
Erreur(HErreurInfo())
FIN
Jean-Pierre
26 avr. 2019
Restrictions sur Android (suite)
Vous devrez d'abord passer par une requête SQL avec une source de données (pour la requête, et non le fichier). A ce moment-là seulement, vous pourrez faire un HLitPremier/HTrouve/HLitSuivant/etc. sur la source de données correspondant à la requête.

Par exemple :
sdMaRequete est une Source de données
HExécuteRequêteSQL(sdMaRequete , hRequêteDéfaut, "SELECT * FROM Groupe WHERE IDGroupe = " nIDGroupeALire)
HLitPremier(sdMaRequete)
Info("Nom du groupe : " + sdMaRequete.Libelle)

Sans cela, c'est plantage garanti de l'app sur Android (mais pas sur le simulateur, comme dit au début !)
David M.
23 juil. 2018
Restrictions sur Android : Utilisez la bonne syntaxe pour éviter le plantage !
Attention ! Un certain nombre de restrictions sont à prendre en compte sur Android, et qui n'apparaissent pas sur le simuateur interne de Windev Möbile !

Ayant cherché un certain temps pourquoi mon app plantait sur le téléphone et pas sur le simulateur (il me disait que la rubrique du fichier déclaré avec HDeclareExterne n'existait pas), je vous livre la solution ci-dessous :

Vous ne pouvez pas utiliser de source de données pour faire un HDeclareExterne. La déclaration doit être nommée comme le fichier physique.
Par exemple, si le fichier s'appelle Groupe.FIC, son nom doit être "Groupe" entre guillemets (pas une source de données nommée Groupe, ça ne fonctionnera pas non plus) :
HDéclareExterne("Groupe.FIC", "Groupe", cnxBaseDeDonnées)

Par conséquent, oubliez les HLitRecherchePremier et autres fonctions natives nécessitant une source de données pour le HDeclareExterne.
(Suite dans un 2nd commentaire, pas assez de caractères sur un seul com')
David M.
23 juil. 2018

Dernière modification : 18/07/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale