DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL
  • Présentation
  • Principe de la gestion assistée
  • Principe
  • Remarques
  • Fonctionnement standard
  • Erreur de doublons
  • Erreur d'intégrité
  • Erreur de mot de passe
  • Erreur de conflit de modification et de conflit d'état de modification
  • Erreur de blocage
  • Saisie obligatoire (base de données accédée par OLE DB)
  • Réindexation en cours
  • Reconnexion automatique au serveur HFSQL
  • Personnalisation
  • Les différentes solutions
  • Mise en place
  • Des exemples de fenêtres ou pages facilement intégrables
  • Constantes utilisées pour la personnalisation des erreurs
  • Débrancher la gestion assistée
  • Présentation
  • Mise en place
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
Gestion assistée des erreurs HFSQL
ODBCNon disponible avec ce type de connexion
Présentation
WINDEV et WEBDEV intègrent un module de gestion assistée des erreurs HFSQL. Pour les types d'erreurs suivants, une fenêtre ou une page spécifique est automatiquement affichée :
Après chaque fonction HFSQL manipulant un fichier de données, il est nécessaire de vérifier les différents cas d'erreurs pouvant survenir. Si cette vérification n'est pas réalisée, une erreur WLangage est générée et l'application s'arrête.
A tout moment, la fonction HSurErreur permet de personnaliser la gestion assistée des erreurs ou de débrancher cette gestion. Pour chaque type d'erreur, il est possible :
  • Soit de gérer cette erreur par une fenêtre/page spécifique ou par une procédure (pour plus de détails, consultez le paragraphe Gérer une erreur HFSQL par une procédure).
  • Soit de débrancher l'assistance et de gérer l'erreur par programmation (comme en WINDEV 5.5).
Java Dans les applications Java, Android ou Android Widget, il est uniquement possible de personnaliser l'erreur de reconnexion automatique au serveur HFSQL avec la fonction HSurErreur. Par défaut, seule la fenêtre de reconnexion automatique au serveur HFSQL s'affiche. Pour toutes les autres erreurs, il est nécessaire de traiter l'erreur.
Liste des exemples associés :
WD Detection Erreurs HFSQL Exemples didactiques (WINDEV) : WD Detection Erreurs HFSQL
[ + ] Cet exemple didactique réalisé avec WINDEV présente le module de gestion assistée des erreurs HFSQL :
Doublon, Intégrité, Blocage, Mot de passe, Conflit de modification.
Cet exemple présente :
- le fonctionnement par défaut,
- les différentes possibilités de personnalisation de cette gestion assistée.
WD Gestion Erreurs HFSQL Exemples didactiques (WINDEV) : WD Gestion Erreurs HFSQL
[ + ] L'exemple "WD Gestion Erreurs HFSQL" présente de façon didactique la gestion des erreurs HFSQL (doublon, intégrité).
Cet exemple montre comment personnaliser le traitement lorsqu'une erreur est levée.
Principe de la gestion assistée

Principe

Pour simplifier la programmation de la gestion des fichiers de données, le moteur HFSQL gère automatiquement les cas d'erreur les plus courants.
Cette gestion automatique consiste à assister l'utilisateur dans le traitement de l'erreur. En effet, le plus souvent, l'erreur provient d'un problème au niveau des données saisies.
Cette gestion automatique est proposée par défaut et peut être personnalisée ou entièrement débranchée.

Remarques

La gestion assistée des erreurs est disponible pour les fichiers de données au format HFSQL Classic, Hyper File 5.5, pour les fichiers de données manipulés via un Connecteur Natif (également appelé Accès Natif) et pour les fichiers de données manipulés via un provider OLE DB.
Si vos fichiers de données sont manipulés via un provider OLE DB, les éléments suivants sont gérés uniquement :
  • Les erreurs de doublons
    Attention : Certaines erreurs de doublons peuvent ne pas être reconnues comme telles par l'accès OLE DB. Ces erreurs ne seront pas gérées comme des erreurs de doublons mais seront considérées comme des erreurs fatales. Exemple : l'analyse WINDEV et la description de la base externe ne sont pas en phase et la description du fichier dans l'analyse ne contient pas toutes les clés uniques du fichier de données définies sur la base de données.
  • Les erreurs de saisie obligatoire
    Attention : l'erreur de saisie obligatoire apparaît uniquement si le provider OLE DB indique que la rubrique est associée à la propriété "NULL interdit". Dans le cas contraire, l'erreur sera traitée comme une erreur fatale.
Si vos fichiers de données sont manipulés via un Connecteur Natif, seule la gestion du mot de passe obligatoire n'est pas disponible.
Fonctionnement standard

