PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV (précédentes versions) → _ Dans une requête paramètrée, inclure un résultat renvoyé par une fonction personnaliée
_ Dans une requête paramètrée, inclure un résultat renvoyé par une fonction personnaliée
Débuté par Francis DELENS, 27 nov. 2014 00:48 - 3 réponses
Membre enregistré
15 messages
Posté le 27 novembre 2014 - 00:48
Bonjour,


J'ai besoin de d'évaluer dynamiquement le résultat d'une expression contenue dans une rubrique pour chaque enregistrements.

J'ai une Procédure CalculeSurface(nParam1,nParam2,nParam3, sExpression) ,va qui renvoie un résultat numérique au moyen de la fonction WL EvalueExpression()

sExpression peu ressembler à des petites formules algébriques simples comme x*y ou (x+y)*2

Dans mon exemple, l'expression est contenue dans la rubrique "Art_Composant_Surface"

voici ma procédure et mon string SQL qui doit servir à remplir une table.
+-----------------------------------------------------------------------------------------------
PROCEDURE RemplirTableSynthèseMetréComposant( sParam_Art_Id est une chaîne)
sdMaSourceDeDonnée est une Source de Données
sStrSQL,sSsChaine est une chaîne

sStrSQL = "SELECT "+ ...
"Art_Composant.Art_Composant_Art_Id AS Art_Composant_Art_Id," + .....
"Art_Composant.Art_Composant_Surface AS Art_Composant_Surface "+...
" '" + CalculeSurface(10,10,10, " Art_Composant_Surface" ) + "' AS Art_Test, " + ...
"FROM Art_Composant WHERE Art_Composant.Art_Composant_Art_Id = '" + sParam_Art_Id +"'"

HExecuteRequeteSQL(.....

POUR TOUT ....
TableAjoute ...
FIN

+-----------------------------------------------------------------------------------------------

Ma procédure CalculSurface() me renvoi bien une valeur si je passe des paramètre en dur, par exemple "(x+y)*2".
Donc l'appel à une fonction perso fonctionne.

Mais en pratique, je dois passer une valeur contenue dans une rubrique nommée "Art_Composant_Surface".

La syntaxe avec les guillemets ne passe pas.

Dans mon code SQL, comment puis-je faire référence à la rubrique " Art_Composant_Surface " à l'intérieur de l'appel à la procédure?

Le support me signal que ce type de traitement n'est pas possible.

Pourtant, avec l'éditeur de requête et avec des fonctions WL il est possible de passer le nom d'une rubrique.
J'y arrive avec une fonction comme WL.Gauche("nom_de_la_rubrique) mais pas avec WL.EvalueExpression.
Si cette dernière devait fonctionner, il me faut encore lui fournir les valeur de mes 3 paramètres.


J'ai déjà pu réaliser ce type de requête avec fonctions perso intégrées sous VBA il y a un bon moment.

Je n'imagine pas ne pas pouvoir trouver une solution sous WebDev.
Peut être par une toute autre piste?

Je suis à votre écoute.

Déjà, merci pour votre aide.
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 27 novembre 2014 - 13:33
Bonjour,

Je n'ai pas trop bien compris mais regarde du côté de la fonction ChaîneConstruit() et ses %1 %2 .... à remplacer par une valeur.

C'est un soft de "métrés" ?

Bon dev et A+
Membre enregistré
15 messages
Posté le 27 novembre 2014 - 22:14
Bonsoir,

Merci à Joël pour son inerventions que je ne trouve plus ici.
Merci aussi à Tony.

J'ai croisé Marc lors du TDF de ce jour à qui j'ai soumis mon souci
Le fait que nous soyons en C/S rend ma démarche impossible en direct.

Du coup la technique du ConstruitChaîne(%1...) est sans espoir aussi.

Je continue en abordant l'obstacle avec une autre approche.

Merci à tous.
Membre enregistré
15 messages
Posté le 27 novembre 2014 - 23:16
Tony,

Au sujet du metré, je fais un site qui permettra à mes clients de calculer le prix exacte d'un ouvrage en fonctions de dimensions qu'ils renseignent.

F