9
votes

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

Version cristalline - Crystal Reports 2008 Objets d'affaires - Xi

​​J'ai écrit une requête pour renseigner un sous-rapport et vouloir tirer un paramètre sur cette requête en fonction de la saisie d'un utilisateur. Ma question est la suivante: quelle est la syntaxe correcte que je dois mettre dans la première ligne de la clause "où" pour accepter le paramètre?

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


1 commentaires

J'ai essayé de déclarer et de définir une variable en haut de la SQL et je ne vois toujours pas le paramètre que je sélectionne dans le SQL, lorsque je regarde le SQL du sous-rapport. Est-ce que je fais quelque chose de mal? Déclare @projname Varcharchar (200) SET @PROJNAME = '{? PM-? PROJ_NAME}' Sélectionnez ProjectTname, relainé, nom de tâches de db_table où (PROJECT_NAME) comme @Projname et (relagué)> = couranteDate


4 Réponses :


0
votes

Essayez ceci:

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


6 commentaires

Cela fonctionnerait-il? Où le nom_name comme? '{? PM-? PROJ_NAME}' Quand j'exécute la requête et allez à "Base de données", "Afficher SQL ', je vois toujours le texte" {? PM-? PROJ_NAME}' et pas le paramètre que je entré. Est-ce exact?


J'ai donc essayé de déclarer et de définir une variable en haut de la SQL.


show sql montrera toujours le nom du paramètre. Je suppose que vous voulez utiliser des caractères génériques dans votre clause? Vous pouvez utiliser ces caractères génériques SQL:%: correspondre à tous les caractères. _: Faites correspondre un seul caractère. Exemples: Où PROJECT_NAME comme '% {? PM-? PROJ_NAME}%' Pour charger des enregistrements avec le nom de projet contenant {? PM-? Proj_name}. où projeter_name comme '_ {? PM-? PROJ_NAME}' Pour charger des enregistrements avec un nom de projet avec une seule lettre avant {? PM-? Proj_name}.


La déclaration et la définition d'une variable ne feront pas une différence AFAIK. Avez-vous un message d'erreur lorsque vous utilisez la requête dans ma réponse? Si oui, qu'est-ce que c'est?


Non, je n'ai pas eu d'erreur. Cependant, lorsque je montre la requête du sous-rapport, je ne vois pas le paramètre que j'ai entré. Je vois seulement: où projeter_name comme '{? PM-? PROJ_NAME}'


C'est comme prévu. Vous ne verrez pas la valeur de paramètre au moment de la conception. Placez le paramètre sur la section d'en-tête de la sous-rapport et exécutez le rapport pour voir les valeurs passées.



13
votes

Lorsque vous êtes dans la commande, cliquez sur Créer pour créer un nouveau paramètre; Appelez-le Project_Name code>. Une fois que vous l'avez créée, double-cliquez sur son nom pour l'ajouter au texte de la commande. Vous devez vous indiquer:

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


0 commentaires

8
votes

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

  1. Créez la requête SQL dans votre requête préférée Dev Outil LI>
  2. dans Crystal Reports, dans le rapport principal, créez un paramètre à passer au sous-rapport li>
  3. Créez un rapport sous-rapport, à l'aide de l'option "Ajouter une commande" dans la partie "Données" de "Assistant de création de rapport" et de la requête SQL du n ° 1. Li>
  4. Une fois que le sous-rapport est ajouté au rapport principal, cliquez avec le bouton droit de la souris sur la sous-rapport, choisissez "Modifier les liens de sous-rapport ...", sélectionnez le champ de lien et décochez "Sélectionner" Sélectionnez les données dans la sous-rapport en fonction du champ: '

    Remarque: vous devrez peut-être ajouter au départ le paramètre avec les «Sélectionner des données dans la sous-rapport en fonction du champ». Vérifiez, puis revenez à «Modifier les liens de sous-rapport» et décochez-la après la création du sous-rapport. P> li>

  5. Dans la sous-rapport, cliquez sur le menu "Sélectionner", "Sélectionner un expert", utilisez "Editeur de formule", définissez la colonne SQL de # 1 égale ou similaire au paramètre sélectionné dans # 4 . p>

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


1 commentaires

Le filtrage au niveau du cristal est très inefficace. Il est préférable de filtrer au niveau de la base de données lorsque cela est possible.



3
votes
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate
Note the single-quotes and wildcard characters. I just spent 30 minutes figuring out something similar.

0 commentaires