2011-12-15 43 views
1

更新:可能它是一個不同的問題?

我很確定我採取了正確的步驟,但如果這是一個不同的問題呢?Crystal Reports 2008 - 重置共享變量時遇到問題

我有多個參數,它好像可能正在重置,但是子報表可能會跨所有參數進行計算,所以即使重置,它也會重新計算所有多個工單號。已經在我的工單號碼參數中指定。

背景

我有一個水晶報表2008年的報告與分享他們的總價值重新就業,爲操作主報表中的幾個子報告。

子報告適用於單個記錄,但在選擇多個記錄時不會重置,導致它們顯示所有記錄中的總數。

這是已知解決方案的問題,但是當我試圖將其應用於我的報告時,它似乎沒有按預期工作。

我很確定這是一個問題,無論是與公式的語法或與我放置他們的地方的佈局。

已知步驟

問題是Crystal子報表沒有專門重置;這是設計。

要強制報表重置,您必須在運行子報表之前在記錄級別組(即不報表標題)中插入公式,以便將共享變量設回零。共享變量復位式

  • -

    的報告

    • 報表頭(抑制)
    • 頁眉(基本頁信息)
    • 組頭1A佈局組標題1b - 工作訂單信息
    • 詳細 - 子報表勞動力的估計和子報表物料估計
    • 組尾1A - 公式兩個子報表
    • 組尾顯示總1B - 工作單的長描述(無分報告)
    • 報表頁腳(抑制)
    • 頁腳(基本頁面信息)

    勞動報表共用變量生成式(放置在子報表頁腳):

    WhilePrintingRecords; 
    Shared CurrencyVar subTotal_LaborCosts; 
    subTotal_LaborCosts := Sum ({R_PFWR_ESTS_LABBYCODE.TOTALLABORCOSTS}); 
    

    在主報告共享變量式(放置在主報告,頁腳1A):

    WhilePrintingRecords; 
    Shared CurrencyVar subTotal_LaborCosts; 
    subTotal_LaborCosts 
    

    共享變量重置公式(放置在主報告,組標題1a中):

    WhilePrintingRecords; 
    Shared CurrencyVar subTotal_LaborCosts; 
    subTotal_LaborCosts:=0; 
    

    任何人都可以看到我要去哪裏錯了嗎?謝謝!

  • 回答

    0

    我想出了問題所在。

    真實問題

    問題不在於該公式未被重置(它是)。

    問題出在我將報表字段鏈接到子報表參數的方式。

    我已經將我的主要報告的參數鏈接到了我的子報告的參數。實際上,這將參數中的每個值都傳遞給子報表,因此它每次都運行所有值。

    修復

    要解決這個問題,我更改了鏈接到子報表參數的值。

    我將它從主報表參數字段(具有多個值)更改爲主報表中列出工單數(確保它只有一個)的值。

    1

    如果您的計算是一個標量值,您可能需要考慮使用SQL-Expression field而不是子報表。該字段的SQL可以與主查詢相關聯,可能是分組字段,您的情況。

    **編輯**

    看來,你想的在細節部分的每一行的勞動力成本的彙總,並且希望這些在組頁腳中的摘要。假設這是正確的,請按照下列步驟操作:

    • 創建SQL表達式:

      - {%TOTAL_LABOR_COST} ( SELECT TOTALLABORCOSTS FROM R_PFWR_ESTS_LABBYCODE --link的場主報告,大概一個,在細節部分 --where 的每一行的變化 - 組,如果必要的話 --group BY )

    • 在詳細信息部分中放置字段

    • 插入此字段的摘要;放在第1組頁腳
    +0

    不知道我是否正確理解。當我運行一個參數值時,我的計算是正確的。當我用一個參數的多個參數值運行它時,子報表就不會將其自身重置爲零,因爲下一個項目顯示時,我得到的是所有顯示報表的總和,而不僅僅是該報表。看來這是我見過的解決方案的一個常見問題。你能否解釋一下這種方法與SQL表達式有何不同?謝謝! – SeanKilleen 2011-12-15 11:17:58