水晶报告11:空白领域炸弹报告

时间:2008-10-14 20:54:58

标签: crystal-reports

我正在为sage mas 500 AR模块创建发票水晶报告。在其中,我尝试使用以下公式添加tarinvoice.balance字段:

if {tarPrintInvcHdrWrk.Posted} = 1 then 
    ToText({tarInvoice.Balance})

我假设当{tarPrintInvcHdrWrk.Posted} = 1条件语句保持为FALSE时,它不会尝试提取发票字段,因为当我从报表中删除公式时,表单会在没有它的情况下正确显示。

当条件语句在报表中呈现为true时,balance字段的行为正确。但是,如果公式在CR表单中呈现FALSE,则整个水晶报告会弹出并显示为空白。任何想法为什么或我做错了什么?


刚尝试将所有内容设置为零,报告仍然炸弹。我开始认为它更多是报告中的查询错误。我希望有一种方法可以在发布= 0时排除查询中的字段。

当发布= 0时删除tarinvoice.balance,报告正常 如果包含tarinvoice.balance且已过帐= 1,则报告正常。

包含tarinvoice.balance并张贴= 0,报告炸弹。

7 个答案:

答案 0 :(得分:2)

我相信如果遇到NULL,条件语句会立即失败,所以你的公式需要测试 IsNull({tarPrintInvcHdrWrk.Posted}),然后才能测试与“1”的相等性。

答案 1 :(得分:0)

您可以更改Crystal处理公式中值的空值的方式。在Formula Workshop的顶部有一个下拉框,通常显示“Nulls Exges” 将其更改为其他选项“Nulls的默认值”,您的公式不应再爆炸。您曾经能够指定应用的默认值,但更新版本的Crystal具有这些硬编码。 在“Null Treatment”的帮助中搜索显示它们的表格。

答案 2 :(得分:0)

我将公式修改为:

if isnull({tarPrintInvcHdrWrk.Posted}) = FALSE then 
    if {tarPrintInvcHdrWrk.Posted} = 1 then 
        if isnull({tarInvoice.Balance}) = FALSE then 
            ToText({tarInvoice.Balance})
        else 
            "0.00" 
    else 
        "0.0"
else 
"0"

水晶报告仍在轰炸..然而,它确实在适当的空间显示“0”。

答案 3 :(得分:0)

我在Exp.Exch上看到了一个建议,尝试将字段放入变量,然后再将其转换为文本 例如

NumberVar InvoiceBalance;  
If isnull({tarInvoice.Balance}) then
    InvoiceBalance := 0
Else
    InvoiceBalance := {tarInvoice.Balance};

If {tarPrintInvcHdrWrk.Posted} = 1 then
    ToText(InvoiceBalance);

我也试图重现你的问题,因为我之前看过类似的事情 尝试使用CR 8.5& XI R2。 Perhpas也与链接表有关,因为我只试过一个简单的单个表 我在运行总计中使用公式时也看到了类似的行为 - 他们根本不喜欢空值!

答案 4 :(得分:0)

如果你将{tarInvoice.Balance}直接放在报告上(详见“调试”部分 - 经常需要,不要忘记在生产中压制它:)),它显示的值或报告变为空?

答案 5 :(得分:0)

也许您在报告中有“禁止空白”部分。试着把:Else“”

答案 6 :(得分:0)

if isnull({tarPrintInvcHdrWrk.Posted}) or {tarPrintInvcHdrWrk.Posted}=0 then
" "
else
if {tarPrintInvcHdrWrk.Posted} = 1 then 
    ToText({tarInvoice.Balance})
else
" "

在将报告导出到excel时,我遇到了这种问题。没有数据的字段会将其右侧的所有列拉到“填补空白”。