Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 08-11-2007 12:00:23

toto  
Membre Geek
Lieu: Nice
Date d'inscription: 21-05-2007
Messages: 23
Pépites: 111
Banque: 0

Bloquer des cellules dans une DW

Bonjour,

après avoir parcouru le forum sur des sujets "semblables" au mien, je n'ai pas trouvé de réponses répondant à mon besoin.

Alors, voici mon problème :
j'ai besoin de définir une DW contenant plusieurs colonnes, dont certaines ne seront saisissables que sous certaines conditions : valeur saisie dans une autre colonne ou bien (in)existance de certaines valeurs en BDD.
Le propriété Protect (ou gestion des tabsequence à 0) permet de protéger des colonnes, mais dans ce cas, la protection s'applique à TOUTES les lignes de la DW.
Hors mon besoin est de ne bloquer que certaines cellules ==> pour certaines lignes dans certaines colonnes...

Pour le moment, on a codé dans l'ItemChanged de la DW des contrôles qui affichent un message à l'utilisateur dans les cas où il saisis des infos qui n'ont pas lieu d'être (cas expliqué ci-dessus), mais ça ne fait pas très "propre"...

Alors, si l'un ou l'une d'entre vous a une idée ou a déjà mis en pratique ce genre de chose, je serai volontier preneur

Merci d'avance,
Bernard

Hors ligne

 

#2 08-11-2007 12:37:46

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Bloquer des cellules dans une DW

Bonjour,

Il faut que tu gères la propriété "protect" via une expression qui testera, par exemple, la valeur d'un autre champ.

Exemple à mettre au niveau de la propriété "protect" d'un champ:

Code: pb

(if s_valeur = 'OK', 0, 1)

Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 08-11-2007 14:13:54

toto  
Membre Geek
Lieu: Nice
Date d'inscription: 21-05-2007
Messages: 23
Pépites: 111
Banque: 0

Re: Bloquer des cellules dans une DW

Merci, mais est-ce que l'on peut préciser quelque chose comme :

Code: pb

(if This.col1[row] = 'OK', 0, 1)


ou bien encore :

Code: pb

(if EXECUTE "select 1 from table where table.key = This.col1[row]" = 'OK', 0, 1)


Merci...
Bernard

Hors ligne

 

#4 08-11-2007 14:34:04

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Bloquer des cellules dans une DW

Non,

Attention, j'ai bien précisé que c'est à coder au niveau de la propriété "protect" de ta colonne (col2).
Ceci signifie que le test se fera ligne à ligne:

Code: pb

( if col1 = 'OK', 1, 0)

signifie que, pour chaque ligne, il va tester la valeur de la colonne col1 et donc modifier le protect de la colonne col2.
Si tu désires que le champ col2 de la ligne 1 soit protégé quand le champ col1 de la linge 1 est à 'OK', ma solution marche
Si, par contre, il faut que le champ col2 de la ligne 1 soit protégé quand le champ col1 de la linge 3 est à 'OK', ça ne marchera pas


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#5 12-11-2007 12:51:32

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: Bloquer des cellules dans une DW

Complément.

Si tu veux tester la valeur de la colonne elle même pour la protéger ou non utilises : if(Gettext()='Ok',1,0)
Si tu veux tester la valeur de la colonne de la ligne précédente : if(GetRow()>1, if(col[-1]='Ok',1,0), 0)
cela fonctionne avec un incrément positif également : if(GetRow()<RowCount(), if(col[+1]='Ok',1,0), 0)


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#6 12-11-2007 14:02:51

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: Bloquer des cellules dans une DW

Enfin, si tu veux modifier ton protect dans le code (parce que les conditions changent ou autres) et que tu veux rester sur du protect conditionné, tu peux le faire comme ceci :

Code: pb

dw_1.object.col3.protect="0~tif(col1 = 'OK' and col2 <> 'N' , 0, 1 )"

Dernière modification par hellkinder (12-11-2007 14:03:12)


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22