DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Caractéristiques de la table créée
  • Les différents fichiers créés
  • Gestion du mot de passe
  • Gestion des erreurs fatales lors de la création d'une table
  • Gestion des alphabets non latins
  • Réplication: Plage d'identifiants
  • Priorité pour la définition de l'emplacement des fichiers du journal
  • Création ou ouverture d'une table existante
  • Gestion des index
  • Création de la table à partir de sa description
WINDEV
WindowsLinuxJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac Catalyst
Autres
Procédures stockées
Effectue les opérations suivantes:
  • Si la table n'existe pas, crée à vide une table (fichier d'extension ".FIC") avec la table d'index et la table mémo si nécessaire.
    La fonction est équivalente à la fonction HCrée.
  • Si la table existe, ouvre la table.
    La fonction est alors équivalente à la fonction HOuvre.
    Pour optimiser l'appel à la fonction HCréeSiInexistant, l'ouverture de la table peut être également réalisée uniquement au premier accès réalisé sur la table (en utilisant la constante hOuvertureDifférée).
Remarque: Il est possible d'activer la création automatique des tables inexistantes lors de la description du projet (onglet "Tables" de la description du projet, option "Créer les tables automatiquement au moment de leur ouverture"). La fonction HCréeSiInexistant est automatiquement utilisée si la table n'existe pas lors de sa première manipulation.
WEBDEV - Code ServeurHFSQL Classic Si la table est journalée, il est possible de préciser l'emplacement des tables journaux.
HFSQL Client/Serveur Si des contraintes d'intégrité ont été définies et si elles sont gérées, les liaisons sont mises à jour par le serveur lors de la création de la table.
// Création de toutes les tables décrites dans le schéma des données 
// avec le mot de passe "PSW"
HCréationSiInexistant("*", "PSW")
// Création de la table Commande (décrit dans le schéma des données)
HCréationSiInexistant(Commande)
Syntaxe
<Résultat> = HCréeSiInexistant([<Table> [, <Mot de passe> [, <Chemin du fichier JNL> [, <Chemin du fichier JournalOperation>]]] [, <Option>]])
<Résultat> : Booléen
  • Vrai si la table a été créée ou ouverte,
  • Faux en cas de problème. La fonction HErreur permet d'identifier l'erreur. En cas d'erreur fatale, un traitement spécifique est nécessaire pour continuer le programme et vérifier si la table a été créée (voir Notes).
<Table> : Chaîne de caractères optionnelle
Nom de la table à utiliser.
  • Si ce nom n'est pas spécifié, la fonction HCréeSiInexistant va manipuler la dernière table utilisée par la dernière fonction de gestion HFSQL (fonction commençant par la lettre H).
  • Si ce paramètre est égal à "*", toutes les tables du schéma des données en cours seront créées ou ouvertes. Si un mot de passe est précisé, ce mot de passe est utilisé pour toutes les tables.
    Cas des projets multi-schémas des données: Toutes les tables de tous les schémas des données seront créées ou ouvertes.
  • Ce paramètre peut également correspondre au nom d'un groupe de fichiers (ou perso-dossier) défini dans le schéma des données (non disponible en Android et Android Widget). Si un mot de passe est précisé, ce mot de passe est utilisé pour toutes les tables du groupe.
Attention: ce paramètre ne peut pas correspondre à une variable de type Description de fichier.
<Mot de passe> : Chaîne de caractères optionnelle ou Chaîne secrète
  • Mot de passe associé à la table.
  • Chaîne vide ("") si aucun mot de passe n'est utilisé.
