Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports
Crystal Reports Forum d'entraide sur Crystal Reports. Avant de poster --> FAQ Crystal, Tutoriels Crystal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2011, 15h13   #1
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
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 :
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.
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h52   #2
Membre habitué
 
Inscription : juin 2008
Messages : 96
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 96
Points : 114
Points : 114
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
GaelleH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 16h35   #3
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
Merci pour ta réponse.
J'ai essayé les deux syntaxes

Code :
WHERE matable.monchamp = '{?ma_variable}'
et
Code :
WHERE matable.monchamp IN ('{?ma_variable}')
le résultat est le même.
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2012, 14h20   #4
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
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 :
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 :
''''  + 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 :
WHERE mon_champ IN {?param_sous_rapport}
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 07h03   #5
Membre Expert
 
Avatar de luc_chivas
 
Inscription : avril 2004
Messages : 894
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 894
Points : 1 049
Points : 1 049
Sous Oracle ??
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 11h11   #6
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
Oui, sous Oracle, il est bon de le préciser.
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h40.


 
 
 
 
Partenaires

Hébergement Web