2017-09-26 5 views
0

古いMicrosoft AccessレポートをCrystalレポートに変換しようとしています。この最後の細部を除いて、私は完璧に働いています。 Accessレポートは、レポートのフィールドの1つにifステートメント内のDSUM関数を使用します。水晶レポートのDSUM機能?

多くの検索の後、私はCRに何も似ていないと判断しました。

これは基本的に私が扱っているものです。

私は提案書を持っています。レポートの詳細では、数量、説明、および価格の2つのフィールドを印刷します。

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がnullの項目のみを表示する場合は、この場合は抑制機能を使用してください。
  3. 詳細セクションで、サブレポートを配置します。サブレポートのデータソースはメインレポートと同じです。
  4. サブレポートのリンクを変更して、サブレポートのデータをフィールドに基づいて選択します。メインレポートのPartItem =サブレポートのRolltoItem。
  5. 選択データなしでサブレポートに他のフィールドを渡す:ProposalNum、PartItem、UnitPrice。私はあなたがそれを行う前にサブレポートにパラメータを作成する必要があると思う - 例:ParentProposalNum、ParentPartItem、ParentUnitPrice。
  6. 新しい数式を作成します。ParentUnitPrice + Sum({YourDataSource.UnitPrice})
  7. 他のフィールドと同じ長さのサブレポートのフッターに数式を挿入します。たぶん:ParentProposalNum、ParentPartItem、formula。

これは理論上の解決策です。私はそれが正しい方向を指していることを願っています。

0

Rolltoitemで同じ値を持つすべてのアイテムに対してUnitpriceカラムを合計しようとすると、SQL式フィールドでこれを行うことができます。コードは次のようになります。あなたのデータベース構造がどのようなものかわからないので、私のWhere節は微調整する必要があります。

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

構文は、使用しているデータベースの種類に応じてSQL式フィールドによって異なる場合があります。私が提供した構文はかなり一般的ですが、SQL Serverでも動作するはずです。

EDIT:どのように動作するかを説明した例を追加します。

ここには、出荷された商品の船荷証券を印刷するCrystalレポートのSQL表現フィールドの1つがあります。

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

私のデータベースでは、BOLテーブルが出発点です。単一のBOLには1つ以上の出荷物を含めることができ、単一の出荷物には1つ以上の製品を含めることができます。 トップレベルのグループ化はBOL.IDにあります。 PALLET_COUNTは、各SHIPMENTSで1回のみ検出されます。また、詳細セクションのデータのソート要件があったため、実行中の合計フィールドを使用できませんでした。

これはBOLこの見えるように3つの製品の合計が含ま2つの郵送ででき:PRODUCTS XXXとZZZは、同じ出荷があるので、このBOLの正しいPALLET_COUNTは、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 

PRODUCTSとの関係のためにPALLET_COUNTが複製されます。

+0

* currentRolltoitemValue *が定数の場合にのみ機能します。私が2でハードコードするように、それは素晴らしい作品です。しかし、私は印刷している現在のレコードからrolltoitem番号を入力する必要があります。私はそれを行う方法があるかどうかわからない。 –

+0

上記の私の編集が現在の値を取得する方法を理解するのに役立つかどうかを確認してください。私はそれが完全にうまく説明していないように感じる。私の頭の中で完璧な意味を成しているが、私がそれを説明しようとするとかなり複雑になるものの一つ。私は自分の考えをより明確に表現できないことをお詫びします。 –

関連する問題