Crystal Reports-Добавление параметра в запрос 'Command'

Версия Crystal-Crystal Reports 2008 Бизнес-объекты-XI

Я написал запрос для заполнения вложенного отчета и хочу вытащить параметр в этот запрос на основе ввода от пользователя. Мой вопрос в том, какой правильный синтаксис мне нужно поместить в первую строку предложения "Where", чтобы принять параметр?

вот запрос, который я использую в Crystal Reports:

Select 
Projecttname,
ReleaseDate,
TaskName

From DB_Table

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

4 ответов


когда вы находитесь в команде, нажмите кнопку Создать, чтобы создать новый параметр; назовите его "имя_проекта". После его создания дважды щелкните его имя, чтобы добавить его в текст команды. Ваш запрос должен напоминать:

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

при желании свяжите основной отчет с вложенным отчетом об этом ({?имя_проекта} поле). Если связь между основным и вложенным отчетом не установлена, CR запросит параметр вложенного отчета.

в версиях до 2008 года команда параметру было разрешено иметь только скалярное значение.


решение я придумал так:

  1. создайте SQL-запрос в своем любимом инструменте разработки запросов
  2. в Crystal Reports в главном отчете создайте параметр для передачи во вложенный отчет
  3. Create sub report, используя опцию "Добавить команду" в части "данные" мастера создания отчета и SQL-запрос из #1.
  4. после добавления вложенного отчета в основной отчет щелкните правой кнопкой мыши на вложенном отчете, выберите 'Изменение Вложенного Ссылки...", выберите поле Ссылка и снимите флажок " выбрать данные в вложенном отчете на основе поля:"

    Примечание: возможно, вам придется сначала добавить параметр с " Select data in subreport based on field:", затем вернуться к "Change Subreport Links" и снять флажок после создания вложенного отчета.

  5. в вложенном отчете нажмите меню "отчет", "выберите эксперт", используйте "редактор формул", установите столбец SQL из #1 равным или как параметр(ы), выбранный в #4.

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

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

обратите внимание на одинарные кавычки и символы подстановки. Я только что потратил 30 минут на то что-то подобное.


попробуйте это:

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

currentdate должна быть действительной функцией базы данных или полем для работы. Если вы используете MS SQL Server, вместо этого используйте GETDATE ().

Если все, что вы хотите, это фильтровать записи в вложенном отчете на основе параметра из основного отчета, может быть проще просто добавить таблицу в вложенный отчет, а затем создать ссылку Project_Name между основным отчетом и вложенным отчетом. Затем можно использовать Select Expert для фильтрации ReleaseDate как что ж.