水晶报告11:空白领域炸弹报告
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水晶报告11:空白领域炸弹报告相关的知识,希望对你有一定的参考价值。
我正在为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,报告炸弹。
我相信如果遇到NULL,条件语句会立即失败,因此您的公式需要在测试与“1”相等之前测试IsNull({tarPrintInvcHdrWrk.Posted})。
您可以更改Crystal处理公式中值的空值的方式。在Formula Workshop的顶部有一个下拉框,通常显示“Nulls Exges”。 将其更改为其他选项“Nulls的默认值”,您的公式不应再爆炸。您曾经能够指定应用的默认值,但更新版本的Crystal具有这些硬编码。在“Null Treatment”的帮助中搜索显示它们的表格。
我将公式修改为:
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”。
我在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也与链表有关,因为我只试过一个简单的单个表。 我在运行总计中使用公式时也看到了类似的行为 - 他们根本不喜欢空值!
如果你将{tarInvoice.Balance}直接放在报告上(详见“调试”部分 - 经常需要,不要忘记在生产中压制它:)),它显示的值或报告变为空?
也许您在报告中有“禁止空白”部分。试着把:Else“”
if isnull({tarPrintInvcHdrWrk.Posted}) or {tarPrintInvcHdrWrk.Posted}=0 then
" "
else
if {tarPrintInvcHdrWrk.Posted} = 1 then
ToText({tarInvoice.Balance})
else
" "
在将报告导出到excel时,我遇到了这种问题。没有数据的字段会将其右侧的所有列拉到“填补空白”。
以上是关于水晶报告11:空白领域炸弹报告的主要内容,如果未能解决你的问题,请参考以下文章