- - PR -
CrystalReport クリスタルレポート ページごとの小計を追加したい。
投稿者 | 投稿内容 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-07 10:56
こんにちは。
伝票明細一覧表のような物を作成しようと思っています。 伝票ごとに合計金額を出力することはできるのですが、1枚の伝票の行数は 固定しておらず、1枚の伝票が何枚にもまたがることがあります。 伝票番号:1 ------------------ いちご 100円 りんご 200円 みかん 300円 ------------------ 合計 600円 ↓ 伝票番号:1-1 ------------------ いちご 100円 りんご 200円 ------------------ 小計 300円 改ページ(行が一杯になったら、もしくは明示的にN行印刷したら) 伝票番号:1-2 ------------------ みかん 300円 ------------------ 小計 300円 ================== 総合計 600円 こんな感じです。 伝票番号でグループ化すると伝票の合計しか求めることができません。 何か良い方法はないでしょうか?よろしくお願いいたします。 | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 12:41
ページ単位での小計、明示的にグループが終了した時のそのページ内での小計ですね? ならば、以下のようになります。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 14:20
>ページ単位での小計、明示的にグループが終了した時のそのページ内での小計ですね?
はい、その通りです。 お返事ありがとうございます。 ただ、クリスタルレポートの変数の宣言、スコープの方法がイマイチよくわかりません。 その関数内で行うならできますが、どうやって参照したり、どうやって加算していくのか サンプルも見つからないし。。 *BASIC構文です。 >ページ ヘッダに式フィールドを置いて Shared な変数を宣言し、ここで 0 に初期化 これは例えばfunctionSharedとしてこんな感じなんでしょうか? Shared NumPageSum As Number Formula = NumPageSum >この変数を出力する式フィールドをページ フッタとグループ フッタに追加 これはfunctionSharedを貼り付けるだけでよいでしょうか? >グループ フッタでこの変数を 0 に初期化する式フィールドを配置 これは例えばfunction初期化として内容は Formula = {@functionNumPageSum} = 0 こんな感じになるんでしょうか? ですが加算は一体どうやって行うんでしょうか? {@functionNumPageSum} = {tblden.kingaku}; てやってもその行の金額しか取る事ができません。 >グループ フッタで出力されてしまった場合は改ページがあるので、フラグを設ける >このフラグが建っている場合は、ページ フッタでは出力しないように式を加えるこんな感じでしょう。 すみません、これに関しては皆目見当もつきません。 結論として全く基礎を理解していないということだろうと思います。 何でも聞いてばかりでは駄目だと思いますので 何かクリスタルレポートの関数を駆使したようなサンプルでもご存知ないでしょうか? | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 15:00
0 に初期化だけでいいです。
今回の例だと NumPageSum ですね。
Formula はどこから現れたんですか? NumPageSum = 0 でいいじゃないですか。
敢えて書きませんでしたが、加算されていないことには気付かれたのですね。 詳細セクションが繰り返される分、任意のフィールドを加算していく場所を設けるだけですよね。
それは、加算していないからですよね? A = B は明らかに加算ではないですよね? NumPageSum = NumPageSum + {tblden.kingaku}; だろうと思います。
これは後回しにしましょうか。 実装次第で不要かもしれませんからね。
この会議室で Shared CrystalReports などで AND 検索してみると少しは... でもコードのサンプルはないような気がしますね。(私が答えた範囲では) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 15:50
じゃんぬ様、度々申し訳ありません。Global宣言した変数の参照がイマイチわかりません。
ます、変数の作成方法ですが 「フィールドエクスプローラ」→「式フィールド」→「新規..」で 例えば [式A] を作り その中に Global NumPageSum As Number NumPageSum = 0 Formula = NumPageSum Global宣言のNumPageSumを用意しました。 Formula付けないとエラーになってしまいます。 えと、Crystal構文なら Global numberVar NumPageSum :=0 でエラーにはならないのですが・・・。 で分からないのは、この「NumPageSum」が他の式フィールドからどうやって参照すればよいか?という点です。 先ほど、助言頂きました通り、詳細セクションに NumPageSum = NumPageSum + {tblden.kingaku} という内容の[式B]を書き確認ボタン(Alt+C)を押すと Basic構文では「ここにはステートメントが入ります」 Crystal構文では「残りのテキストは式の一部にはなりません」 と出てしまいます。 また{@functionShared.NumPageSum}と参照すれば「フィールド名が見つかりません」 と出てしまいます。 何か根本的に勘違いしてると思うんです・・・(>_<)。 変数の宣言は式フィールドを作成しその中に記述する、という方法でよいのでしょうか? その式内で使う変数を宣言、というのは以前やってみた事があるのですが別の式から参照というのがよく分からない状態です。そもそも別の式から参照するという考え方がおかしいのでしょうか? | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 16:02
あ、BASIC 構文なんですね。
Global, Shared な変数は普通に NumPageSum で参照できるはずですよ。 最初に書かれたのは宣言込みですが、その他の式フィールド内では宣言なしでそのまま使えます。
長さ 0 の文字列 ("") でも出力させておいてください。 Crystal 構文だと ""; だったかな? すいません、私は BASIC 構文ではなく Crystal 構文派なんです。(^-^;)
これは、ただの誤りですよね。
宣言は最初のヘッダだけで、後は自由に使えるハズです。 聞くのを忘れていましたが、CrystalReports のバージョンはいくつですか?
別の式からではなく、Report 内で文字通り「Global」なんです。 でなければ、Global 修飾子の意味がおかしくなりませんか? (^-^;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 16:13
CrystalReports のバージョンによっては、やっぱり宣言は要りますね。
ただし初期化はしない、という感じだったと思います。 それと、1 番大事なことを言い忘れていました。 詳細セクションでカウントアップするところの直前に、 WhilePrintingRecords; を入れておいてください。 構成としては、(Crystal 構文ですが) ページ ヘッダ : Shared NumberVar NumPageSum := 0; ""; 詳細セクション : Shared NumberVar NumPageSum; WhilePrintingRecords; NumPageSum := NumPageSum + {足し込みたいフィールド}; ""; ページ フッタ (出力) : Shared NumberVar NumPageSum; CStr(NumPageSum); こんな感じだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||||||
|
投稿日時: 2006-02-07 16:34
じゃんぬ様、できました!(>_<)ゝ
って最後には答え書いて頂いたんで当然ですね。 クリスタルレポートは VS2003に付属している物で CrystalReport for VisualStidio.NET という製品で、クリスタルレポートのバージョンで言うと CrystalReports8.5 Developer Editionというのに相当するそうです。 じゃんぬ様は、お気づきでないでしょうが、もうかれこれ数回助けて頂いてます。 Global変数とい技が増えたので、今後幅が広がると思います。どうも有難うございました。 |