如果没有参数值传递给报告,我希望在整个上个月运行报告。我该怎么做呢?
另一种选择是默认加载到上个月,然后刷新时,可以选择日期的新参数。
有没有办法做其中任何一种?
这是我的命令窗口。我的日期参数选择了SQL代码。
select cc.NM, dst.DSCRPTN, count(*)
from DST_SUBMITTION dsts , PATIENT p, DRUG_SCREEN_TEST dst, CARE_CENTER cc
where dsts.PTNT_ID = p.PTNT_ID
and p.CC_ID = cc.CC_ID
and dsts.DST_ID = dst.DST_ID
and date(APNTMNT_DT) >= date({?startDt})
and date(APNTMNT_DT) <= date({?endDt})
and dsts.STS_CD in ('A', 'I')
group by cc.NM, dsts.DST_ID;
答案 0 :(得分:1)
您可以在SQL中完全执行此操作。使用null coalescing运算符,如果没有提供值,则计算默认值。有点像...
DATE >= ISNULL(?StartDate, DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)))
AND DATE <= ISNULL(?EndDate, DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)))
答案 1 :(得分:0)
我会设置一个公式来确定参数是否为null。然后使用新公式替换报表中的每个参数实例。类似的东西:
If HasValue({DateParameter})
Then DateAdd ("m", -1, CurrentDate)
Else {Parameter}
答案 2 :(得分:0)
如下所示在crystal report中创建一个参数,并使“optional prompt”为TRUE。 在选择导出条件中应用此类公式。
if hasvalue({?Date parameter}) then
{table.Date} <= {?Date parameter}
else
{table.Date} <= DateAdd ("m", -1, CurrentDate)
如果在参数中没有选择任何内容,您将获得上个月的结果..