Erreur de doublons

  • Cause de l'erreur
    L'utilisateur ajoute un enregistrement pour lequel la valeur d'une clé unique existe déjà.
    Par exemple, le numéro du département, ainsi que son nom, sont définis comme clés uniques du fichier Cedex dans l'analyse. L'ajout d'un département avec un numéro déjà utilisé provoque une erreur de doublons.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    Si une erreur de doublons est détectée, une fenêtre/page s'affiche, demandant à l'utilisateur de modifier la valeur de l'enregistrement provoquant l'erreur.
  • Traitement de l'erreur
    Vérifiez le résultat de la fonction HErreurDoublon après chaque fonction HFSQL pouvant provoquer une erreur de doublons (HAjoute ou HModifie par exemple). Le libellé exact de l'erreur peut être connu avec la fonction HErreurInfo.

Erreur d'intégrité

  • Cause de l'erreur
    L'utilisateur tente d'ajouter un enregistrement en ne respectant pas les contraintes d'intégrité définies entre les fichiers au niveau de l'analyse.
    Par exemple, les fichiers CEDEX, DEPARTEMENT et REGION sont liés entre eux au niveau de l'analyse. Ces liaisons répondent à des contraintes d'intégrité relationnelles. L'ajout d'un département sans avoir créé la région correspondante entraîne une erreur d'intégrité.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    Lorsque une erreur d'intégrité est détectée, une fenêtre ou une page s'affiche, demandant à l'utilisateur d'annuler l'opération ou de modifier les données saisies.
  • Traitement de l'erreur
    Vérifiez le résultat de la fonction HErreurIntégrité après chaque fonction HFSQL pouvant provoquer une erreur d'intégrité (HAjoute ou HModifie par exemple). Le libellé exact de l'erreur peut être connu avec la fonction HErreurInfo.

Erreur de mot de passe

  • Cause de l'erreur
    Le programme tente de manipuler un fichier protégé par mot de passe (ouverture, première lecture, ...). Le mot de passe n'a pas été spécifié par programmation : une erreur de mot de passe survient.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    Lorsque une erreur de mot de passe est détectée, une fenêtre ou une page s'affiche permettant à l'utilisateur de saisir le mot de passe du fichier.
  • Traitement de l'erreur
    Vérifiez le résultat de la fonction HErreurMotDePasse après chaque fonction HFSQL pouvant provoquer une erreur de mot de passe (HOuvre par exemple ou dès la première fonction HFSQL manipulant le fichier). Le libellé exact de l'erreur peut être connu avec la fonction HErreurInfo.

Erreur de conflit de modification et de conflit d'état de modification

  • Cause de l'erreur
    Lors de l'utilisation d'une application en réseau, des conflits peuvent survenir suite à la saisie de données contradictoires par différents utilisateurs.
    Par exemple :
    1. L'utilisateur X édite la fiche du département "Cantal".
    2. L'utilisateur Y édite la fiche du département "Cantal".
    3. L'utilisateur X renomme le département en "Cantal_01".
    4. L'utilisateur Y modifie le nom du département ("Cantal_02") et enregistre. Lors de cet enregistrement, il y a un conflit de modification.
      Un conflit de modification apparaît.
      Un conflit d'état de modification apparaît par exemple si l'utilisateur X supprime la fiche.
      Les différents cas sont récapitulés dans le tableau suivant :
      ActifConflit de modificationConflit de modificationConflit de modification
      Enregistrement luActifRayéSupprimé
      Enregistrement sur disque
      RayéConflit d'état de modificationConflit de modificationConflit de modification
      SuppriméConflit d'état de modificationConflit d'état de modificationXXXX
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    • En cas de conflit lors de la modification d'un enregistrement, une fenêtre apparaît proposant à l'utilisateur les différentes valeurs possibles pour l'enregistrement :
      • la valeur lue dans le fichier (avant modification).
      • la valeur modifiée par un autre utilisateur.
      • la valeur saisie par l'utilisateur en cours.
        L'utilisateur peut alors choisir la valeur de la rubrique qui sera enregistrée.
    • En cas de conflit d'état lors de la modification d'un enregistrement, une fenêtre apparaît proposant à l'utilisateur :
      • soit de réactiver les données supprimées.
      • soit de laisser les données dans leur état.
        L'utilisateur peut alors choisir la valeur de la rubrique qui sera enregistrée.
  • Traitement de l'erreur
    • Pour les erreurs de conflits de modification, vérifiez le résultat de la fonction HErreurModification après chaque fonction HFSQL pouvant provoquer cette erreur (par exemple HModifie). Le libellé exact de l'erreur peut être connu avec la fonction HErreurInfo.
    • Pour les erreurs de conflit d'état de modification, vérifiez le résultat de la fonction HErreurEtatModification après chaque fonction HFSQL pouvant provoquer cette erreur (par exemple HModifie). Le libellé exact de l'erreur peut être connu avec la fonction HErreurInfo.

