- 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
Gestion assistée des erreurs HFSQL
Non disponible avec ce type de connexion
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).
Liste des exemples associés :
|
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.
|
|
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. 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 :- L'utilisateur X édite la fiche du département "Cantal".
- L'utilisateur Y édite la fiche du département "Cantal".
- L'utilisateur X renomme le département en "Cantal_01".
- 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 :
| | | | Actif | Conflit de modification | Conflit de modification | Conflit de modification | Enregistrement lu | Actif | Rayé | Supprimé | Enregistrement sur disque | Rayé | Conflit d'état de modification | Conflit de modification | Conflit de modification | Supprimé | Conflit d'état de modification | Conflit d'état de modification | XXXX |
- 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.
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.
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.
| | | Type d'erreur | Fenêtre WINDEV | Page WEBDEV | Erreur de doublons | Doublon.wdw | Doublon_WB.wwh | Erreur d'intégrité | Integrite.wdw | Integrite_WB.wwh | Erreur de mot de passe | MotDePasse.wdw | MotDePasse_WB.wwh | Erreur de conflit de modification et de conflit d'état de modification | Modif.wdw ModifEtat.wdw | Modif_WB.wwh ModifEtat_WB.wwh | Erreur de blocage | Blocage.WDW | Blocage_WB.wwh | Saisie obligatoire | SaisieObligatoire.WDW | | Réindexation en cours | Reindexation.WDW | Reindexation_WB.wwh | Reconnexion automatique | Reconnexion.WDW | Reconnexion_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". 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 : 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 HSurErreurRemarque : 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 :
|
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.
|
|
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.
|
Documentation également disponible pour…
|
|
|