Crystal Reports 2008 Команда текст с параметрами - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть запрос, который правильно запускается из SQL Developer, но бомбы при попытке использовать его в качестве текстового запроса с параметрами в Crystal Reports 2008.

Запрос (жестко запрограммированные даты; правильно работает как Oracle Query и CR 2008 Command Text)

SELECT *
FROM   (SELECT PERSON.DISPLAYNAME AS NAME
               , LABOR.LA20       AS LABORRECEMPLOYEENUM
               , LABOR.LABORCODE  AS PERSONLABORCODE
        FROM   LABOR
               LEFT OUTER JOIN PERSON
                 ON ( LABOR.LABORCODE = PERSON.PERSONID )
        WHERE  LABOR.LA20 IS NOT NULL
               AND LABOR.ACTIVE = 1
               AND PERSON.DISPLAYNAME IS NOT NULL
               AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%kimball%'
               AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%electrico%'
               AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%misc labor cost adj%'
               AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%brossoit'
               AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%brossiot')PERSONINFO
       LEFT OUTER JOIN (SELECT *
                        FROM   LABTRANS
                        WHERE  LABTRANS.STARTDATE BETWEEN to_date('03/01/2011', 'mm/dd/yyyy') AND to_date('04/01/2011', 'mm/dd/yyyy')) REDUCEDLABORRANGE
         ON ( PERSONINFO.PERSONLABORCODE = REDUCEDLABORRANGE.LABORCODE )
WHERE  REDUCEDLABORRANGE.LABORCODE IS NULL; 

Что бы я хотел сделать

Заменить жестко заданные значения:

WHERE  LABTRANS.STARTDATE BETWEEN to_date('03/01/2011', 'mm/dd/yyyy') AND to_date('04/01/2011', 'mm/dd/yyyy')

С параметрами Crystal Reports в тексте команды.

Что я пробовал (и ошибки)

WHERE  LABTRANS.STARTDATE BETWEEN to_date({?BeginDate}, 'mm/dd/yyyy') AND to_date({?EndDate}, 'mm/dd/yyyy')

Выводит ошибку: не числовой символ был найден там, где ожидалось числовое значение [Код поставщика базы данных: 1858]

WHERE  LABTRANS.STARTDATE BETWEEN to_date('{?BeginDate}', 'mm/dd/yyyy') AND to_date('{?EndDate}', 'mm/dd/yyyy')

Выводит ошибку: отсутствует правильная скобка [Код поставщика базы данных 907]

Потенциальные ключи к решению

  • Я не могу понять, что Crystal на самом деле придерживается значений параметров или как они передаются в запрос.

1 Ответ

3 голосов
/ 23 декабря 2011

И, конечно же, вскоре после публикации я найду ответ.

Я понимаю, что я не доверял Crystal, чтобы поставить даты в надлежащем формате заранее (обычно, не доверяя Crystal Reports - правильный выбор).

Сработало следующее:

WHERE  LABTRANS.STARTDATE BETWEEN {?BeginDate} AND {?EndDate}

Нет необходимости дополнительно форматировать дату, поскольку они уже в правильном формате, выходящем из Crystal в Oracle.

...