Erreur de blocage

  • Cause de l'erreur
    Dans une application réseau, il est possible de bloquer un enregistrement ou un fichier, pour effectuer des opérations spécifiques par exemple.
    Lorsqu'un poste du réseau tente d'accéder à un enregistrement bloqué, une erreur de blocage apparaît.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    En cas d'erreur de blocage, la gestion des blocages (vérification si le fichier est bloqué, traitement du blocage) est automatiquement réalisée par le moteur HFSQL.
    Une fenêtre/page apparaît indiquant à l'utilisateur que l'enregistrement ou le fichier est bloqué et lui proposant de retenter l'opération ou de l'annuler. En cas d'annulation, l'application continue de s'exécuter normalement.
  • Traitement de l'erreur
    Vérifiez le résultat de la fonction HErreurBlocage après chaque fonction HFSQL pouvant provoquer une erreur de blocage.

Saisie obligatoire (base de données accédée par OLE DB)

  • Cause de l'erreur
    Certaines rubriques du fichier manipulées attendent obligatoirement une valeur. Si cette valeur n'a pas été renseignée, une erreur de saisie obligatoire apparaît.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    En cas de valeur non renseignée, la gestion de saisie obligatoire est automatiquement réalisée par le moteur HFSQL.
    Une fenêtre apparaît indiquant à l'utilisateur que la rubrique doit être renseignée et lui propose de saisir la valeur de la rubrique.
  • Traitement de l'erreur
    Le numéro d'erreur associé à ce problème est 70710 : Valeur de rubrique obligatoire.
    Ces numéros d'erreurs peuvent être connus avec la fonction HErreur.

Réindexation en cours

  • Cause de l'erreur
    Le fichier manipulé est actuellement en cours de réindexation. Il est impossible de manipuler le fichier (lecture, écriture, ...) pendant cette réindexation.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    Une fenêtre apparaît indiquant que le fichier est en cours de réindexation (appelée aussi réorganisation). Cette fenêtre est affichée pendant toute la durée de la réindexation et ne peut être fermée. Une jauge de progression indique l'état de la réindexation.

    WINDEV Remarque : Pour éviter les effets de clignotement, les fenêtres de réindexation livrées (fenêtre automatique ou maintenance par un autre poste) s'affichent uniquement si la réindexation risque de durer plus de 2 secondes. Dans ce cas, les fenêtres de ré-indexation apparaissent au bout de 0.7 secondes. Ce mécanisme n'est pas appliqué sur les fenêtres utilisées par la fonction HSurErreur. Pour intégrer ce mécanisme dans vos fenêtres personnalisées, consultez le code de la fenêtre "Reindexation.wdw" livrée dans le répertoire "\HyperFileSQL - Fenêtres assistance automatique".
  • Traitement de l'erreur
    Le numéro d'erreur associé à ce problème est 70720 : Une ré-indexation est en cours sur le fichier
    Ces numéros d'erreurs peuvent être connus avec la fonction HErreur.

Reconnexion automatique au serveur HFSQL

La reprise de connexion automatique est une fonctionnalité très utile car elle traite l'aspect de la déconnexion en cours d'usage.
Typiquement, ce problème se pose avec des matériels dont la connexion avec le serveur n'est pas assurée en permanence (les appareils mobiles en particulier, Wi-Fi, 3G, ...). En connexion Wi-Fi par exemple, la liaison entre un appareil distant et le serveur peut s'interrompre un court instant. Ce type de coupure peut également intervenir sur des réseaux filaires classiques.
Lorsque l'application est de nouveau "connectée", il est utile de reprendre l'application là où la communication a été interrompue. Il est bien sur nécessaire que les buffers soient correctement renseignés. Grâce à la gestion automatique de la reprise, l'ensemble des buffers est mémorisé et réaffecté. L'application peut ainsi continuer à s'exécuter sans erreur, comme si la connexion ne s'était pas interrompue.
  • Cause de l'erreur
    L'application a perdu une ou plusieurs connexions à un ou plusieurs serveurs HFSQL. Les causes peuvent être par exemple :
    • perte de la liaison GPRS,
    • intervention sur le réseau,
    • mise à jour du serveur,
    • crash de la machine serveur,
    • mise en veille de la machine cliente.
  • Gestion assistée par défaut disponible en WINDEV, WINDEV Mobile et WEBDEV
    Lorsque l'application cliente n'a plus accès au serveur, une fenêtre/page s'affiche automatiquement, informant que la connexion avec le serveur n'est pas disponible. Cette fenêtre tente une reconnexion à intervalle de temps régulier. Lorsque le serveur est à nouveau disponible, la reconnexion est automatiquement réalisée et la fenêtre disparaît. L'utilisateur peut continuer à utiliser l'application.
    Pour mettre en place la reconnexion automatique, il suffit de :
    • recompiler l'application cliente (version supérieure à 15).
    • installer le serveur HFSQL Client/Serveur (version supérieure à 15).
  • Traitement de l'erreur
    Cette erreur est une erreur fatale.
