【问题标题】:Crystal Reports formula field not working when command field is zero当命令字段为零时,Crystal Reports 公式字段不起作用
【发布时间】:2012-03-27 21:55:36
【问题描述】:

我创建了一个具有命令字段的 Crystal 报表

count(service_ID):

select count(service_ID) 
from inbound_service 
where service_ID={?Service_ID}

它会根据数据库返回正确的计数值。

在主报告中我有一个公式字段

@Service_ID:

if count(service_ID) =0 
then "ID Does not exists"
else {?Service_ID}

如果命令字段等于 0,则它可以工作,但不适用于count(service_ID) = 0

如果我尝试在报告中显示命令字段值,它会为非零计数提供正确的值,但对于 0 计数不显示任何内容。

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    如果数据库中没有与 {?Service_ID} 匹配的行,那么您的 SQL 命令的结果集将为空且没有行;不是 count(service_ID)=0。相反,您将不得不使用isnull(count(service_ID))

    编辑:我忽略了一个事实,即 SQL 命令本身中有一个 count() 并且第二个“count”指的是该字段而不是 Crystal 汇总函数。在这种情况下,应返回值为 0 的单行。

    【讨论】:

    • :我试过按照你说的做,但没有用,我这样做了if isNull({Command.COUNT(SERVICE_ID)}) then "Does Not Exists" else {?Service_ID} 如果我浏览命令字段,即使匹配 service_ID 的值,它也显示不存在,它显示非零匹配 service_ID 的值,但在公式字段中充当空值,并且如果我尝试在报告中显示命令字段的值,它不会显示任何内容,而是在浏览它时显示计数值。
    • @prash 我犯了一个错误 - 请参阅我的编辑。至于您的问题,您可能需要解释报告中还有什么内容:您将这个公式放在哪个部分?您的数据模型和报告的其余部分是什么样的?
    • 我在详细信息部分有许多其他字段,但它们是从另一个表和报告的主查询中填充的。我正在谈论的这个公式字段位于报告标题部分。报告中没有进行分组。在浏览命令字段时,它显示的是预期值,但是当插入到报告标题中时,它什么也没显示。但如果主查询返回一些行,则插入的命令字段会显示其值。
    • 我在报告标题中为@abc:isNull({count(Service_ID)}) 的命令字段插入了一个空检查,即使{count(Service_ID)} 的浏览器值为1.00 但它应该显示 false.
    • @prash 我怀疑您的部分问题是您如何将 SQL 命令数据与报表的主查询相关联。如果 inbound_service 表在您的主查询中,也许您可​​以使用 Crystal 的汇总函数。如果它不在主报告中,请尝试使用 SQL 表达式。在我看来,命令在这里有点矫枉过正,会给你带来不可预测的行为。您的问题归结为主查询中的第一条记录在命令中没有值,但我不能说更多,因为我不知道它们是如何联系在一起的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多