Nouveauté 2025
Utilisation de chaînes secrètes : Si vous utilisez le coffre-fort de chaînes secrètes, le type de la chaîne secrète utilisable pour ce paramètre doit être "Chaîne Ansi ou Unicode".
Pour plus de détails sur les chaînes secrètes et l'utilisation du coffre-fort, consultez Coffre-fort de chaînes secrètes.
<Chemin du fichier JNL> : Chaîne de caractères optionnelle
Chemin d'accès au fichier JNL associé à la table journalée. Ce paramètre est pris en compte uniquement si la table est journalée. Dans ce cas, le fichier <Nom du fichier>JNL.fic sera créé à l'emplacement spécifié.
HFSQL Client/Serveur Ce paramètre ne doit pas être précisé. En effet, en HFSQL Client/Serveur, le chemin du fichier JNL est fixé et ne peut pas être modifié.
PHP Ce paramètre est ignoré.
<Chemin du fichier JournalOperation> : Chaîne de caractères optionnelle
Chemin d'accès de la table JournalOperation et de la table JournalIdentification associée à la table journalée. La table JournalOperation contient toutes les opérations effectuées sur la table journalée. Ce paramètre est pris en compte uniquement si la table est journalée.
HFSQL Client/Serveur Ce paramètre ne doit pas être précisé. En effet, en HFSQL Client/Serveur, le chemin du fichier des opérations est fixé et ne peut pas être modifié.
PHP Ce paramètre est ignoré.
<Option> : Constante optionnelle
Optimisation de l'ouverture des tables existantes.
hChangeAlphabetL'alphabet défini avec la fonction ChangeAlphabet sera pris en compte dans la nouvelle table. Les tris, recherches (ou autres) sur des clés de type chaîne (chaînes, caractères, date et heure) seront effectuées selon cet alphabet.
hOuvertureDifféréeSi la table existe déjà, elle ne sera ouverte que lors du premier accès à la table. Si la table n'existe pas, elle est créée et ouverte.
HFSQL Classic Cette constante est disponible uniquement en mode HFSQL Classic.
hSansLiaisonGestion de l'intégrité: Les liaisons ne sont pas mises à jour sur le serveur (création, modification, suppression selon le cas).
Rappel: Par défaut, lors de la création d'une table, les liaisons sont mises à jour sur le serveur.
HFSQL Client/Serveur Cette constante est disponible uniquement en mode HFSQL Client/Serveur.

PHP Ce paramètre est ignoré.
Remarques
WEBDEV - Code ServeurAjaxHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Caractéristiques de la table créée

Les caractéristiques de la table créée sont les suivantes:
  • Nom de la table:
    Nom physique défini lors de la description de la table sous l'éditeur de schémas des données. Ce nom peut être modifié avant la création de la table grâce à la fonction HChangeNom.
  • Répertoire de la table:
    Répertoire défini lors de la description de la table sous l'éditeur de schémas des données. Ce répertoire peut être modifié avant la création de la table par les fonctions HChangeRep et HSubstRep.
    Remarque: Si l'UAC est actif (Windows Vista et supérieur), la localisation des données est spécifique: les données ne seront pas localisées dans le répertoire de l'application mais dans un répertoire spécifique de Windows. Dans ce cas, il est nécessaire de créer le répertoire des données de l'application (le chemin peut être obtenu à l'aide de la fonction fRepDonnéesUtilisateur).
  • L'ordre des rubriques créées dans le fichier physique est l'ordre physique des rubriques créées dans le schéma des données et non l'ordre logique.
  • Contenu de la table:
    La table créée est vide ce qui ne signifie pas que sa taille est nulle (la table contient un entête décrivant sa structure).
