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