- PR -

Active Report for .Net プロパティ設定について

投稿者投稿内容
武装キョンシー
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 57
投稿日時: 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のプロパティを設定することで
簡単に合計を計算させることはできますでしょうか?



 
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-18 14:23
SummaryRunning, SummaryGroup, SummaryFunc, SummaryType あたりを調べてみると良いでしょう。 というより製品に付属しているサンプルにそのものがありますから見て頂いた方が早いですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
武装キョンシー
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 57
投稿日時: 2007-07-19 13:03
>SummaryRunning, SummaryGroup, SummaryFunc, SummaryType あたりを調べてみる.

上記を調べ、
DetailのDataFieldをSURYOとし、GroupHeaderのTxtBoxを以下に設定
プロパティ 
 DataField:SURYO
 SummaryRunning:Group
 SummaryFunc:Sum
 SummaryType:SubTotal
にしました。

出力結果が
 グループの先頭の数量が表示され計算せれていませんでした。
どのように修正したらよろしいのでしょうか?

ご教授お願いします。
 
 
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-19 13:36
引用:

武装キョンシーさんの書き込み (2007-07-19 13:03) より:

出力結果が
 グループの先頭の数量が表示され計算せれていませんでした。
どのように修正したらよろしいのでしょうか?

引用:

SummaryRunning:Group


フッタではなくヘッダに出力したい場合は 'Group' ではなく 'None' にしなければなりません。 このあたりはチュートリアルにも説明が載っていると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
武装キョンシー
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 57
投稿日時: 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名が存在しません。」
というエラーが返ってしまいました。
原因はどのような箇所で、どう対処したらよろしいのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-19 15:49
引用:

武装キョンシーさんの書き込み (2007-07-19 15:30) より:

帳票側の印刷メソッドに伝票分(印刷対象)を配列で渡して
帳票側の印刷メソッド内で数分ループ処理をしているのですが、
一つ目はうまくできるのですが、
伝票がかわるとFetchDataイベント内の
.Fields("TSURYO").Value = .Fields("SURYO").Value
で「Field名が存在しません。」
というエラーが返ってしまいました。
原因はどのような箇所で、どう対処したらよろしいのでしょうか?


とりあえず Fields コレクションに該当の項目がないということですよね。 その例外が発生するトリガーにあたるのが "伝票がかわると" だと思うのですが、これはどういう状態を指すのでしょうか? 2 回目とかそういう意味でしょうか。 もしそうであれば実際にどのような手順で処理を行おうとしているのかを書いて頂いた方が良いと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
武装キョンシー
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 57
投稿日時: 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 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-19 16:48
引用:

武装キョンシーさんの書き込み (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回目以降の処理と
いうことです。

以上になりますが、ご理解いただけましたでしょうか?
詳細にご不明な点がありましたら、ご指摘ください。


レポート内でこういった繰り返し処理をやっているのでしょうか? 同じ帳票で繰り返し処理を行う場合は、レポート外のクラスでその回数分新しいレポートのインスタンスを生成して行いましょう。 これは初期化処理と後始末処理が必要だからです。

またそれとは別の話で、レポート自身がここまでガチガチに自分がどう調理されるか (どのデータを食わされるか) を知っているのは妙ですよね。 デザイン部との分離できていない状態になっています。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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