- - PR -
Active Report for .Net プロパティ設定について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-18 14:15
ぽん です。
よろしくお願いします。 VB.NET2003 の環境で Active Report を使用しています。 以下のことをしたいのですが、帳票ツールははじめてなので プロパティで設定はできるかどうかとできれば設定方法をご指導いたたければ と思い、投稿させていただきました。 形式:GropuHeader にTxtBox1 を置き、小計を表示 DetailにID(商品コード)ごと のグループとして表示されている 数量はTxtBox3を使用。 各数量の合計をTxtBox1にセットする。 小計 5 ←GropuHeader ID カラー 数量 ←Detail XXXXXX RED 2 XXXXXX BLUE 3 --------------------------------- 小計 13 ID カラー 数量 NNNNNN RED 10 NNNNNN BLUE 3 --------------------------------- ・ReportFooterを使い、TxtBox2を置き合計として 各小計の合計値を表示 以上のTxtBox1〜3のプロパティを設定することで 簡単に合計を計算させることはできますでしょうか? | ||||||||
|
投稿日時: 2007-07-18 14:23
SummaryRunning, SummaryGroup, SummaryFunc, SummaryType あたりを調べてみると良いでしょう。 というより製品に付属しているサンプルにそのものがありますから見て頂いた方が早いですね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-07-19 13:03
>SummaryRunning, SummaryGroup, SummaryFunc, SummaryType あたりを調べてみる.
上記を調べ、 DetailのDataFieldをSURYOとし、GroupHeaderのTxtBoxを以下に設定 プロパティ DataField:SURYO SummaryRunning:Group SummaryFunc:Sum SummaryType:SubTotal にしました。 出力結果が グループの先頭の数量が表示され計算せれていませんでした。 どのように修正したらよろしいのでしょうか? ご教授お願いします。 | ||||||||
|
投稿日時: 2007-07-19 13:36
フッタではなくヘッダに出力したい場合は 'Group' ではなく 'None' にしなければなりません。 このあたりはチュートリアルにも説明が載っていると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-07-19 15:30
ご指摘の通り、SummaryRunning:Noneにすることでできました。
また、GroupFooterの小計用のテキストのDataFieldをSURYOと設定し、 PageFooterの合計用テキストのDataFieldをTSURYOとすることで小計の合計を計算するようにした場合に DataInitializeで Fields.Add("TSURYO") 小計用Txt.DataField = "TSURYO" と記述し、FetchDataイベントにて If intMsIdx < intMaxMs Then With Me .Fields("TSURYO").Value = .Fields("SURYO").Value eArgs.EOF = False End With intMsIdx += 1 Else eArgs.EOF = True End If のように記述しております。 帳票側の印刷メソッドに伝票分(印刷対象)を配列で渡して 帳票側の印刷メソッド内で数分ループ処理をしているのですが、 一つ目はうまくできるのですが、 伝票がかわるとFetchDataイベント内の .Fields("TSURYO").Value = .Fields("SURYO").Value で「Field名が存在しません。」 というエラーが返ってしまいました。 原因はどのような箇所で、どう対処したらよろしいのでしょうか? | ||||||||
|
投稿日時: 2007-07-19 15:49
とりあえず Fields コレクションに該当の項目がないということですよね。 その例外が発生するトリガーにあたるのが "伝票がかわると" だと思うのですが、これはどういう状態を指すのでしょうか? 2 回目とかそういう意味でしょうか。 もしそうであれば実際にどのような手順で処理を行おうとしているのかを書いて頂いた方が良いと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-07-19 16:30
どのような手順で処理ということかは下記のようになります。
呼び出し元:配列(伝票番号)をパラメータで渡す。 帳票側: 1.配列数を取得し、数分ループ for i = 0 to aryCnt -1 'SQL文字列の取得 'SQLの実行結果の取得 gDataSet = SQLQUERY() 'データソースにセット Me.DataSource = gDataSet.Tables(0) 'レポート制御 With Me .Run() .Document.Printer.PrinterSettings =PrintUtl.GetDefaultPrinter() .Stop() End With 'プレビュー表示 Next このような処理で行っています。 伝票がかわるという表記は正しくは配列のインデックスがかわり2回目以降の処理と いうことです。 以上になりますが、ご理解いただけましたでしょうか? 詳細にご不明な点がありましたら、ご指摘ください。 [ メッセージ編集済み 編集者: 武装キョンシー 編集日時 2007-07-19 16:33 ] | ||||||||
|
投稿日時: 2007-07-19 16:48
レポート内でこういった繰り返し処理をやっているのでしょうか? 同じ帳票で繰り返し処理を行う場合は、レポート外のクラスでその回数分新しいレポートのインスタンスを生成して行いましょう。 これは初期化処理と後始末処理が必要だからです。 またそれとは別の話で、レポート自身がここまでガチガチに自分がどう調理されるか (どのデータを食わされるか) を知っているのは妙ですよね。 デザイン部との分離できていない状態になっています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |