我是Crystal Rpts的新手......我在Windows 7 pro 64位上使用了13。我正在尝试为基本报告编写选择标准公式。这就是我想说的。
如果status.temp_date为空(null)但status.perm_date有一个日期(非空)
然后拉出status.perm_date所在的所有记录。 projectedstatus.projected_date和status.perm_date位于projectedstatus.projected_date的日期范围内(projectedstatus.projected_date {?开始日期}到projectedstatus.projected_date {?结束日期})
也拉
所有带有projectedstatus.projected_date的记录都在projectedstatus.projected_date {?start date}和projectedstatus.projected_date {?end date}之间
这是我写的:
(isnull({status.temp_date}) and not isnull({status.perm_date}) and
{status.perm_date} < {projectedstatus.projected_date} and
{projectedstatus.projected_date} in {?sdate} to {?edate}
这只返回带有perm.date的记录....当前没有perm.date的活动记录和在所选日期范围内的projection.dates
然后我尝试了:
if(isnull({status.temp_date})) and not isnull({status.perm_date}) then
{status.perm_date} < {projectedstatus.projected_date} and
{projectedstatus.projected_date } in {?sdate} to {?edate} and
if (isnull({status.temp_date})) and isnull({status.perm_date}) and not isnull
({projectedstatus.projected_date}) then
{projectedstatus.projected_date} in {?sdate} to {?edate}
现在我没有得到任何记录.....
有什么建议吗?
答案 0 :(得分:0)
我长时间使用过水晶报告,选择公式会写入每一行,如果你写的表达式为true,那么该记录就会被包括在内。 if返回false,则不包括该记录。
从你的代码片段中你必须使用if else if条件以便处理每个条件一个布尔值true或false应该从那里得到
你可以做的另一种方法是,如果很容易写出那些行不应该出现的否定情况,只需在if中写入该条件并返回false也有其他条件,返回为true,以便对于所有其他条件行被选中
例如,
if ((isnull({temp.date}) and not isnull({perm.date}) and (( {perm.date} < {projected.date} and NOT {projected.date} in {?sdate} to {?edate}) OR ({perm.date} > {projected.date}))) then FALSE ELSE TRUE
请检查语法一次。