web-dev-qa-db-fra.com

Crystal Reports - Ajout d'un paramètre à une requête 'Commande'

Version Crystal - Crystal Reports 2008 Business Objects - XI

J'ai écrit une requête pour remplir un sous-rapport et je veux extraire un paramètre à cette requête en fonction des entrées d'un utilisateur. Ma question est la suivante: quelle est la syntaxe correcte à mettre dans la première ligne de la clause «Where» pour accepter le paramètre?

Voici la requête que j'utilise dans Crystal Reports:

Select 
Projecttname,
ReleaseDate,
TaskName

From DB_Table

Where
(Project_Name like {?Pm-?Proj_Name})) and 
(ReleaseDate) >= currentdate
6
Jeremy F.

La solution que j'ai trouvée était la suivante:

  1. Créez la requête SQL dans votre outil de création de requête préféré
  2. Dans Crystal Reports, dans le rapport principal, créez un paramètre à transmettre au sous-rapport.
  3. Créez un sous-rapport en utilisant l'option "Ajouter une commande" dans la partie "Données" de l '"Assistant de création de rapport" et la requête SQL à partir de # 1.
  4. Une fois le sous-rapport ajouté au rapport principal, cliquez avec le bouton droit de la souris sur le sous-rapport, choisissez "Modifier les liens du sous-rapport ...", sélectionnez le champ du lien et décochez la case "Sélectionner les données dans le sous-rapport en fonction du champ:".

    REMARQUE: vous devrez peut-être initialement ajouter le paramètre avec la case à cocher 'Sélectionner les données dans le sous-rapport en fonction de:', puis revenir à 'Modifier les liens de sous-rapport' et le désélectionner une fois le sous-rapport créé.

  5. Dans le sous-rapport, cliquez sur le menu "Rapport", sur "Sélectionner un expert", sur "l'éditeur de formules", définissez la colonne SQL de # 1 comme égale ou similaire au (x) paramètre (s) sélectionné (s) dans # 4.

                    (Subreport SQL Column)  (Parameter from Main Report)
            Example:  {Command.Project} like {?Pm-?Proj_Name}
    
6
Jeremy F.

Lorsque vous êtes dans la commande, cliquez sur Créer pour créer un nouveau paramètre. appelez-le 'nom_projet'. Une fois que vous l'avez créée, double-cliquez sur son nom pour l'ajouter au texte de la commande. Votre requête devrait ressembler à:

SELECT Projecttname, ReleaseDate, TaskName
FROM DB_Table
WHERE Project_Name LIKE {?project_name} + '*'
AND ReleaseDate >= getdate() --assumes sql server

Si vous le souhaitez, liez le rapport principal au sous-rapport de ce champ ({? Nom_projet}). Si vous n'établissez pas de lien entre le sous-rapport principal et le sous-rapport, CR vous demandera le paramètre du sous-rapport.

Dans les versions antérieures à 2008, le paramètre d'une commande était uniquement autorisé à être une valeur scalaire.

9
craig
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate

Notez les guillemets simples et les caractères génériques. Je viens de passer 30 minutes à trouver quelque chose de similaire.

3
Lance E

Essaye ça:

Select Project_Name, ReleaseDate, TaskName
From DB_Table
Where Project_Name like '{?Pm-?Proj_Name}'
  And ReleaseDate >= currentdate

currentdate devrait être une fonction ou un champ de base de données valide pour fonctionner. Si vous utilisez MS SQL Server, utilisez plutôt GETDATE ().

Si vous souhaitez uniquement filtrer les enregistrements d'un sous-rapport en fonction d'un paramètre du rapport principal, il serait peut-être plus simple d'ajouter simplement la table au sous-rapport, puis de créer un lien Nom_Projet entre le rapport principal et le sous-rapport. Vous pouvez ensuite utiliser l'expert de sélection pour filtrer également la ReleaseDate.

0
Dileep A