Crystal Reports - добавление параметра в запрос «Команда» - PullRequest
6 голосов
/ 16 февраля 2011

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

Я написал запрос для заполнения подотчета и хочу получить параметр для этого запроса на основе ввода от пользователя.У меня вопрос: какой правильный синтаксис мне нужно указать в первой строке предложения «Где», чтобы принять параметр?

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

Select 
Projecttname,
ReleaseDate,
TaskName

From DB_Table

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

Ответы [ 4 ]

9 голосов
/ 19 февраля 2011

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

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

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

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

6 голосов
/ 31 мая 2011

Решение, которое я придумал, было следующим:

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

    ПРИМЕЧАНИЕ. Возможно, вам придется сначала добавить параметр с установленным флажком «Выбор данных в подотчете на основе поля:», затем вернуться к «Изменить ссылки подотчета» и снять флажок после создания подотчета.

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

                    (Subreport SQL Column)  (Parameter from Main Report)
            Example:  {Command.Project} like {?Pm-?Proj_Name}
    
3 голосов
/ 30 января 2012
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate

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

0 голосов
/ 16 февраля 2011

Попробуйте:

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 для фильтрации ReleaseDate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...