Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je souhaiterai que l'utilisateur ne puisse mettre que des nombres positives dans une colonne précise d'une dw. Pour se faire, j'ai pensé à mettre dans l'onglet "format" de cette colonne : 0, mais ceci ne marche pas totalement car cela veut dire qu'il accepte que les nombres... comment faire pour juste les nombres positif???
Merci d'avance...
Dernière modification par poche (27-11-2007 13:53:32)
Hors ligne
Tu ouvres ta datawindow :
Tu fais view --> Column specifications
Tu cherches le nom de ton champs dans le tableau, et dans la colonne 'Validation expression', tu mets ta contrainte et dans Validation message le message d'erreur à afficher si la contrainte n'est pas vérifiée. Voir le screenshot ci dessous :
Dernière modification par hellkinder (27-11-2007 09:35:22)
Hors ligne
la colonne est de type number et j'ai fais ce que tu ma dis, et le message d'erreur se génère tout le temps peu importe ce que je met à l'interieur...
Hors ligne
Tu as mis quoi dans 'Validation expression'?
Pour quel nom de colonne?
Dernière modification par hellkinder (27-11-2007 09:50:29)
Hors ligne
j'ai mis ceci : qte_tuerie_1 > 0 et la colonne s'appelle "qte_tuerie_1"
Dernière modification par poche (27-11-2007 09:59:18)
Hors ligne
Et qu'est ce que tu saisies?
Qu'est ce que tu retournes dans l'itemchanged?
Essayes de nous donner un peu plus d'informations.. Du genre:
"Quand je saisie -1 et que je change de champs, le message Datawindow error apparait avec le message que j'ai parametré dans Validation message..meme chose avec 1, 2 ou n'importe quel nombre positif.."
Sinon précise nous davantage..
Dernière modification par hellkinder (27-11-2007 10:29:59)
Hors ligne
Donc voila, lorsque je met un nombre positif, ça fonctionne bien, quand je met un nombre négatif aussi (je rentre bien dans le itemchanged)....
Mai lorsque je met une lettre, alors le msg d'erreur se lance, je rechange et je met un nombre et là le message se relance aussi(après je ne rentre plus dans le itemchanged)...
Hors ligne
poche a écrit:
Donc voila, lorsque je met un nombre positif, ça fonctionne bien, quand je met un nombre négatif aussi (je rentre bien dans le itemchanged)....
Mai lorsque je met une lettre, alors le msg d'erreur se lance, je rechange et je met un nombre et là le message se relance aussi(après je ne rentre plus dans le itemchanged)...
essayes dans le editchanged
Hors ligne
Bonjour,
Juste pour info, il y a une fonction intéressante pour ce que tu veux faire: Abs()
Hors ligne
Hors ligne
foon a écrit:
Bonjour,
Juste pour info, il y a une fonction intéressante pour ce que tu veux faire: Abs()
Pas mieux
Hors ligne
Hors ligne
Poche, la solution que te proposent foon et thezerg, Abs(), te permet de prendre directement la valeur absolue de la valeur saisie, comme tu as certainement pu le constater dans l'aide.
Personnellement je ne choisis pas cette solution car si l'utilisateur rentre -1, parce qu'il croit pouvoir mettre une valeur négative, et qu'il change de champs, la valeur est automatiquement passé à 1, et selon le type d'application que tu fais, ca peut avoir des impacts si l'utilisateur ne s'en rend pas compte. Rien ne vaut, pour moi, un petit message le prévenant que la valeur qu'il veut mettre n'est pas autorisée afin qu'il se demande pourquoi.
Mais si ca ne te derange pas, ou n'a pas d'impact, il te suffit dans l'itemchanged de faire un setitem de ton champs de abs(long(data)). Ce qui constitue une solution plus simple et efficace.
Dernière modification par hellkinder (27-11-2007 10:58:16)
Hors ligne
poche a écrit:
ça marche super, sauf qu'il accepte les nombre négatifs!!!
Il faut laisser le Validation expression dans qte_tuerie_1 et son Validation message.
Dernière modification par hellkinder (27-11-2007 10:53:49)
Hors ligne
pour resumer que te reste il comme probleme ?
poche a écrit:
Donc voila, lorsque je met un nombre positif, ça fonctionne bien, quand je met un nombre négatif aussi (je rentre bien dans le itemchanged)....
Mai lorsque je met une lettre, alors le msg d'erreur se lance, je rechange et je met un nombre et là le message se relance aussi(après je ne rentre plus dans le itemchanged)...
--> Ok pour le message
hellkinder a écrit:
Dans le painter, tu vas dans les propriétés de ton champs. Dans l'onglet Edit, dans Style Type, tu selectionne EditMask.
En dessous de cette propriété, tu en as un autre qui s'appelle Mask. Dedans tu tapes ####.
--> Ok pour empecher la saisie des caracetres autres que des chiffres
Hors ligne
J'ai bien fais ce que tu m'a dis mais les nombres négatifs passent toujours!!!
Hors ligne
une vraie tuerie ce post
Hors ligne
essaye de mettre dans 'Validation expression'
GetText() = '' or IsNull(GetText()) or Real(GetText()) >= 0
sinon tu peux utiliser la coche 'spin control' avec comme min 0
Hors ligne
poche a écrit:
J'ai bien fais ce que tu m'a dis mais les nombres négatifs passent toujours!!!
Quand tu dis "passent toujours", ca veut dire que tu peux les saisir et changer de champs apres sans message d'erreur?
Hors ligne
Mais tu veux empécher de saisir un nombre négatif ou afficher un message lors de la saisie d'un nombre négatif ?
* Empecher : Je ne crois pas que se soit possible. Tous les formats de nombre que je connais prennent les nombres positifs et négatifs.
* Afficher un message tu peux vérifier la valeur dans le itemchanged et si c'est négatif afficher un message et lancer un Return 2 pour remettre l'ancienne valeur qu'il y avait dans le champ avant la dernière saisie invalide.
Dernière modification par LeCiao (27-11-2007 13:34:24)
Hors ligne
JCZ a écrit:
essaye de mettre dans 'Validation expression'
Code: pb
GetText() = '' or IsNull(GetText()) or Real(GetText()) >= 0sinon tu peux utiliser la coche 'spin control' avec comme min 0
Avec ceci, ça marche super, mais je comprends pas pourquoi!!!
Hors ligne
pour rien
Merci de mettre le fameux [RESOLU]
Probleme suivant
Hors ligne
pas [résolu]
mais [RESOLU]
pour que cela soit uniforme
Hors ligne
C'est l'heure de la distribution des pépites pour la patience de certains membres
00 pour Hellkinder
00 pour JCZ
00 pour Thezerg
Hors ligne
Hors ligne