Attention : La reconnexion automatique n'est pas possible dans les cas suivants :
  • L'application possède une transaction en cours.
  • L'application a bloqué un fichier (en lecture/écriture).
  • L'application a bloqué un fichier en lecture/écriture et une autre application a modifié un enregistrement de ce fichier pendant la période où l'application n'était pas connectée.
  • Le blocage a été effectué par une des fonctions suivantes : HPremier, HSuivant, HPrécédent ou HDernier.
Personnalisation

Les différentes solutions

WINDEV, WEBDEV et WINDEV Mobile offrent la possibilité de personnaliser la gestion des erreurs HFSQL.
Il est possible :
  • soit d'utiliser des procédures personnalisées.
    Une procédure spécifique de votre application est automatiquement exécutée dès qu'une erreur HFSQL est rencontrée.
    Remarque : Il est possible de définir une procédure pour chaque fichier et chaque type d'erreur.
  • soit d'utiliser des fenêtres ou des pages personnalisées : les fenêtres et pages standard du moteur HFSQL sont remplacées par des fenêtres ou pages de votre application.
    Remarque : Il est possible de définir une fenêtre/page pour chaque fichier et chaque type d'erreur.
WINDEVWindowsHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Mise en place

Pour mettre en place la personnalisation de la gestion assistée des erreurs HFSQL, il suffit de :
  1. Pour chaque type d'erreur, créer la procédure, la fenêtre ou la page permettant de personnaliser l'erreur. Une même fenêtre, page ou procédure peut gérer plusieurs types d'erreur. Cette fenêtre, page ou procédure doit renvoyer une constante spécifique en fonction du traitement à faire (voir paragraphe ci-dessous).
  2. Définir la personnalisation des erreurs avec la fonction HSurErreur.
WINDEVWindowsHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Des exemples de fenêtres ou pages facilement intégrables

Les fenêtres et pages d'erreur utilisées par défaut et présentées dans les paragraphes précédents sont livrées (avec leur code WLangage) à titre d'exemple.
WINDEV Pour WINDEV, ces fenêtres sont disponibles dans le répertoire "\Programs\Data\Preset Windows\FR\HyperFileSQL - Fenêtres assistance automatique".
Type d'erreurFenêtre WINDEVPage WEBDEV
Erreur de doublonsDoublon.wdwDoublon_WB.wwh
Erreur d'intégritéIntegrite.wdwIntegrite_WB.wwh
Erreur de mot de passeMotDePasse.wdwMotDePasse_WB.wwh
Erreur de conflit de modification et de conflit d'état de modificationModif.wdw
ModifEtat.wdw
Modif_WB.wwh
ModifEtat_WB.wwh
Erreur de blocageBlocage.WDWBlocage_WB.wwh
Saisie obligatoireSaisieObligatoire.WDW
Réindexation en coursReindexation.WDWReindexation_WB.wwh
Reconnexion automatiqueReconnexion.WDWReconnexion_WB.wwh

Vous pouvez inclure ces fenêtres ou pages dans vos projets, les personnaliser, les traduire et les passer en paramètre à la fonction HSurErreur.
Pour inclure ces fenêtres/pages dans vos projets : sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Des éléments WINDEV/WEBDEV/WINDEV Mobile et leurs dépendances".
Pour plus de détails sur la traduction de ces éléments, consultez Saisie de l'interface de votre application dans les différentes langues
WINDEVWindowsHFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Constantes utilisées pour la personnalisation des erreurs

La procédure, la fenêtre ou la page permettant de personnaliser l'erreur devra renvoyer une des constantes présentées dans le tableau ci-dessous.
En fonction de la constante renvoyée, le traitement correspondant sera effectué.
opAnnulerLa fonction ayant déclenché l'erreur renvoie une erreur de la même manière que si la gestion assistée avait été désactivée.
Remarque : Pour les erreurs de perte de connexion, l'erreur est fatale.
opFinProgrammeLa fonction ayant déclenché l'erreur renvoie une erreur et le programme s'arrête. Équivalent à une ligne de code de type :

