Подскажите страницу Статический выбор - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь создать приглашение на своей странице приглашения, чтобы пользователь мог выбрать конкретный квартал.например, пользователь выберет «2018 Q1» из приглашения, и отчет будет знать, что даты «2018 Q1» находятся между 01.07.2008 и 30.09.2008.Возможно ли это сделать?Я возился со статическим выбором, но не очень далеко.Мои знания Cognos будут классифицироваться как общие.

1 Ответ

0 голосов
/ 22 января 2019

Есть несколько способов сделать это. Вы не указали, хотите ли вы, чтобы варианты, предлагаемые пользователю в приглашении, были динамическими. Динамические запросы обычно обеспечивают лучшее качество обслуживания клиентов и требуют меньшего количества обслуживания. Я объясню, как сделать динамический и, если вы хотите статический, просто введите значения в приглашение, а не исходить из запроса. Остальные инструкции применимы.

Динамический (предпочтительно)

  1. Создать новый запрос
  2. Назовите запрос тем, что указывает на его функцию, например, 'Квартальная подсказка'
  3. В запросе создайте новый элемент данных, который будет содержать то, что вы хотите, чтобы подсказка отображалась пользователю.

Например, если вы хотите, чтобы в подсказке отображалось «2018 Q1», вы можете создать эту строку из таблицы Date следующим образом:

[Year] + ' Q' + [Quarter]

Если вы сгенерируете табличные данные для этого запроса, вы получите список всех комбинаций год / квартал в вашей таблице дат:

2018 Q1
2018 Q2
2018 Q3
2018 Q4
2017 Q1
...
  1. Ограничить список только диапазоном кварталов, которые вы хотите запросить.

Например, если вы хотите показывать только кварталы в текущем году, добавьте этот фильтр:

[Year] = year(current_date)

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

  1. Установите для свойства запроса Query значение нового запроса, а для свойств Use Value и Display Value - для элемента данных, который вы определили в запросе приглашения

Чтобы применить выбор подсказки к вашему отчету, вы просто добавляете фильтр к соответствующему запросу отчета, который принимает входные данные пользователя и сравнивает его с данными:

[Year] + ' Q' + [Quarter] = ?quarterPrompt?

Теперь такой способ может привести к неэффективной работе. Чтобы применить фильтр, каждая строка должна быть проверена, преобразована в формат строки и сравнена. Если вам нужна лучшая производительность, лучше сделать фильтр следующим образом:

[Year] = substring(?quarterPrompt?,1,4) AND [Quarter] = substring(?quarterPrompt?,7,1)

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

Добавление

Моя интуиция подсказывала мне, что может быть даже лучший способ. После осмотра я понял, что есть еще более эффективный способ справиться с этим, исключив все разборы строк. Вот части процедуры, которая будет изменена:

  1. Вам необходимо добавить новый элемент данных в качестве значения использования, переданного в запрос отчета.

Создайте второй элемент данных в запросе приглашения со следующим выражением:

[Year] * 100 + [Quarter]

Для каждой комбинации года и квартала теперь у вас будет число, кодирующее комбинацию. Например, для года 2018 и квартала 2 новый элемент данных вернет 201802.

  1. Изменить свойства подсказки. Укажите значение использования для вновь созданного элемента данных.
  2. Измените фильтр в запросе отчета, чтобы использовать новое числовое значение

Это будет выглядеть примерно так:

floor(?quarterPrompt?/100) = [Year]
AND mod(?quarterPrompt?,100) = [Quarter]

Эта только числовая операция может иметь лучшую производительность, чем синтаксический анализ на основе подстрок в исходном ответе, но имеет тот же эффект.

...