PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → vérification des valeurs saisies
vérification des valeurs saisies
Iniciado por dsea, 14,feb. 2008 00:28 - 7 respuestas
Publicado el 14,febrero 2008 - 00:28
Bonjour
avant de valider/traiter des données, j'aimerais vérifier les valeurs saisies par user.
Si problème, avertir un msg "Les champs marqué par une étoile sont obligatoire!"

codes actuelles:

SI (champs1 = Null ou champs2.ValeurAffichée = Null .... ) ALORS
Erreur("Les champs marqué par une étoile sont obligatoire!")
RETURN
FIN

je peux avoir les champs:
champs1 text
champs2 combo avec saisie
champs3 combo non saisie
champs4 numérique ....

maintenant, je veux activer (mettre en focus) la zone ayant le pb en utilisant RepriseSaisie!
codes actuelles:
SI champs1=Null Alors
Erreur("Les champs marqué par une étoile sont obligatoire!")
RepriseSaisie(champs1)
RETURN
SINON SI champs2.ValeurAffichée=Null Alors
Erreur("Les champs marqué par une étoile sont obligatoire!")
RepriseSaisie(champs2)
RETURN
...
FIN

c est trop long et c est pas vraiment ... informatique ...

Question: est ce que l'on peut faire une manière générale: parcourir tous les champs de la fenêtre, vérifier si libellé terminé par une *, alors selon son type (text, numérique, combo, combo avec saisie) voir si la valeur est bien saisie/choisie ...

