- 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 une table, 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).
Principe de la gestion assistée Principe Pour simplifier la programmation de la gestion des tables, 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. Nouveauté 2025Remarques La gestion assistée des erreurs est disponible pour les tables au format HFSQL Classic, Hyper File 5.5, pour les tables manipulées via un Connecteur Natif (également appelé Accès Natif) et pour les tables manipulées via un provider OLE DB. Si vos tables sont manipulées 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. Le schéma des données WINDEV et la description de la base externe ne sont pas en phase et la description de la table dans le schéma des données ne contient pas toutes les clés uniques de la table 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 tables sont manipulées 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 de la table Cedex dans le schéma des données. 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 tables au niveau du schéma des données. Par exemple, les tables CEDEX, DEPARTEMENT et REGION sont liées entre elles au niveau du schéma des données. 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 une table protégée 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 de la table. - 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 la table). 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 la table (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 une table, 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 la table est bloquée, 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 la table 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 de la table manipulée 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
La table manipulée est actuellement en cours de réindexation. Il est impossible de manipuler la table (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 la table 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 la table 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é une table (en lecture/écriture).
- L'application a bloqué une table en lecture/écriture et une autre application a modifié un enregistrement de cette table 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 table 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 table 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 la table
Ces numéros d'erreurs peuvent être connus avec la fonction HErreur.
Documentation également disponible pour…
|
|
|