按日期标准或逻辑搜索

Searching by date criteria OR Logic

这是我想要做的: 我目前有一份报告,我需要能够在 post 日期或入院日期和地点进行搜索。所以对于这个逻辑,我有这样的东西。我现在遇到的问题是我收到错误是因为日期字段而不是字符串。有没有办法修改它以使其工作?谢谢!

({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)

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

这是我能够针对有效的选择标准执行此操作的另一种方法。我在我的日期参数中设置了默认值 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)