passage de paramètre de champ |
Sujet: passage de paramètre de champ par john sur 8/8/2007 10:58:48 Bonjour, Voici mon problème, j'aimerais passer des champs en paramètres à mes procédures, comme pour les procédure WinDev natives. C'est à dire que je veux pouvoir la passer avec ou sans guillemets. Si vous avez déjà résolu ce problème, où si une solution existe dans une version supérieure à WinDev 9, je suis intéressé. Voici un début de code qui me permet d'avoir le nom du champ dans la variable s_Zone à la fin, il n'est pas encore parfais, car des cas tordus peuvent faire que cela ne marche pas. PROCEDURE maProcedure(x_nomChamp) s_Zone est une chaîne //// si le paramètre n'est pas une chaine, alors c'est forcement un champ de type numérique SI TypeVar(x_nomChamp)<>wlChaîne ALORS s_Zone=x_nomChamp..Nom SINON // si c'est un champ de type chaine, ou bien un chaine qui contient le nom du champ (dont le type reste indéterminé) SI Taille(x_nomChamp)=0 ALORS // c'est un champ texte qui ne contient rien // ça pourrait être aussi une chaine de caractère vide, mais c'est quasi impossible, // car le paramètre est obligatoire, et cela fesait planter l'utilsation d'une indirection s_Zone=x_nomChamp..Nom SINON //// c'est un champ texte qui contient qq chose // on suppose que le contenu du champ texte, ne peut pas être un nom de champ qui existe // sinon si ce champ existe et est vide, cela va faire un faux positif // si le valeur de x_nomChamp n'est pas un champ qui existe, alors x_nomChamp doit être un champ texte // ce champ texte qui contient qq chose => il ne faut rien faire sauf s'il s'agit d'une date fausse SI Occurrence(x_nomChamp)=0 ALORS s_Zone=x_nomChamp..Nom SINON // sinon il s'agit d'une chaine qui contient le nom du champ => il faut tester la valeur du champ // ou bien cela peut être un champ texte, qui a pour valeur le nom d'un champ (cas tordu et quasi-impossible) s_Zone=x_nomChamp FIN FIN FIN Trace(TypeVar(x_nomChamp),s_Zone) |