- PR -

ActiveReport バインドとアンバインドの違い

1
投稿者投稿内容
kaya
会議室デビュー日: 2008/07/07
投稿数: 2
投稿日時: 2008-07-07 21:56
標題についてですが、私の考えはこうです。VB2005の話です。

1.バインド
クエリを実行し、その列名を、帳票側でのコントロールのDataFieldの名前に設定する。
クエリの結果を、帳票のインスタンスのDatasourceに代入する。
すると、SQL側の列名と同じ名前を設定した、帳票側でのコントロールにデータが入る。
クエリの結果が100件あろうが、100件分全て入る。

2.アンバインド
帳票側でフィールドを設定。枠組みを1から作り、一項目ずつデータを直接代入していく。ここで帳票側の変数を AAA とし、SQL側を BBB とし、クエリの結果フィールドが "1","2","3","4" と4列あるとすれば
AAA(0)("1") = BBB(0)("1").ToString
AAA(1)("2") = BBB(0)("2").ToString
       ・
       ・ 
       ・
と言うように、全ての項目一つずつを、For文なんかで回しながら代入していく。

と思っていました。私の場合、VB側のコントロールで検索条件を設定でき、そのパターンに応じてSQL文を作成し、ボタンを押せば帳票クラスのインスタンスを作り、帳票を出力、としております。帳票側ではソースコードには何も追記はしていません。つまり、クエリを実行した結果をそのまま出力でき、且つ帳票側のGroupHeader等の設定で表現できるなら、帳票側のソースをどうこう弄らずに、そのまま帳票クラスのインスタンスのDatasourceに放り込めばそれでいいと思っていました。この手軽さがバインドの利点ではないかなと思っていました。

これって合ってますか?

何故そんな事を思ったかと言うと、他の方が、クエリの結果をDatasourceに入れるだけで出力結果を表現できる帳票なのに、VB側からボタンを押すと、わざわざ帳票側のソースで、2.で書いた様にフィールドを設定し、Eofまで一件ずつ回しながら各項目に値を代入し、その結果を受け取り、VB側で、インスタンスのDatasourceに代入しています。

私は、これは2.の時点でもう値は入っているのに、Datasourceに代入したらまた同じデータを上書きしているような気がします。これって意味のある事なんでしょうか?
ただDatasourceにクエリの結果をいれるだけでは不十分なんでしょうか?

ちなみにその書き方をした方もよく分かっていないそうです。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-07-07 22:37
さかもとです。

kayaさんの認識で合っているように思います。

一覧系(リスト系)の帳票などはバインドしたものでレコード部分を件数分出力すると早いですよね。わざわざアンバインドフィールドにセットしていく必要は(出来ないことはないですが)コストがかかる処理だと思います。

逆に一覧系(うちの会社の文化でそう呼んでいるだけです)でなく、単純なクエリなどでは表現しづらい帳票などはアンバインドでコードから直接セットしたりしています。


_________________
------------------------------------------
拝啓、さかもとと申します♪
kaya
会議室デビュー日: 2008/07/07
投稿数: 2
投稿日時: 2008-07-09 09:04
さかもとさん、ご返答どうもありがとうございました!

やはり同じ結果だったら、簡単に、ソースコードを短くできるならその方がいいですよね。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-07-09 09:48
引用:

kayaさんの書き込み (2008-07-07 21:56) より:

1.バインド
クエリを実行し、その列名を、帳票側でのコントロールのDataFieldの名前に設定する。
クエリの結果を、帳票のインスタンスのDatasourceに代入する。
すると、SQL側の列名と同じ名前を設定した、帳票側でのコントロールにデータが入る。
クエリの結果が100件あろうが、100件分全て入る。

2.アンバインド
帳票側でフィールドを設定。枠組みを1から作り、一項目ずつデータを直接代入していく。ここで帳票側の変数を AAA とし、SQL側を BBB とし、クエリの結果フィールドが "1","2","3","4" と4列あるとすれば
AAA(0)("1") = BBB(0)("1").ToString
AAA(1)("2") = BBB(0)("2").ToString
       ・
       ・ 
       ・
と言うように、全ての項目一つずつを、For文なんかで回しながら代入していく。


帳票でバインド / アンバインドという対は聞いたことがないですね。 バインドについては確かに DataSource を設定している時点でバインドしていると見て良いと思いますが、アンバインドというのは聞いたことがないです。 ちなみにバウンドとアンバウンドについて語っているつもりであるなら上記は誤っています。

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

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