2017-09-26 89 views
0

我正在嘗試將舊的Microsoft Access報表轉換爲Crystal報表。除了最後一個小細節之外,我的一切工作都很完美。訪問報告在if語句中使用報告中某個字段的DSUM函數。晶體報告中的DSUM功能?

經過大量搜索,我確定CR沒有任何類似的東西。

這裏基本上是我正在處理的。

我有一份提案報告。在報告的細節中,我打印了數量,描述和幾個價格字段。

的數據看上去就像這樣:

Proposalnum Partitem RolltoItem單價

18611 ............. .......... 1 NULL。 ....... 0.00

18611 ............. 2 ......... NULL ....... 17225.92

18611 ............ 3 ............ 2 ............ 156.90

18611 ...... ...... 4 ............. 2 ........ .... 482.05

我需要做的是當我打印一個特定的零件時,我需要查詢剩餘的記錄以找到在rolltoitem字段中具有匹配號碼的零件,並將unitprice添加到我打印的部分。

因此,在本例中,當我打印partitem#2時,需要將第3部分和第4部分中的156.90和482.05添加到17225.92,因此總共打印了17864.87。

有沒有辦法做到這一點?

回答

0

據我所知,沒有這樣的功能。

但我會試試這個。

總體思路是:按ProposalNum對數據進行分組,然後使用子報表選擇「子行」並對「子價格」進行求和。

詳情:

  1. 創建由PartItem一個空組部分。
  2. 如果您只想顯示RoolToItem爲空的項目,請在此情況下使用抑制函數。
  3. 在詳細信息部分中,輸入一個子報表。子報表的數據源將與主報表相同。
  4. 更改子報表鏈接以根據字段在子報表中選擇數據:主報表中的PartItem =子報表中的RolltoItem。
  5. 將其他字段傳遞給子報表而不選擇數據:ProposalNum,PartItem,UnitPrice。我認爲你需要在子報表中創建參數,例如:ParentProposalNum,ParentPartItem,ParentUnitPrice。
  6. 創建一個新公式:ParentUnitPrice + Sum({YourDataSource.UnitPrice})
  7. 將公式與其他字段放在子報表頁腳中。也許:ParentProposalNum,ParentPartItem,公式。

這是一個理論上的解決方案。我希望它指出正確的方向。

0

如果您嘗試爲Rolltoitem中所有具有相同值的項目計算Unitprice列,則可以使用SQL Expression Field來完成此操作。代碼看起來像這樣。我的Where子句可能需要調整,因爲我不確定你的數據庫結構是什麼樣的。

(
Select Sum("YourDataBaseTableName"."Unitprice") 
From YourDataBaseTableName 
Where "YourDataBaseTableName"."Rolltoitem" = *currentRolltoitemValue* 
) 

根據您使用的數據庫類型,SQL表達式字段的語法也可能不同。我提供的語法是相當一般的,但應該在SQL Server上工作。

編輯:添加示例,說明它是如何工作的。

這是我的一個SQL表達式字段,它是一個水晶報表,打印出貨物的提貨單。

( 
Select Sum("SHIPMENTS"."PALLET_COUNT") 
From SHIPMENTS 
Where "SHIPMENTS"."BOL_ID" = "BOL"."ID" 
) 

在我的數據庫中,BOL表是起點。一個BOL可以包含一個或多個SHIPMENTS,一個SHIPMENTS可以包含一個或多個產品。 頂級分組在BOL.ID. PALLET_COUNT在每件貨品上只能找到一次。我還對詳細信息部分中的數據有一個排序要求,這使我無法使用「運行總計字段」。

這使得有2出貨量BOL包含共有3個款產品看起來像這樣:

BOL.ID SHIPMENTS.ID SHIPMENTS.BOL_ID PALLET_COUNT PRODUCT.ID 
1   10    1     2    XXX 
1   9    1     1    YYY 
1   10    1     2    ZZZ 

此BOL正確PALLET_COUNT應該是3,因爲產品XXX和ZZZ是在同一SHIPMENTS並且PALLET_COUNT由於與產品的關係而被複制。

+0

只有當* currentRolltoitemValue *是一個常數時纔有效。就像我在2中硬編碼一樣,它效果很好。但是我需要從當前正在打印的記錄中輸入rolltoitem編號。我不知道是否有辦法做到這一點。 –

+0

看看我上面的編輯是否有助於理解如何獲取當前值。儘管如此,我覺得我沒有完全解釋它。它是我頭腦中完美無瑕的東西之一,但當我試圖解釋時,它變得相當複雜。我很抱歉無法更清楚地表達我的想法。 –