2012-03-14 90 views

回答

0

這是一種方法。創建一個跟蹤子報告行數的共享變量,然後在該計數爲零時顯示文本字段。

從共享字段上的內存來看,就像這樣......用這段代碼創建一個公式字段,然後將該公式放在報告的某處。您可以隱藏它,因此不可見。

shared numberVar rowcount := 0; 

設置共享變量等於子報告中的行數。做同樣的事情,(創建在子報表中的公式域),但這樣的:

shared numberVar rowcount := <number of rows>; 

有代碼遍佈於不同的方式來獲得的行數。

然後回到您的主報告中,製作一個包含「 - 」的文本字段,並在共享變量大於0時將其壓制。您還可以右鍵單擊子報告並將其設置爲在空白時禁止(如果需要)。

最後,確保在子報表下方放置文本字段「 - 」(使用壓縮功能),因爲Crystal在嘗試之前不會知道子報表中有多少條記錄。水晶很有趣。

+0

此SO鏈接有另外一種方法使用共享變量來獲得行的總數在報表... http://stackoverflow.com/questions/1268348/retrieve -record-count-of-subreport-in-crystal-reports – RThomas 2012-03-14 00:47:38

+0

感謝的是,替代文本是用於子報表,並且在該子報表的同一行中有另一個子報表,所以我不能使用共享變量,因爲替代文本必須與另一個子報表位於同一行。我最終使用命令來做到這一點。 – sam 2012-03-14 04:31:20

+0

@Mark Ba​​nnister的方式應該適合你。 – RThomas 2012-03-14 16:14:50

1

假設你希望「 - 」在報表內出現,把它放在子報表的報表頁眉或報表頁腳節並設置知名度可以是文本項目或部分(取決於你是否希望部分出現的不管返回多少條記錄)有條件地抑制像一個公式:

Count ({Table.Field})>0 
+0

謝謝我已經試過,如果沒有記錄返回,子報表中的任何內容都不會顯示,所以我必須使用命令作爲數據源,例如從Table union中選擇Table.Field select' - '從Table where(從Table中選擇count(Table.Filed))= 0 – sam 2012-03-16 05:00:01

2

您需要2個細節部分在報表中。在1中放置了你有記錄時想要顯示的內容。右鍵單擊同一部分,然後選擇科專家...。檢查抑制空白部分複選框,以便在沒有任何內容顯示時禁用此部分使用的空間。在其他詳細信息部分添加一個公式,該公式顯示沒有記錄時要顯示的內容。在你的例子中,這將是「 - 」。創建計數記錄的另一個公式並將其命名爲RecordCount。

WhileReadingRecords; 

NumberVar RecordCount := RecordCount + 1; 

將此公式放置在報告的詳細信息部分並將其禁用。您將其放入哪個詳細信息部分並不重要。最後,右鍵單擊將顯示何時沒有記錄的相同部分。選擇部分專家...。單擊公式按鈕爲禁止(無向下鑽取),並添加這個公式......

Not Isnull ({@RecordCount}) 

你可以看到,如果你的公式本身是空只檢查所以公式中的代碼不是那麼重要,但是我希望在報告中的其他地方使用它的情況下使用它。

現在,當您有記錄時,第二個詳細信息部分被取消,第一個詳細信息部分顯示您的數據。如果沒有記錄,則會反轉顯示第二個詳細信息部分,而第一個詳細信息部分被禁用。

0

我可以建議你最好的辦法就是玩弄的解決方案水晶報表,從你的問題你要顯示「 - 」當沒有數據存在,因此,這裏的答案:

第一:1創建一個新公式在子報告和使用編輯器中,並編寫以下公式: shared stringvar myvar; if isnull({Id_colounm_name}) then myvar := "-" else myvar:="+"
注意:此處Id_coloumn_name是可以決定記錄爲空的行成員。

第二個2: 保存公式並創建一個新頁面標題部分並將其抑制,然後將此公式添加到新創建和抑制部分。

三3: 轉至主報告,並創建一個新的公式,可以使用編輯器編寫公式如下: shared stringvar disp;
保存並關閉公式編輯器。

第四個4: 現在在晶體報告所在的部分下面插入一個部分。 現在去部分專家通過右鍵點擊該部分 並選擇公式圖標後,右側的「禁止」,並添加下面的公式:
shared stringvar myvar; if myvar <> "-" then true else false
保存並關閉公式並選擇圖標右後「取消空白節」並添加以下公式:
shared stringvar myvar; if myvar="+" then true
保存並關閉公式,現在將在主報告中創建的公式添加到新創建的部分。保存。

第五5: 右鍵單擊子報表,然後選擇「格式對象」,然後選擇「子報表」選項卡,選中「剿空白子報表」 ,然後在部分中,右鍵單擊您的子報告所在,然後轉到「部分專家」,然後選中「剿空白部分」

這就是你能做的一切,現在運行的報告,並檢查其工作或不

注注注:包含子報告中的部分不應該包含其他字段的任何其他文本和子報表中包含公式的部分都必須被抑制,並且在主代表中包含公式的部分或者doest必須被壓制。

希望它可以幫助 感謝和問候 SRIKANTH