|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 10 ![]() |
Bonjour,
Je souhaiterais utiliser la fonction @prompt de BO comme argument d'une fonction créée sous SQL server et appelée via BO mais j'ai un message d'erreur "Synthaxe incorrecte vers ',' " Pourtant cela fonctionne avec @Variable Quel format de chaîne récupère-t'on par @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free) quand l'utilisateurs sélectionne plusieurs valeurs ? Dans le Reporter j'affiche Val1;Val2;Val3 mais je présume que l'ordre SQL interprété par BO doit être différent... Merci de votre aide ! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Au lieu de
Code :
ma_fonction equal @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free) Code :
ma_fonction IN @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free)
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 10 ![]() |
En fait je souhaite faire
MaFonction(@Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free)) où @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free) est sensé être le paramètre d'entrée de la fonction... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
hum dur...
Je pense qu'il te ramène une liste séparée par des guillemets ou des cotes mais surtout je ne pense pas que tu pourras appliquer ta fonction sur cette liste. Les conditions dans BO sont ainsi : <objet> <opérateur> <valeur> donc à part en bricolant un objet particulier qui contienne déjà le prompt... Tu arrives à passer une seule valeur à ta fonction ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 10 ![]() |
Oui
J'arrive même à utiliser la fonction @Variable comme argument de ma fonction mais dans ce cas je ne peux saisir qu'une seule valeur d'entrée... |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 10 ![]() |
Pour info, la construction de l'objet est la suivante :
Clause WHERE csecteurs LIKE (select fn_secteur(@Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free))) La fonction doit renvoyer %Val1%Val2Val3% Le tout est de trouver la valeur de @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free) ... |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
J'ai fait pas mal de tests et je pense que c'est impossible de la manière dont tu veux le faire.
Voila ma théorie : ta fonction possède UN SEUL argument. Or quand tu sélectionnes plusieurs valeurs dans un prompt, BO exige une fonction OU un opérateur à plusieurs arguments (IN par exemple). Donc tu ne peux pas espérer sélectionner une série de valeurs et que BO les passe comme un seul argument à ta fonction. Par contre avec une fonction à N argument (3 dans ton cas, 1 pour val1, 1 pour val2 et 1 pour val3) ça marche très bien. Mais tu es limité en nombre d'arguments possibles, ce n'est pas flexible et ton utilisateur doit sélectionner les 3 valeurs unes par unes. Tu nous diras ce que tu as trouvé, mais je pense qu'il est impossible de "tromper" BO en sélectionnant plusieurs valeurs et en le forcant à les insérer dans un seul argument. A moins (peut-être) que l'argument de la fonction soit un tuple ou un objet de ce genre, qui est fait pour contenir plusieurs valeurs. Autre question : est-ce possible de définir des fonctions à nombre d'arguments non limités ? Dans ce cas ça serait faisable.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : mars 2006 Messages : 111 ![]() |
Bonjour
Dans ton cas, le like ne fonctionnerait pas. je suis d'accord avec nuke_y. Il faut obligatoirement utiliser un IN Dans le cas de confidentialité de données, j'ai créé une table d'utilisateur avec leur hiérarchie et suivant leur niveau hiérarchique, j'avais un champ FILTRE_HIERARCHIE qui mettait : hiérarchie filtre 000000 % 010000 % 010100 0101% 060000 06% 060100 0601% 060103 060103% 080003 080003% et ainsi de suite. Je n'utilisais pas de fonction mais j'aurais pu le faire. Je peux ainsi utiliser l'objet de cette manière: select .... from ... where hierarchie like (select FILTRE_HIERARCHIE from ...) Essaye de te créer une table de transcodage si c'est possible. Frédéric |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com