Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Est ce que quelqu'un a déjà utilisé le return type any et dans quel mesure gérer les sorties sans valeur?
J'ai codé la fonction SQL coalesce de la manière suivante pour une utilisation sur des string
global type f_coalesce from function_object end type forward prototypes global function string f_coalesce (string as_tableau[]) end prototypes global function string f_coalesce (string as_tableau[]); long ll_for = 1 long ll_nb if isnull(as_tableau) thrn return '' ll_nb = upperBound( as_tableau ) if ll_nb <1 then return '' for ll_for = 1 to ll_nb if not isnull(as_tableau[ll_for]) then return as_tableau[ll_for] next return '' end function
Je voudrais ouvrir les possibilités à tout type de données mais je ne vois pas comment remplacer les '' lors des return sans valeur ( i.e. quand le tableau est remplis de valeur null ou quand le tableau est lui même vide upperbound(aa_tableau) = 0 )
Quelqu'un aurait une idée?
J'ai pensé en dernier recours à passer en référence une variable any qui servirai de valeur retour et un return type integer pour gérer les erreurs
global type f_coalesce from function_object end type forward prototypes global function integer f_coalesce (any aa_tableau[], ref any aa_retour) end prototypes global function integer f_coalesce (any aa_tableau[], ref any aa_retour); long ll_for = 1 long ll_nb if isnull(aa_tableau) then return 0 ll_nb = upperBound( aa_tableau ) if ll_nb <1 then return 0 for ll_for = 1 to ll_nb if not isnull(aa_tableau[ll_for]) then aa_retour = aa_tableau[ll_for] return 1 end if next return 0 end function
Edit : code=PB => code=pb (c'est case-sensitive)
Dernière modification par Van (02-05-2013 12:17:47)
Hors ligne
Bonjour,
Tu peux tout simplement retourner NULL (en faisant un setnull sur une variable ANY au préalable).
Hors ligne
J'utilise jamais any c'est une première...pourquoi j'y ai pas pensé
Bon après ce moment où je me suis senti con, j'ai testé et ça passe nickel.
Hors ligne
Van a écrit:
J'utilise jamais any c'est une première...pourquoi j'y ai pas pensé
Bon après ce moment où je me suis senti con, j'ai testé et ça passe nickel.
ça arrive à tout le monde, j'imagine ta tête :
Hors ligne