Voir le flux RSS

Le Blog de DSR57 - Programmation WinDev

WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade

Noter ce billet
par , 11/06/2015 à 22h42 (2735 Affichages)
Ce billet traite de la fonction HSupprimeTout et les contraintes d'intégrité dans l'EDI WinDev


Définition

Nom : definition-web.jpg
Affichages : 1419
Taille : 11,6 Ko

Les contraintes d'intégrité référentielle en cascade définissent les actions exécutées par un SGBD lorsqu'un utilisateur tente de supprimer ou de mettre à jour une clé vers laquelle pointent des clés étrangères existantes.

Contexte technique

Nom : Contexte.jpg
Affichages : 1462
Taille : 7,6 Ko

WinDev : 19, 20
BDD : HF classic et HF SQL

Une table commande avec les colonnes suivantes

Nom Description Type Taille
ID Identifiant Id. automatique 8
Date Date de la commande Date 8
Numero Numéro interne de la commande Texte 10

Une table DetailCommande avec les colonnes suivantes :

Nom Description Type Taille
ID Identifiant Id. automatique 8
IDCommande Identifiant de la commande Numerique 8
Ligne Numéro de la ligne de la commande Numérique 4
Article Id de l'article Numerique 4

cardinalités : 0,n --- 1,1
contrainte d'intégrité pour suppression : "Supprimer le commande et tous ses DetailCommande".


Suppression du contenu

Nom : Supprimer.jpg
Affichages : 3648
Taille : 8,5 Ko


Afin de tester le respect de la contrainte d'intégrite, nous allons supprimer l'ensemble du conte de la table Commande. WinDev met à notre disposition deux fonctions Hyperfile :
  • HSupprime
  • HSupprimeTout


Suppression via HSupprime


WinDev permet de supprimer un enregistrement avec la fonction HSupprime, pour supprimer l'ensemble des enregistrements nous mettons en place une boucle qui parcours le fichier.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
POUR TOUT EXPRESS_Commande 
	HSupprime(EXPRESS_Commande)
FIN
Nous constatons que le fichier CommandeDetail est vide.

Suppression via HSupprimeTout


WinDev permet de supprimer l'ensemble du contenu d'un fichier avec la fonction HsupprimeTout, mettons en pratique cette fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
HSupprimeTout(EXPRESS_Commande)
Comparé au code précédent, nous avons un code plus concis, plus clair et qui se comprend très rapidement. Cette fonction à que des avantages ... mais nous n'avons pas vérifié le contenu du fichier CommandeDetail. Surprise, celui-ci contient tous les enregistrements, la fonction HSupprimeTout ne prend pas en compte la contrainte d'intégrité définie. J'ai effectué une requête au support technique qui m'a confirmé la non prise en charge, voici lleur réponse :

Bonjour Monsieur xxxxxx,

Merci pour ces éléments. En fait HSupprimeTout ne réalise pas une suppression classique, à la manière de hSupprime. Cette commande est plutôt une version rapide de hCreation(), car notamment, elle réinitialise les identifiants automatiques.

Cette commande n'active pas le contrôle d'intégrité.

Je suis sincèrement désolé de la gêne occasionnée et je vous remercie de votre coopération.

L'équipe du Support Technique Gratuit reste à votre disposition.

Conclusion

Avec cette exemple et la confirmation de PC-Soft, nous avons constaté la non prise charge les contraintes d'intégrité par la fonction HSupprimeTout, cette constatation ne rend pas la fonction inutilisable. Il est possible de l'utiliser mais dans le cas d'utilisation de contraintes d'intégrité, vous devrez gérer celle-ci manuellement. A voir si Pc-Soft améliorera cette fonction dans la version 21

Affaire à suivre

Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Viadeo Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Twitter Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Google Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Facebook Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Digg Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Delicious Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog MySpace Envoyer le billet « WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade » dans le blog Yahoo

Mis à jour 16/07/2015 à 22h53 par dsr57

Catégories
WinDev

Commentaires