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 24-05-2012 10:51:07

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

propriétés datawindow

Bonjour,
  J’ai un petit problème :
Dans ma datawindow (dw_1) j’ai une case à cocher  (case1), j’ai besoin de parcourir la datawindow et rendre la case à cocher protected pour des lignes et non protected pour des autres selon des conditions
Càd
Si condition 1 sur la ligne courante est vérifiée protect (case1) = 1
La modification doit toucher uniquement la ligne concernée.
J’ai essayer avec le script ci-dessous mais sans succès

Code:

li_ro = dw_detail.rowcount();
 FOR li_j = 1 TO li_ro 
  IF dw_1.getitemstring(li_j,"case1") = 'N' THEN
      dw_1.modify("case1.protect = '0~tif(getrow()=currentrow(),1,0))'")
     END IF
NEXT

Remarque je veux faire ça dynamiquement.

Cordialement


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#2 24-05-2012 11:23:26

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: propriétés datawindow

La propriété case1.protect est modifiée dans une boucle, c'est la dernière modification qui l'emportera.
Il ne faut pas oublier que l'expression qui sera utilisée pour protect sera évaluée à chaque ligne de la DW.

En plus il y a une parenthèse en trop à la fin. Si on récupère le résultat du modify(), on doit voir un message d'erreur.

Mais je me demande le but de la modif : on veut protéger la case à cocher uniquement si elle vaut 'N' (j'imagine que c'est la table de valeurs avec non coché = 'N' ?). Qu'est-ce qui est voulu en fait ?

Pour traduire ça, il faut supprimer la boucle du code précédent et faire

Code: pb

dw_1.modify("case1.protect = '0~tif(case1='N',if(getrow()=currentrow(),1,0),0)'") //et si case1 ne vaut pas 'N' on fait quoi ?

The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#3 24-05-2012 11:27:03

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: propriétés datawindow

Bonjour,

as-tu essayé de mettre une fonction (avec le bouton '=' barré) pour déterminer la propriété 'Protect' de ton champs case1 ? Tu peux, avec ça, calculer la valeur d'une propriété. Une fonction du type if('condition 1 sur la ligne courante est vérifiée', 1,0 ) par exemple ?
J'ai fait le test sur un champs et ça marche. Avec une case à cocher je n'ai pas essayé mais ça doit être le même.


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#4 24-05-2012 13:10:17

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: propriétés datawindow

Nn n’est pas la valeur de la case qui nous intéresse peut ètre j’ai pas bien expliqué le besoin.
Pour chaque ligne de la datawindow je dois chercher les données correspondants dans la base le problème ce que le données à cherché ne sont pas des colonnes dans la datawindow et je dois me baser sur les donner trouvées pour décider si on doit activer ou désactiver la case à cocher.

L’algorithme est quelque chose comme ça

Si X=Y alors
Protect(case1)
Si non
Case1 reste

Je peux résoudre le problème en ajoutant des colonnes dans la table mais j’ai envie de faire ça

Dernière modification par infopower (24-05-2012 13:11:43)


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#5 24-05-2012 13:33:38

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: propriétés datawindow

Geo
J'ai pas compris ta proposition


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#6 24-05-2012 14:46:17

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: propriétés datawindow

Si j'ai bien compris, lorsque case1 est 'N', case1 ne doit pas être modifiable (la protection de case1 dépend donc de sa valeur). Si c'est bien ça, lorsque tu vas dans les propriétés du champs case1 de ton DataWindowObjet, dans l'onglet 'General', tu as une propriété 'Protect' (avec en dessous un SingleLineEdit et un bouton avec un signe 'égal' dessus, en tout cas en PB 11). Tu cliques sur le bouton et tu entres if((case1 = 'N'), 1,0) (que tu retrouve dans ton SLE après validation). Cette fonction se traduit par : si case1 est égal à 'N' alors on protège, sinon on ne protège pas. Attention, c'est réévalué à chaque modification, donc si tu changes de 'X' à 'N', tu n'y as plus accès une fois que c'est 'N'...

Est-ce clair ?

Geo


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#7 24-05-2012 14:58:10

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: propriétés datawindow

Geo a écrit:

Est-ce clair ?

Vous, c'est "François", c'est juste ?


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#8 24-05-2012 15:19:23

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: propriétés datawindow

Lui, c'est pareil, c'est Juste


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22