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

SAP Crystal Reports Discussion :

Commande SQL et variable à valeurs multiples [CR XI]


Sujet :

SAP Crystal Reports

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut Commande SQL et variable à valeurs multiples
    Bonjour,
    Dans mon état Crystal, j'ajoute une "commande" SQL dans l'expert base de données.

    Cette requête contient un filtre where que j'applique sur une variable Crystal, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE matable.monchamp = '{?ma_variable}'
    Tant que ma_variable contient des valeurs unique, cela fonctionne, mais si je transforme ma variable en valeur mutliple et que je saisis plusieurs valeurs, la commande SQL bug, elle ne ramène plus aucune valeurs (alors qu'elle devrait en ramener plus que dans le cas de la variable à valeurs unique, car j'ai selectionné de nombreuses valeurs pour ma variable). Je n'arrive pas à trouver la bonne syntaxe pour que la commande SQL fonctionne.

    Je précise que je ne peux pas substituer ce filtre dans ma commande SQL par un filtre dans l'expert sélection, je suis obligé de poser le filtre directement dans la commande SQL.

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 202
    Points : 258
    Points
    258
    Par défaut
    En tout cas , dans l'expert sélection:

    {matable.monchamp} in {?paramètre_de_l'état}

    fonctionne très bien quand les valeurs sont séparées par des virgules ...

    sans doute qu'en remplacant = par in dans ta requête et en séparant tes valeurs pas des virgule ca fonctionnera

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    Merci pour ta réponse.
    J'ai essayé les deux syntaxes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE matable.monchamp = '{?ma_variable}'
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE matable.monchamp in ('{?ma_variable}')
    le résultat est le même.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    3 mois après la bataille, je vous livre la solution que j'ai obtenue sur le forum Business Objects Board.

    Le problème est que à l’intérieur d’une commande SQL, il est impossible de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE mon_champ in {?param}
    si {?param} est un paramètre à valeur multiple.

    Pour contourner ce problème, voici comment procéder, en utilisant un sous rapport :
    Dans notre état principal, on n’ajoute pas la commande SQL, on créer juste le paramètre à valeur multiple, puis on créé une formule comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ''''  + Join ( {?param} ,  ''',''' ) + ''''
    On obtient ainsi des chaines de caractères du type : ‘valeur1’,’valeur2’,‘valeur3’…etc
    Puis on crée un sous rapport qu’on insère dans notre rapport principal, et on passe à ce sous rapport comme paramètre la formule qu’on a créé.

    Dans ce sous rapport, ce paramètre {?param_sous_rapport} peut être utilisé dans une commande SQL, et on récupère ainsi bien dans le in toutes les valeurs multiples saisies.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE mon_champ in {?param_sous_rapport}

  5. #5
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Sous Oracle ??
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    Oui, sous Oracle, il est bon de le préciser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL+Access] Champs à valeurs multiples
    Par Guillaume45 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/10/2012, 11h19
  2. Réponses: 2
    Dernier message: 07/09/2010, 14h15
  3. [SQL2K5] Astuce pour utiliser une variable à valeur multiple
    Par Jinroh77 dans le forum Développement
    Réponses: 0
    Dernier message: 28/05/2008, 14h27
  4. [SQL] affecter la valeur SQL NULL si la variable est vide
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/03/2007, 18h44
  5. Réponses: 5
    Dernier message: 16/05/2006, 09h23

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