(pour certaines raisons, je ne peux pas utiliser l'option "Obligatoire saisie" de chaque champs)

Merci bien
dsea
Publicado el 14,febrero 2008 - 11:48
Bonjour...

Je pense que tu es à la recherche des opérateurs d'indirection { et }
(voir aide)

Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com/index_FR.html


dsea wrote:
Bonjour
avant de valider/traiter des données, j'aimerais vérifier les valeurs saisies par user.
Si problème, avertir un msg "Les champs marqué par une étoile sont obligatoire!"

codes actuelles:

SI (champs1 = Null ou champs2.ValeurAffichée = Null .... ) ALORS
Erreur("Les champs marqué par une étoile sont obligatoire!")
RETURN
FIN

je peux avoir les champs:
champs1 text
champs2 combo avec saisie
champs3 combo non saisie
champs4 numérique ....

maintenant, je veux activer (mettre en focus) la zone ayant le pb en utilisant RepriseSaisie!
codes actuelles:
SI champs1=Null Alors
Erreur("Les champs marqué par une étoile sont obligatoire!")
RepriseSaisie(champs1)
RETURN
SINON SI champs2.ValeurAffichée=Null Alors
Erreur("Les champs marqué par une étoile sont obligatoire!")
RepriseSaisie(champs2)
RETURN
...
FIN

c est trop long et c est pas vraiment ... informatique ...

Question: est ce que l'on peut faire une manière générale: parcourir tous les champs de la fenêtre, vérifier si libellé terminé par une *, alors selon son type (text, numérique, combo, combo avec saisie) voir si la valeur est bien saisie/choisie ...

(pour certaines raisons, je ne peux pas utiliser l'option "Obligatoire saisie" de chaque champs)

Merci bien
dsea

Publicado el 14,febrero 2008 - 13:40
salut Fabrice
désolé mais je comprends pas trop ce que tu veux dire ... :(
Publicado el 14,febrero 2008 - 15:02
Je dis qu'il faut regarder dans l'aide en ligne en cherchant:
- Indirection
- {
- }

Lire l'aide, et tout deviendra clair

Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com/index_FR.html


dsea wrote:
salut Fabrice
désolé mais je comprends pas trop ce que tu veux dire ... :(

Publicado el 14,febrero 2008 - 15:44
ah
tu as raison, je vais essayer
merci bien Fabrice
Publicado el 15,febrero 2008 - 07:54
salut
j'ai fini

PROCEDURE ChampsValide(pParentObj)
i est un entier = 1
ResChamp est une chaîne
ResChamp = EnumèreChamp(pParentObj, i, parOrdreDeTabulation)
TANTQUE ResChamp<>""
i++
// Info(ResChamp, {ResChamp, indChamp}..Type, {ResChamp, indChamp}..Libellé, {ResChamp, indChamp}..TypeSaisie)
pLibelle est une chaîne = {ResChamp, indChamp}..Libellé
pType est un entier = {ResChamp, indChamp}..Type
pValeur est une chaîne = {ResChamp, indChamp}..Valeur
pValeurAffichée est une chaîne = {ResChamp, indChamp}..ValeurAffichée

SI (pLibelle[[Taille(pLibelle)]] = "*") ET ...
(pType DANS (typComboSNS, typComboAVS, typDate, typTexte, typNum) ET {ResChamp, indChamp} = Null) ...
ALORS
//DélaiAvantFermeture(300)
//Erreur("Les champs marqués par une astérisque sont obligatoires", ResChamp+"(" + pLibelle+ ")")
Erreur("Les champs marqués par une astérisque sont obligatoires")
RepriseSaisie({ResChamp, indChamp}) // DonneFocus({ResChamp, indChamp})
RENVOYER Faux
FIN

SI {ResChamp, indChamp}..Type = typOnglet ALORS
nbVolet est un entier = {ResChamp, indChamp}..Occurrence
POUR j = 1 A nbVolet
SI {ResChamp, indChamp}[j]..Visible ET {ResChamp, indChamp}[j]..Etat = Actif ALORS
SI ChampsValide({ResChamp, indChamp}[j]) = Faux ALORS
RENVOYER Faux
FIN
FIN
FIN
FIN

ResChamp = EnumèreChamp(pParentObj, i, parOrdreDeTabulation)
FIN
RENVOYER Vrai

Usage:
SI (PAS ChampsValide(MaFenêtre)) ALORS
RETURN
FIN



par contre, j'ai petit souci
il me semble que la fonction EnumèreChamp avec l'opt parOrdreDeTabulation parcourt pas comme il faut (j'ai bien edité l'ordre TAB des champs, vérifié même avec F5)

tu as une idée?
merci
Publicado el 15,febrero 2008 - 11:46
Bonjour...

c'est quoi, "pas comme il faut" ?
Avec une description comme ça, je vois pas bien comment qui que ce soit
pourrait t'aider :-)

Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com/index_FR.html


dsea wrote:
salut
j'ai fini

PROCEDURE ChampsValide(pParentObj)
i est un entier = 1
ResChamp est une chaîne
ResChamp = EnumèreChamp(pParentObj, i, parOrdreDeTabulation)
TANTQUE ResChamp<>""
i++
// Info(ResChamp, {ResChamp, indChamp}..Type, {ResChamp, indChamp}..Libellé, {ResChamp, indChamp}..TypeSaisie)
pLibelle est une chaîne = {ResChamp, indChamp}..Libellé
pType est un entier = {ResChamp, indChamp}..Type
pValeur est une chaîne = {ResChamp, indChamp}..Valeur
pValeurAffichée est une chaîne = {ResChamp, indChamp}..ValeurAffichée

SI (pLibelle[[Taille(pLibelle)]] = "*") ET ...
(pType DANS (typComboSNS, typComboAVS, typDate, typTexte, typNum) ET {ResChamp, indChamp} = Null) ...
ALORS
//DélaiAvantFermeture(300)
//Erreur("Les champs marqués par une astérisque sont obligatoires", ResChamp+"(" + pLibelle+ ")")
Erreur("Les champs marqués par une astérisque sont obligatoires")
RepriseSaisie({ResChamp, indChamp}) // DonneFocus({ResChamp, indChamp})
RENVOYER Faux
FIN

SI {ResChamp, indChamp}..Type = typOnglet ALORS
nbVolet est un entier = {ResChamp, indChamp}..Occurrence
POUR j = 1 A nbVolet
SI {ResChamp, indChamp}[j]..Visible ET {ResChamp, indChamp}[j]..Etat = Actif ALORS
SI ChampsValide({ResChamp, indChamp}[j]) = Faux ALORS
RENVOYER Faux
FIN
FIN
FIN
FIN

ResChamp = EnumèreChamp(pParentObj, i, parOrdreDeTabulation)
FIN
RENVOYER Vrai

Usage:
SI (PAS ChampsValide(MaFenêtre)) ALORS
RETURN
FIN



par contre, j'ai petit souci
il me semble que la fonction EnumèreChamp avec l'opt parOrdreDeTabulation parcourt pas comme il faut (j'ai bien edité l'ordre TAB des champs, vérifié même avec F5)

tu as une idée?
merci
Publicado el 15,febrero 2008 - 14:52
lolz :)

j'ai collé les codes si qq'un a besoin :D

voici le code dans l'aide en ligne (j'ai ajouté l'option parOrdreDeTabulation)

// Remplir une combo avec la liste des champs de la fenêtre
i est un entier = 1
ResChamp est une chaîne
ResChamp = EnumèreChamp(FenêtreSaisie, i, parOrdreDeTabulation)
TANTQUE ResChamp<>""
i++
Info(ResChamp)
ResChamp = EnumèreChamp(FenêtreSaisie, i,parOrdreDeTabulation)
FIN


dans ma fenetre, il y a 3 champs C1, C2, C3 avec l'ordre TAB respectifs
si j execute ces codes, alors il affiche C2, C1, C3
or il faut C1, C2 et C3

j'espère d'avoir clair cette fois
merci