2009-06-05 105 views
5

我有頁標頭,它包括以下的公式@InitVars,和類似的路線:Crystal報表,子報表和共享變量

shared numbervar runWaste:=0; 

在詳細V,I有一個子報告,其中有一個公式@SetRunWaste:

shared numbervar runWaste; 
if (OnFirstRecord) then 
(
if not(isnull({x.x-or})) and 
not(isnull({x.y-override})) and {x.y-override} = true then 
runWaste:={x.x-or} 
    else 
runWaste:= {x.x} 
); 
runWaste 

我可以在子報告中看到這個公式的輸出是18.00。

然而,無論是在另一個子報告,詳細AZ,並在細節W上的主報告(作爲測試),我有以下公式@測試:

shared numbervar runWaste; 
runWaste; 

在這兩個地方,它顯示爲0.00。

爲什麼顯示0不是18?

我正在使用Crystal Reports版本11.0.0.895。

回答

9

問題是@InitVars位於頁眉中,而不是報表頭。它將每個頁面頂部的變量重置爲0。

將@InitVars移動到報表標題中,以便正確的編號出現在Details z的子報表中。

當我在主報告中包含變量時,仍然會看到一些奇怪的現象,但由於這只是爲了調試,而不是主要目標,我不在乎。

1

我有一個模糊的記憶,我現在很難證實共享變量不能從子報告傳遞回來。還在尋找;這是星期五下午的好事。

編輯:我找不到我在找什麼,所以一般的想法。檢查評估時間,並確保主報告的後面部分在子報告後進行評估(WhilePrintingRecords可能是您的朋友)。

+0

嗯,在@test中添加whileprinting記錄導致它在頁面頁腳中工作,但它在細節w中仍然不正確。它在後面的頁面上也是不正確的...... – LeBleu 2009-06-05 23:02:32

+0

你確定它沒有被重置在某個地方,無論是在主要報告的其他地方,還是在其中一個子報告中? – Adrien 2009-06-05 23:13:31

0

從文章Adding Sub reports ,Find Sub Total and Grand Total(To main Report)

Crystal Reports是用於 設計和生成從 廣泛的數據源的報告業務 智能應用程序。 Sub 報告是主要的 報告的子報告,可以嵌入主要的 報告中。小組報告非常有用,用於構建報告。

增加子報告發現 子總 和總計各子報告的主報告

主要報告

分報告1

小計:SUM(LabTotal)

Sub Report 2

小計Total:ItemTotal

總計

次報告是在 水晶報表非常有用的選項。假設我們要 找到

添加Crystal報表

  1. 添加新用品 - >水晶報表
  2. 如果我們要創建的Crystal Report我們自己的格式選擇「作爲空白 報告」,從水晶報表畫廊
  3. 右擊數據庫中的字段從數據庫中的「數據庫字段」和 選擇表,然後 做鏈接(如有必要)
  4. 右鍵單擊「詳細信息部分」並添加子報告。
  5. 重複,我們在主報告已經完成,拖 所需的字段細節部分子 報告

EG的同樣的事情:我們正在創造的就業報告 總勞動率可 計算

在式場-name LabTotal

WhilePrintingRecords;共享NumberVar LabTotal:= SUM ({PC_LABOUR_DETAILS.Total})

({PC_LABOUR_DETAILS) - 表總 ---字段

和在添加LabTotal的總和至子 總場

如果我們有另一個子報告補充 離子主頁,再次右鍵單擊 的「詳細信息部分」,並添加新的 節 - >詳細信息(b),然後重複步驟4 和5在這裏,我們將第二子 材料和的 材料小計報告可以計算值作爲

在式場-name ItemTotal

WhilePrintingRecords;共享號碼變量 ItemTotal:=總和 {PC_MATERIAL_DETAILS。總})

({PC_MATERIAL_DETAILS)--table總 - 場

,並添加ItemTotal的總和子 總場

主要報告

要查找總計兩個子 報告

式字段名,GrandTotal

WhilePrintingRecords;共享號碼變量 ItemTotal;共享NumberVar LabTotal; NumberVar TotalAmount; TotalAmount:= ItemTotal + LabTotal; TotalAmount