SI PAS <Fonction HFSQL> ALORS FinProgramme()
opFinTraitementLa fonction ayant déclenché l'erreur renvoie une erreur et le traitement en cours s'arrête. Équivalent à une ligne de code de type :

SI PAS <Fonction HFSQL> ALORS DonneFocusEtRetourUtilisateur()
Java Cette constante n'est pas disponible.
opRéessayerLa fonction ayant déclenché l'erreur est ré-exécutée.
opRelanceProgrammeTermine l'application et relance automatiquement l'application.

Remarques :
  • Personnalisation des erreurs de modification : Si la procédure, la fenêtre ou la page appelée lors du conflit de modification renvoie la constante opRéessayer sans rien faire d'autre, les valeurs seront écrites dans le fichier sans provoquer un nouveau conflit de modification.
  • Pour différencier un conflit de modification et un conflit d'état, utilisez la fonction HErreurEtatModification.
Débrancher la gestion assistée

Présentation

WINDEV, WEBDEV et WINDEV Mobile offrent la possibilité de débrancher entièrement le système de gestion automatique des erreurs. Dans ce cas, il est nécessaire de vérifier dans l'application les différents cas d'erreurs pouvant survenir. Si cette vérification n'est pas réalisée, une erreur WLangage est générée et l'application s'arrête.

Mise en place

Pour débrancher complètement la gestion automatique des erreurs, il suffit d'utiliser la fonction HSurErreur en spécifiant une chaîne vide en nom de fenêtre, de page ou de procédure.
Dans ce cas, après chaque fonction HFSQL pouvant provoquer une erreur, il est alors nécessaire de vérifier le résultat d'une ou de plusieurs des fonctions suivantes :
HErreurBlocageVérifie si une erreur de blocage est survenue.
HErreurDoublonVérifie si une erreur de doublons est survenue.
HErreurEtatModificationRenvoie l'état d'un enregistrement lors d'un conflit de modification.
HErreurIntégritéVérifie si une erreur d'intégrité est survenue.
HErreurMotDePasseVérifie si une erreur due à un mot de passe erroné a été rencontrée.

Le libellé exacte de l'erreur peut être alors connu avec la fonction HErreurInfo.
Il est possible de rebrancher la gestion assistée grâce à la fonction HSurErreur
Remarque : Pour les autres erreurs (modification, saisie obligatoire, ré-indexation en cours), aucune vérification n'est nécessaire. Les numéros d'erreurs associés à ces problèmes sont :
  • 70700 : Conflit de modification
  • 70710 : Valeur de rubrique obligatoire
  • 70720 : Une ré-indexation est en cours sur le fichier
Ces numéros d'erreurs peuvent être connus avec la fonction HErreur.
Liste des exemples associés :
WD Qui bloque Exemples didactiques (WINDEV) : WD Qui bloque
[ + ] Cet exemple montre comment signaler aux utilisateurs d'une base de données HFSQL en réseau "qui" bloque un enregistrement inaccessible.

Dans cet exemple, nous abordons les principaux thèmes suivants :
1/ la gestion des accès concurrentiels
2/ le rafraîchissement automatique par timer
3/ la gestion d'un fichier "système" pour mémoriser des informations sur les verrous posés.

Résumé de l'exemple livré avec WINDEV :
Cet exemple réalisé avec WINDEV est composé de 2 projets :
- WD Qui bloque : application de test gérant un fichier "client" en réseau
- WD Superviseur blocages : outil d'aministration pour visualiser les verrous posés et éventuellement forcer un déblocage.
Un utilisateur peut avoir conservé une fiche de saisie ouverte depuis un certain temps ; ce qui risque de gêner les autres utilisateurs.
Le bouton 'Libérez SVP' permet d'envoyer un message à l'utilisateur concerné pour lui demander de libérer l'enregistrement.
Le bouton 'Débloquer !' permet de forcer le déblocage de l'enregistrement.
Attention : Cette opération va envoyer un message forçant la fermeture de l'application ayant effectué le blocage.
WD Gestion Erreurs HFSQL Exemples didactiques (WINDEV) : WD Gestion Erreurs HFSQL
[ + ] L'exemple "WD Gestion Erreurs HFSQL" présente de façon didactique la gestion des erreurs HFSQL (doublon, intégrité).
Cet exemple montre comment personnaliser le traitement lorsqu'une erreur est levée.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 06/09/2023

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