我正在为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,报告炸弹。
答案 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时,我遇到了这种问题。没有数据的字段会将其右侧的所有列拉到“填补空白”。