Remarque: Si la table existait déjà (même nom, même répertoire), cette table est ouverte. Si la constante hOuvertureDifférée est spécifiée, la table ne sera ouverte que lors du premier accès (permet d'optimiser la vitesse de la fonction HCréeSiInexistant).
WEBDEV - Code ServeurAjaxHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Les différents fichiers créés

Lors de la création d'une table, les fichiers suivants peuvent être créés en plus de la table:
  • Un fichier d'index (d'extension ".NDX") si une ou plusieurs clés ont été définies dans la description de la table.
  • Un fichier mémo (d'extension ".MMO") si une ou plusieurs rubriques de type mémo ont été définies dans la description de la table.
  • Un fichier journal (d'extension ".JNL"). Ce tableau est créé uniquement si l'option correspondante a été sélectionnée lors de la description de la table (voir paragraphe suivant).
    PHP Ce fichier n'est pas créé.
  • Un fichier <NomProjet>.REP. Ce fichier contient la liste des tables manipulées par l'application. Ce fichier est créé (ou complété) si la gestion du .REP est active (fonction HGèreREP). Si la constante hOuvertureDifférée est spécifiée, le .REP sera mis à jour à l'ouverture automatique de la table réalisée lors du premier accès à la table. Pour plus de détails sur le fichier .REP, consultez Fichier .REP.

Gestion du mot de passe

Le mot de passe peut être défini:
  • directement à la création ou à l'ouverture de la table avec la fonction HCréeSiInexistant.
  • avant la création de la table grâce à la fonction HPasse.Attention: Le mot de passe est indépendant du cryptage des données. Le cryptage des données doit être configuré lors de la description de la table dans l'éditeur de schémas des données (Onglet "Détail").
PHPConnecteurs Natifs (Accès Natifs) Le mot de passe n'est pas associé à une table mais à une base de données. Ce mot de passe doit être indiqué lors de la connexion (fonction HConnecte).

Gestion des erreurs fatales lors de la création d'une table

En cas d'erreur fatale lors de la création d'une table, il peut être intéressant de continuer le programme tout en vérifiant si la table a tout de même été créée. Pour cela, il est conseillé de faire le traitement d'exception suivant:
QUAND EXCEPTION DANS
	HCréationSiInexistant(PERE)
FAIRE
	Erreur("Erreur HFSQL: " + HErreur())
SINON
	Trace("fichier créé")
FIN
WEBDEV - Code ServeurAjaxHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Gestion des alphabets non latins

Si la constante hChangeAlphabet est précisée, l'alphabet utilisé dans la table sera celui précisé par la fonction ChangeAlphabet. Les tris, recherches, ... sur des clés de type chaîne (Chaînes, caractères, date et heure) seront effectuées selon cet alphabet.
L'alphabet utilisé pourra ensuite être modifié avec la fonction HRéindexe.
Remarque: la taille des rubriques de type chaîne spécifiée dans le schéma des données est une taille en octets et non en caractères. Selon l'alphabet utilisé, il peut être nécessaire d'augmenter la taille de la rubrique (par exemple si les caractères utilisés sont codés sur 2 octets).
Pour plus de détails sur la gestion des alphabets non latins dans les tables, consultez Gérer des alphabets spécifiques dans des tables.
WEBDEV - Code ServeurAjaxHFSQL ClassicHFSQL Client/ServeurHyper File 5.5

Réplication: Plage d'identifiants

Les identifiants automatiques des fichiers des réplicas abonnés utilisent une plage d'identifiants différente de celle du fichier de réplica maître et des autres fichiers de réplicas abonnés.
Cette plage d'identifiants automatiques est inscrite dans l'entête de chaque table (extension ".FIC").
Cette plage est initialisée:
  • lors de la création d'une table (fonctions HCrée, HCréeSiInexistant).
  • grâce à l'outil WDReplic.
  • lors de l'utilisation de la fonction HInitAbonné.
Pour plus de détails, consultez les conséquences de la mise en place de la réplication.
WEBDEV - Code ServeurAjaxHFSQL ClassicHyper File 5.5

Priorité pour la définition de l'emplacement des fichiers du journal

La définition de l'emplacement des fichiers journal se fait selon l'ordre de priorité suivant:
  1. Emplacement spécifié lors de la création de la table journalée (fonction HCréeSiInexistant).
  2. Emplacement spécifié par la fonction HChangeRepJNL.
  3. Emplacement spécifié dans le schéma des données.
  4. Emplacement de la table journalée.
Si une autre application utilise la fonction HDéclareExterne sur une table journalée, les modifications effectuées par cette application sont enregistrées dans les fichiers journaux spécifiés dans l'entête de la table HFSQL journalée.
HFSQL Client/Serveur L'emplacement des fichiers du Journal est fixe et ne peut pas être modifié. Pour plus de détails, consultez Fichiers du journal en mode Client/Serveur.
WEBDEV - Code ServeurOLE DB

Création ou ouverture d'une table existante

Si la table existe déjà, la table est ouverte.
Si la table n'existe pas, la table est créée. Lors d'une création de table, WINDEV et WEBDEV tentent de créer les rubriques dans le type OLE DB correspondant au type HFSQL. Si ce type n'est pas supporté, le moteur HFSQL essaye successivement tous les types OLEDB "compatibles" jusqu'à trouver un type supporté par la base OLEDB.
WEBDEV - Code ServeurPHPConnecteurs Natifs (Accès Natifs)

Gestion des index

Si l'ajout d'un index échoue, aucun message d'erreur n'est renvoyé par la fonction HCréeSiInexistant. La table est simplement créée sans l'index posant problème. Dans ce cas, il est possible de trouver des doublons dans une rubrique considérée comme clé unique par WINDEV ou WEBDEV si la base de données externe ne peut pas gérer de clé unique.

Création de la table à partir de sa description

Il est possible de créer directement la table à vide à partir de sa description dans l'éditeur de schémas des données. Il suffit de sélectionner l'option "Créer la table" du menu contextuel de la table (dans le graphe du schéma des données) et de sélectionner le répertoire dans lequel la table doit être créée.
Composante: wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 16/05/2025

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