2008-10-14 114 views
2

我正在爲sage mas 500 AR模塊創建發票水晶報告。在這裏面,我試圖用下面的公式添加tarinvoice.balance領域:水晶報告11:空白場炸彈報告

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

我假設當{tarPrintInvcHdrWrk.Posted} = 1條件語句爲假,它並沒有試圖把發票場,因爲當我從報告中刪除公式,表單無法正確顯示。

當條件語句在報表中呈現true時,平衡字段的行爲正確。但是,如果公式在CR窗體中呈現FALSE,則整個晶體報告將彈起並顯示空白。任何想法爲什麼或我做錯了什麼?


試圖將所有內容都設置爲零並且報告仍然是炸彈。我開始在報告中考慮更多的查詢錯誤。我希望有一種方法可以在發佈= 0時排除查詢字段。

隨着tarinvoice.balance在發佈= 0時刪除,報告正常工作。
隨着tarinvoice.balance包括併發布= 1,報告正常工作。

With tarinvoice.balance included and posted = 0,report bombs。

回答

2

我相信,如果你遇到一個NULL條件語句立即失敗,因此您的公式需要測試ISNULL({} tarPrintInvcHdrWrk.Posted)它測試「1」面前人人平等。

0

您可以更改Crystal處理公式中值的空值的方式。在公式研討會的頂部有一個下拉框,通常表示「空白的例外」。
將其更改爲「默認值爲空」的其他選項,並且您的公式不應再被彈出。您以前可以指定應用的默認值,但更新版本的Crystal具有這些硬編碼。 搜索顯示它們的表格的「Null Treatment」幫助。

+0

我試着將它更改爲默認值爲空,報告仍然是炸彈。謝謝你的提示。我可以看到這將如何幫助未來的問題。 – user28014 2008-10-15 15:05:15

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」,在適當的空間。

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也必須處理鏈接表,因爲我只嘗試過一個簡單的單一表。
在運行總數中使用公式時,我也看到了類似的行爲 - 他們根本不喜歡空值!

0

如果你把{tarInvoice.Balance}直接放在報告上(詳細的「調試」部分 - 經常需要,別忘了在生產中壓制它:)),它顯示的值是什麼或者報告是否爲空?

0

也許你的報告上有抑制空白部分。嘗試把:否則「」

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

我有麻煩這種領域時,使報告導出到excel。沒有數據的字段會將其右側的所有列拉到「填補空白」。