2

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

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

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

当条件语句在报表中呈现为真时,余额字段的行为正确。但是,由于公式在 CR 表单中呈现 FALSE,整个水晶报表会爆炸并显示空白。任何想法为什么或我做错了什么?


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

tarinvoice.balance张贴 = 0 时删除,报告工作正常。
包含并tarinvoice.balance发布= 1,报告工作正常。

包含并tarinvoice.balance发布=0,报告炸弹。

4

7 回答 7

2

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

于 2008-10-14T21:14:41.980 回答
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”。

于 2008-10-15T14:56:42.633 回答
0

也许您的报告中有 Suppress If Blank 部分。试着把:否则“”

于 2009-05-25T04:22:38.360 回答
0

如果您将 {tarInvoice.Balance} 直接放在报告上(进入详细的“调试”部分 - 经常需要,不要忘记在生产中抑制它:)),它显示什么值或报告变成空?

于 2008-10-31T22:54:30.340 回答
0

您可以更改 Crystal 处理公式中值的空值的方式。在 Formula Workshop 的顶部有一个下拉框,通常显示“Exceptions For Nulls”。
将此更改为另一个选项“Nulls 的默认值”,您的公式不应再被炸毁。您过去可以指定应用的默认值,但最新版本的 Crystal 对这些进行了硬编码。在“Null Treatment”的帮助中搜索显示它们的表格。

于 2008-10-15T06:08:52.963 回答
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,但运气不佳。也许它也与链接表有关,因为我只尝试了一个简单的单表。
在运行总计中使用公式时,我也看到了类似的行为——它们根本不喜欢空值!

于 2008-10-17T08:34:59.393 回答
0
if isnull({tarPrintInvcHdrWrk.Posted}) or {tarPrintInvcHdrWrk.Posted}=0 then
" "
else
if {tarPrintInvcHdrWrk.Posted} = 1 then 
    ToText({tarInvoice.Balance})
else
" "

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

于 2011-10-07T10:00:06.620 回答