PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Savoir si un enregistrement est modifié dans un fenêtre ?
Savoir si un enregistrement est modifié dans un fenêtre ?
Débuté par obtuli, 08 nov. 2019 10:27 - 9 réponses
Membre enregistré
948 messages
Popularité : +11 (13 votes)
Posté le 08 novembre 2019 - 10:27
Bonjour,

Y a t-il une fonction ou une propriété qui permet de savoir simplement qu'une table à été modifiée dans une fenêtre ?
(dés qu'un champ lié à une rubrique de la table est modifié).

Le but est de proposer à l’utilisateur de sauver ses données s'il a modifié un champ avant de changer d’enregistrement.

Actuellement j'utilise le code "A chaque modification" du champ ou de la fenêtre, mais c'est fastidieux pour chaque champ et pour la fenêtre c'est trop global quand il y a plusieurs tables pour saloir laquelle sauver plutôt que de tout sauver systématiquement.

Merci

OB
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 08 novembre 2019 - 10:33
Peut-être ceci :
https://doc.pcsoft.fr/fr-FR/?2510080

Ou ceci:
https://doc.pcsoft.fr/fr-FR/?1000022407&name=HSurveille

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Message modifié, 08 novembre 2019 - 10:35
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 08 novembre 2019 - 11:38
Hello,

Tu dois pouvoir utiliser la fonction MaFenetre..Modifié
Si vrai alors tu peux faire ta sauvegarde.
Membre enregistré
3 882 messages
Popularité : +227 (347 votes)
Posté le 08 novembre 2019 - 11:53
Tu peux aussi regrouper les champs de saisie :
-Soit dans un superchamp
-Soit dans un groupe
et utiliser la propriété ..Modifié dessus

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
948 messages
Popularité : +11 (13 votes)
Posté le 08 novembre 2019 - 13:27
Bonjour,

Merci pour vos réponses, l'objectif est justement d'éviter trop de ..modifié ou de trop généraliser au niveau d'une fenêtre.

L'idée des groupes me semble un bon compromis, surtout que j'en aurai besoin aussi pour verrouiller la saisie pour ceux qui ont des
droits uniquement en lecture.

Reste à Windev d'ajouter une fonction du style table.VersEcranModifié

OB
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 08 novembre 2019 - 14:40
>Reste à Windev d'ajouter une fonction du style table.VersEcranModifié

Les automastismes c'est bien, mais après quand ca pete tout le monde râle sur pcsoft.
Ne dépendez pas trop des automatismes c'est mal et comme tout quand on ne pratique pas quelque choses on le perds !

Le mieux à mon sens dans votre cas et d'utiliser les évenements windows, celui en entrée de champ stock la valeur, en sortie on compare et fini

L'avantage de cette methode est qu'elle s'execute juste au besoin, et y'a aucune ligne de code à ajouter dans la fenêtre si c'est mis au niveau du projet ! En gros c'est un ChampVersEcranModifié, encore plus effice ;)
Membre enregistré
449 messages
Popularité : +31 (43 votes)
Posté le 08 novembre 2019 - 15:16
Bonjour

J'utilise souvent la méthode de voroltinquo et cela marche très bien. C'est simple , efficace et peu de code
Message modifié, 08 novembre 2019 - 15:16
Membre enregistré
52 messages
Popularité : +3 (3 votes)
Posté le 13 novembre 2019 - 06:57
Bjr, le probleme du ..Modifié c'est qu'il passe à Vrai même si on est entré en saisie dans un champ, puis ressorti en ayant la même valeur.

Pour être sur qu'il y a vraiment une modif dans la fenêtre j'utilise :

En entrée fenêtre, apres lecture dans MonFichier, je stocke toutes les valeurs initiales d'un coup :
MonEnreg est un enregistrement de MonFichier
MonEnreg=MonFichier

Avant de sortir de la fenetre, je vérifie si modif :
SI MonEnreg<>MonFichier ALORS
//il y a eu une modif
FIN

Bon dev à tous.
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 13 novembre 2019 - 09:22
@Jemm: je vient de testé ton idée mais avec une belle erreur en sortie de programme sur la ligne :
SI MonEnreg<>MonFichier ALORS


Voila l'erreur:
"Un élément de type 'enregistrement' n'a pas de valeur."

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Membre enregistré
52 messages
Popularité : +3 (3 votes)
Posté le 13 novembre 2019 - 20:15
Dergen,
effectivement on ne peut pas écrire "SI MonEnreg<>MonFichier ALORS ", la syntaxe correcte est :

SI HRecupereEnregistrement(MonEnreg)<>HRecupereEnregistrement(MonFichier) ALORS