Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

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 23-10-2008 06:50:41

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

[SOURCE] Évaluer un attribut de DW - f_evaluate_attribute

f_evaluate_attribute sur Codexchange

f_evaluate_attribute
A function used to get the attribute value as the datawindow interprets it; either the result of the expression or the value if there is not an expression.

Example:

Code: pb

string ls_value
ls_value = f_evaluate_attribute(dw_1, dw_1.getrow(), 'col1', 'Protect')

If protect has an EXPRESSION in it, the expression will be evaluated and the result returned.
If it does NOT have an EXPRESSION, then it will return whatever was entered on it.

.

Code: pb

$PBExportHeader$f_evaluate_attribute.srf
global type f_evaluate_attribute from function_object
end type

forward prototypes
global function string f_evaluate_attribute (datawindow dw, long al_row, string as_columname, string as_attribute)
end prototypes

global function string f_evaluate_attribute (datawindow dw, long al_row, string as_columname, string as_attribute);
//f_evaluate_attribute(dw, row, column, attribute)
//returns the attribute setting whether or not there is an expression
/* Searer Business Technology  www.searer.com */

string ls_expression, ls_result, ls_evaluate 
long ll_tab_pos, ll_Pos_quote 

ls_expression = dw.Describe ( as_columname + "." + as_attribute  )

if ls_expression = '!' or isnull(ls_expression) then return ''

IF Left( ls_expression, 1 ) = "~"" AND Right(ls_expression, 1 ) = "~"" THEN 
  // PB quirk will SOMETIMES return an expression in quotes!
  ls_expression= Mid ( ls_expression, 2 , Len ( ls_expression ) - 2 ) 
END IF 

ll_tab_pos = Pos( ls_expression, "~t" ) 

IF ll_tab_pos > 0 THEN // conditional value 
  ls_expression = Mid( ls_expression, ll_tab_pos + 1 ) 
  //check for single quote that gets in way of quote below
  ll_Pos_quote = Pos ( upper(ls_expression) , "'" ) 
  do while ll_Pos_quote > 0 
    ls_expression = Replace( ls_expression, ll_Pos_quote , 0, "~~" )  //insert tilda!
    ll_Pos_quote += 2 //move past quote and tilda
    ll_Pos_quote = Pos ( upper(ls_expression) , "'", ll_Pos_quote  ) 
  loop
else
  //NO expression just the value was set
  ls_result = ls_expression  
  return ls_result
END IF 

if isnull(al_row) or al_row < 1 then al_row = 1
ls_evaluate = "Evaluate('" + ls_expression + "', " + string(al_row) +") "

ls_result = dw.describe(ls_evaluate)



return ls_result

end function

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#2 23-10-2008 06:55:19

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [SOURCE] Évaluer un attribut de DW - f_evaluate_attribute

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22