- PR -

CrystalReportsでの計算方法

投稿者投稿内容
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-04-26 21:04
Shared変数を使って色々試してみましたが、条件によって変数に代入するところがどうも思うようにいきません。簡単なところで、商品Aのレコード件数をカウントし表示するように作成してみました。

まず、ヘッダ部分に変数をセットしました。

Shared NumberVar Anum := 0;

そのあと、詳細部分に下記のような式を記述しました。

Shared NumberVar Anum;
if {TABLE.OrderKind} = "A" then
Anum := Anum + 1;

最後にレポートフッターに

Shared NumberVar Anum;
WhilePrintingRecords;
Anum

と記述しました。

条件分岐の記述が間違っているのでしょうか?
どうも思ったような値が出力されないのです。

どこかに不備などありましたら教えていただけないでしょうか。
宜しくお願いします。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-04-27 19:08
hirotanです。
どうにか自己解決することができました。

商品の種類のデータが2種類あって別なほうを見ていたので思うような結果にならなかったことが分かりました。なんともどじな話でじゃんぬねっとさんには大変ご迷惑をおかけしました。

実際には商品ごとの合計でしたので、下記のように記述しました。

Global NumberVar Anum;
Global NumberVar Bnum;
Global NumberVar Cnum;
Global NumberVar Othernum;
select {Table.OrderKind}
case "A" :
Anum := Anum + ToNumber({Table.OrderVolume})
case "B" :
Bnum := Bnum + ToNumber({Table.OrderVolume})
case "C" :
Cnum := Cnum + ToNumber({Table.OrderVolume})
default:
Othernum := Othernum + ToNumber({Table.OrderVolume})

最初はShared変数を使用していたのですが、どうも選択するレコードが多いと次ページからの合計の計算が0になってしまったのでGlobal変数にしてみたらうまくいきました。

じゃんぬさんに多くのアドバイスを頂いたおかげで、何とか解決することができました。ありがとうございました。
今後とも何かありましたら宜しくお願いします。
それでは









スキルアップ/キャリアアップ(JOB@IT)