Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je maintiens une application codée en PB11 et je suis actuellement confronté au problème suivant :
J'ai des contrôles de validation (et messages d'erreurs associés) sur certains champs de ma datawindow (Du type table(column=(type=char(14) update=yes updatewhereclause=yes key=yes name=champ_controle dbname="table.champ_controle" validation="f_test_champ_controle( int( param) , gettext() )" validationmsg="~"Erreur- Corrigez votre saisie.~"" )).
Je souhaiterais qu'en cas d'échec du contrôle (et affichage du message d'erreur de validation), le champ correspondant ne soit pas remis à zéro, mais conservé tel quel, ne souscrivant pas aux conditions de validation, mais non validé pour autant (le temps que l'utilisateur corrige sa saisie avant de reessayer de valider de nouveau).
Est-ce possible avec ce type de schéma (datawindow, validation expression,validation message), ou est-ce que je fais fausse route ?
D'avance merci.
Dernière modification par TigerTigerTiger (23-06-2011 13:09:02)
Hors ligne
Bonjour,
TigerTigerTiger a écrit:
Je souhaiterais qu'en cas d'échec du contrôle (et affichage du message d'erreur de validation), le champ correspondant ne soit pas remis à zéro, mais conservé tel quel, ne souscrivant pas aux conditions de validation, mais non validé pour autant (le temps que l'utilisateur corrige sa saisie avant de reessayer de valider de nouveau).
Je pense que la solution est dans l'évènement itemError du contrôle DW, en fonction du code de retour de la fonction :
Set the return code to affect the outcome of the event:
0 (Default) Reject the data value and show an error message box
1 Reject the data value with no message box
2 Accept the data value
3 Reject the data value but allow focus to change
HTH
Hors ligne
Merci pour cette réponse seki
Mais je me rends compte qu'en fait l'évènement itemError est déjà codé dans une fenêtre parente sur ma datawindow, supposée retourner 3 en cas d'échec du contrôle, donc je ne comprends pas trop le comportement qui est observé ...
Je vais continuer à creuser ...
Hors ligne
TigerTigerTiger a écrit:
l'évènement itemError est déjà codé dans une fenêtre parente sur ma datawindow, supposée retourner 3 en cas d'échec du contrôle, donc je ne comprends pas trop le comportement qui est observé ...
Ça me semble normal, au contraire :
3 Reject the data value but allow focus to change
Ta valeur incorrecte est rejetée (et la saisie annulée), et le focus passe ailleurs.
Pour afficher le message et laisser la possibilité de corriger, il faudrait plutôt retourner 0 (rejeter la valeur, afficher le message mais ne pas laisser partir le focus).
C'est ce que semble confirmer un rapide test sur une appli cobaye ici.
Hors ligne
Cela résout mon problème.
Merci !
Hors ligne
merci de mettre [RESOLU] dans le titre
Hors ligne
[Résolu] != [RESOLU]
Hors ligne
Tout ce qui vous siéra, votre honneur !
(Edité.)
Dernière modification par TigerTigerTiger (23-06-2011 13:09:55)
Hors ligne
Pages: 1