【发布时间】:2011-12-23 03:16:22
【问题描述】:
我有一个可以从 SQL Developer 正确运行的查询,但在尝试将其用作带有 Crystal Reports 2008 中参数的命令文本查询时会出现问题。
查询(硬编码日期;作为 Oracle 查询和 CR 2008 命令文本正确运行)
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 实际添加到参数值中的是什么,或者它们是如何传递给查询的。
【问题讨论】:
标签: oracle crystal-reports crystal-reports-2008