2012-05-23 37 views
0

我正在使用Crystal Reports 12.3和Peachtree Accounting 2012來管理某些數據庫。我現在的任務是製作一份報告,其中包含在過去30天內未下訂單的客戶。我是新手,所以我要求你的幫助。IsNull Crystal Reports出現問題

我的第一個嘗試是使用這個公式(我做我所有的東西在公式編輯器 - >錄製精選):

not ({Customers.LastInvoiceDate} in Aged0To30Days)

一切似乎只是空值的罰款。我需要包含在具有空值的報告記錄中。所以,我的公式改寫爲:

not ({Customers.LastInvoiceDate} in Aged0To30Days) OR IsNull({Customers.LastInvoiceDate})

但在桃樹會計2012我看到一個客戶有一個空白LastInvoiceDate場這是不是在報告。

在我最後的公式中是否存在某種錯誤?或者是否有一些DateTime類型的「其他」黑色值?

+0

如果你比SQL更適合使用SQL,那麼我只需在那裏寫你的查詢然後粘貼到CR中,那麼你可以很容易地處理空值 – Limey

回答

4

您應經常檢查空第一,所以儘量扭轉第二個公式

isnull({Customers.LastInvoiceDate}) or not({Customers.LastInvoiceDate} in Aged0To30Days)

如果晶體遇到空,它未明確先處理,則公式的其餘部分將廢話了而不是評估。解決此問題的另一種方法是告訴Crystal在公式工作室中使用「空值的默認值」而不是「空值的例外」(這是公式工作室工具欄中的下拉列表設置)。

+2

如果你的數據源提供了空值的默認值,那麼公式通常應該檢查空佔位符'{customers.LastInvoiceDate} =日期(0,0,0)'。在這種情況下,可能不需要,因爲Aged0To30Days中的Date(0,0,0)應該是false。 – paulmelnikow

+0

首先檢查空值!謝謝,我不會猜到那個。 (我正在改變默認值和空值的例外情況,但這沒有幫助。) – thursdaysgeek

1

長度(修剪({Customers.LastInvoiceDate}))=,無需ISNULL函數和OR運算0

一個語句。