IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Deski Discussion :

@prompt comme argument d'une fonction


Sujet :

Deski

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut @prompt comme argument d'une fonction
    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 !

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_fonction equal @Prompt('Quel(s) Secteur(s)','A','Secteur\Code',multi,free)
    tu pourrais tenter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    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...

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    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.

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    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...

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    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) ...

  7. #7
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    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.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 128
    Points
    128
    Par défaut Utilisation d'une fonction dans un objet B.O.
    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

Discussions similaires

  1. Utiliser une structure comme argument d'une fonction
    Par guilermo dans le forum Débuter
    Réponses: 7
    Dernier message: 15/10/2009, 10h05
  2. [Langage] une fonction comme argument d'une fonction?
    Par Krishna dans le forum Langage
    Réponses: 9
    Dernier message: 15/10/2008, 20h31
  3. Réponses: 7
    Dernier message: 22/06/2008, 00h05
  4. Réponses: 14
    Dernier message: 16/05/2006, 11h26
  5. une url comme argument d'une fonction
    Par khayyam90 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2004, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo