У меня есть запрос, который правильно запускается из 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 на самом деле придерживается значений параметров или как они передаются в запрос.