Ошибка макроса подсказки даты Cognos - PullRequest
2 голосов
/ 20 января 2010

Эта проблема относится к версиям Cognos Report Studio с версий 8.3 до 10.1.1.

В Report Studio 8.3 этот необработанный SQL-запрос выполняется с источником данных MySQL 5.1:

SELECT enc.encounterID, enc.date
FROM enc
WHERE enc.date between #prompt('textPromptStartDate')# AND #prompt('textPromptEndDate', 'date')#

Это создает текстовые подсказки для пользователя.Если пользователь вводит даты в эти приглашения в формате «ГГГГ-ММ-ДД», например, «2010-01-15», запрос работает нормально.Но я хочу заменить текстовые подсказки соответствующими подсказками даты.Когда я пытаюсь заменить вышеприведенные приглашения на

#prompt('datePromptStartDate', 'date') AND #prompt('datePromptEndDate', 'date')#

, запрос выполняется (ошибки не генерируются), но я получаю пустой набор результатов.У меня такое чувство, что мне нужно настроить формат даты, который возвращает макрос запроса даты, но я застрял после многих часов экспериментов над тем, как отладить это.

Ответы [ 3 ]

1 голос
/ 01 февраля 2016

Для дат вам нужны одинарные кавычки вокруг значения. Я делаю это с помощью функции "sq":

# sq (подсказка ('DateParameterFromPromptPage', 'date')) #

0 голосов
/ 28 августа 2012

Можно создать подсказку без страницы подсказки для подсказок даты без использования страницы подсказки. Я тоже сталкивался с этой проблемой на SQL Server, пока не выполнил трассировку профиля. Трассировка профиля показала, что Cognos не передает кавычки вокруг значения даты. Я исправил проблему, передав приглашение в виде строки, заменив строку проверки по умолчанию (testValue) на реальную дату, построив строку в переменной и передав ее в фактический запрос. Вот что я использовал для преобразования запроса даты в обычный тип данных DATE.

DECLARE @StartDate DATE = CONVERT(DATE, REPLACE(#prompt('StartDate')#, 'testValue', '1/1/2012'));
0 голосов
/ 27 февраля 2010

Вы можете создать страницу подсказки с элементами управления подсказками даты, а затем привязать их к параметрам в макросах подсказок. Я протестировал это в 8.4 с MySQL 5.1 (ODBC), используя запрос, который вы имели выше, и это сработало. У меня также была та же проблема, с которой вы столкнулись, когда данные не возвращались до создания отдельной страницы приглашения и привязки элементов управления.

Шаги, которые вы бы предприняли для этого:

  1. добавить страницу с подсказкой (если она не существует) к вашему отчету
  2. добавить 2 элемента управления подсказками даты на страницу подсказки
  3. в свойстве «Параметр» для первого запроса даты введите: datePromptStartDate
  4. в свойстве «Параметр» для второй подсказки даты используйте: datePromptEndDate

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

Edit: Я забыл добавить, что макросы в вашем SQL должны выглядеть следующим образом:

SELECT enc.encounterID, enc.date 
FROM enc 
WHERE enc.date between #prompt('textPromptStartDate')# 
AND #prompt('textPromptEndDate')#
...