PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Détection d'un champ saisi vide ou avec texte
Détection d'un champ saisi vide ou avec texte
Iniciado por Anthony, 07,abr. 2019 12:09 - 5 respuestas
Miembro registrado
108 mensajes
Publicado el 07,abril 2019 - 12:09
Bonjour à tous,

Dans une fenêtre interne je détecte facilement si un champ a été modifié ou pas. Dans cette même fenêtre, j'ai deux trois champs que je remplis en ouvrant d'abord une autre fenêtre, puis en choisissant (double clic) une ligne dans une table. en double cliquant sur une ligne, les informations sélectionnées sont envoyées dans les champs de ma fenêtre principale, tout se passe correctement, seulement, Windev ne détecte pas que les champs ont été modifiés... J'imagine que cela va trop vite ou alors que ce n'est pas une saisi mais un "coller".

Je sèche là, je ne sais pas comment détecter que le champ comporte bien du texte.

Quelqu'un aurait-il une idée ? J'ai effectué des recherches mais rien de concret...

Je vous remercie de votre aide.
Miembro registrado
2.321 mensajes
Publicado el 07,abril 2019 - 15:39
Bonjour,

Il suffit de stocker la valeur du champ dans la propriété ..Note du champ (à l'initialisation et à la modification).
cf. https://doc.pcsoft.fr/fr-FR/index.awp?2510085
Il n'y a plus qu'à comparer la valeur du champ à celle stockée pour savoir si elle a été modifiée par programmation.

--
Bon dev,
Jean-Pierre
Miembro registrado
4.362 mensajes
Publicado el 07,abril 2019 - 17:30
Bonjour,
Cela peut se faire de la manière suivante :
1-Fenêtre appelée
1-1 Code de la fenêtre
Partie Initialisation
Procedure FEN_FenêtreAppelée(sChampConcerné est chaîne)
bChampModifié est booléen //Vrai si la valeur du champ concerné a été modifié


1-2 Code du champ table
Dans la partie Sélection d'une ligne (on suppose que les données du champ concernée se trouvent dans COL_Champ)
SI TABLE_Sélection.COL_Champ<>sChampConcerné ALORS //La valeur du champ sera modifiée
bChampModifié=Vrai
FIN
MaFenêtre..ValeurRenvoyée=bChampModifié


2-Utilisation
SI Ouvre(FEN_FenêtreAppelée,SAI_ChampConcerné) ALORS //La valeur du champ a été modiifée
//Traitement champ modifié
SINON
//Traitement chhamp non modifié
FIN


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
108 mensajes
Publicado el 07,abril 2019 - 17:45
Merci Jean-Pierre de ta réponse rapide, je vais étudier ça !

Merci également Voroltinquo pour ton explication avec le code !

(Je vous tiendrai au courant).

Bon dimanche !
Publicado el 08,abril 2019 - 08:35
Tu peux également passer par des variables déclarées en global que tu associent aux champs en saisies et aux rubriques de la table.
Ainsi à chaque fermeture de la fenêtre appelée tu peux comparer leurs contenus et savoir précisément se qui à été modifié ou pas et ce champ par champ.
// 1 - Déclaration des variables en global
ChampEnSaisie1, ChampEnSaisie2 sont des chaînes
Rubrique1Table, Rubrique2Table sont des chaînes

// 2- Dans le bouton d'appel qui ouvre fenêtre qui contient la table
// On commence par réinitialiser toutes les variables associées aux champs en saisie et rubriques table
ChampEnSaisie1 = ""
ChampEnSaisie2 = ""
Rubrique1Table = ""
Rubrique2Table = ""

// Mise en mémoire des valeur des champs en saisies sur clic bouton d'appel de la fenêtre contenant la table
ChampEnSaisie1 = Saisie1
ChampEnSaisie2 = Saisie2


// 3 - Dans le code de la fermeture de la fenêtre contenant la table, on affecte le contenu des rubriques aux variables
Rubrique1Table = Table.Rubrique1
Rubrique2Table = Table.Rubrique2


// 4 - Procédure de comparaison appelée soit en fermeture de la fenêtre contenant la table, soit plus tard
// Les données de comparaison restent valables tant que la fenêtre contenant la table n'est pas appelée de nouveau

ProcédureComparaison()
// Test de comparaison pour le champ1
SI ChampEnSaisie1 <> Table.Rubrique1 ALORS
// Traitement
SINON
// Autre Traitement ou aucun
FIN

// Test de comparaison pour le champ2
SI ChampEnSaisie2 <> Table.Rubrique2 ALORS
// Traitement
SINON
// Autre Traitement ou aucun
FIN

// Test de comparaison pour les deux champs
SI ChampEnSaisie1 <> Table.Rubrique1 ET ChampEnSaisie2 <> Table.Rubrique2
// Traitement
SINON
// Autre Traitement ou aucun
FIN


Facile à mettre en œuvre et précise, à l'ancienne quoi...

Bon Dev
Alain
Publicado el 08,abril 2019 - 09:34
Ou alors tu déclare les champs alimentés comme étant modifiés:
MonChamp..modifié=vrai