PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Savoir si un enregistrement est modifié dans un fenêtre ?
Savoir si un enregistrement est modifié dans un fenêtre ?
Iniciado por obtuli, nov., 08 2019 10:27 AM - 9 respostas
Membro registado
948 mensagems
Popularité : +11 (13 votes)
Publicado em novembro, 08 2019 - 10:27 AM
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
Membro registado
329 mensagems
Popularité : +28 (32 votes)
Publicado em novembro, 08 2019 - 10:33 AM
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 -
Mensagem modificada, novembro, 08 2019 - 10:35 AM
Membro registado
1.623 mensagems
Popularité : +100 (114 votes)
Publicado em novembro, 08 2019 - 11:38 AM
Hello,

Tu dois pouvoir utiliser la fonction MaFenetre..Modifié
Si vrai alors tu peux faire ta sauvegarde.
Membro registado
3.887 mensagems
Popularité : +227 (347 votes)
Publicado em novembro, 08 2019 - 11:53 AM
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
Membro registado
948 mensagems
Popularité : +11 (13 votes)
Publicado em novembro, 08 2019 - 1:27 PM
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
Membro registado
324 mensagems
Popularité : +21 (51 votes)
Publicado em novembro, 08 2019 - 2:40 PM
>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 ;)
Membro registado
449 mensagems
Popularité : +31 (43 votes)
Publicado em novembro, 08 2019 - 3:16 PM
Bonjour

J'utilise souvent la méthode de voroltinquo et cela marche très bien. C'est simple , efficace et peu de code
Mensagem modificada, novembro, 08 2019 - 3:16 PM
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em novembro, 13 2019 - 6:57 AM
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.
Membro registado
329 mensagems
Popularité : +28 (32 votes)
Publicado em novembro, 13 2019 - 9:22 AM
@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 -
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em novembro, 13 2019 - 8:15 PM
Dergen,
effectivement on ne peut pas écrire "SI MonEnreg<>MonFichier ALORS ", la syntaxe correcte est :

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