按日期标准或逻辑搜索

时间:2015-01-29 19:36:43

标签: crystal-reports crystal-reports-2008

以下是我要做的事情: 我目前有一份报告,我需要能够在发布日期或录取日期和位置进行搜索。所以对于这个逻辑,我有类似的东西。我现在遇到的问题是我得到错误,因为日期字段而不是字符串。有没有办法让我修改它?谢谢!

({HSP_TRANSACTIONS.TX_POST_DATE}  in {?Start Date} or
({?Start Date} = '' and not isnull({HSP_TRANSACTIONS.TX_POST_DATE}))) and

({HSP_ACCOUNT.ADM_DATE_TIME} in {?Admit Date} or
({?Admit Date} = '' and not isnull ({HSP_ACCOUNT.ADM_DATE_TIME}))) and

(If {?Location} = "X" then ({HSP_ACCOUNT.ACCT_CLASS_HA_C} = '160' or {CLARITY_DEP.RPT_GRP_SIX} in[7,8])
else If {?Location} = "Y" then {HSP_ACCOUNT.ACCT_CLASS_HA_C} <> '160' or isnull({HSP_ACCOUNT.ACCT_CLASS_HA_C})=true
or {CLARITY_DEP.RPT_GRP_SIX} <> [7,8] or isnull({CLARITY_DEP.RPT_GRP_SIX})=true)

2 个答案:

答案 0 :(得分:0)

你说得对:你无法将参数与空字符串进行比较,因为它们是两种不同的数据类型。如果您希望{?Start Date}参数是可选的,则必须将其设置为可选(通过编辑参数并设置Optional Prompt=True)。然后,在您的记录选择公式中,您可以使用hasvalue()函数检查该参数是否具有值。

答案 1 :(得分:0)

这是另一种方法,我能够为有效的选择标准做到这一点。我在我的参数中设置了默认值1/1/1900的日期。然后:

(
if {?Start Date} = date(1900,1,1) then
{HSP.POST_DATE} = {HSP.POST_DATE}
else
{HSP.POST_DATE} in {?Start Date}
)
AND
(
if {?Admit Date} = date(1900,01,01) then
{HSP.DATE_TIME} = {HSP.DATE_TIME}
else
{HSP.DATE_TIME} > {?Admit Date} 
)
AND
(If {?Location} = "X" then ({HSP.ACCT_CLASS} ='160' or {DEP.RPT_GRP_SIX} in[7,8])
else If {?Location} = "Y"
then {HSP.ACCT_CLASS} <> '160' or isnull({HSP.ACCT_CLASS})=true
or {DEP.RPT_GRP_SIX} <> [7,8] or isnull({DEP.RPT_GRP_SIX})=true)