ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Visual Basic User's ClubコミュのData Report+Data Environmentのバインディングでクエリを動的に入れ替える

  • mixiチェック
  • このエントリーをはてなブックマークに追加
VB 6.0のヘルプを見ながら、Data Report+Data Environment
でのレポートを作成しています。
ここで壁に当たってしまいました。
※MSDNのMicrosoft Data Report デザイナの使用方法を参考
 にしています。

Data Reportに出力するデータは外部DBサーバーへSQLを実行し
て結果を取得しています。1回の処理の中で、このSQLの条件を
変更し、その結果を印刷したいのですが、CommandTextのSQLを
変更しただけでは、1回目と2回目で同じ結果が返ってきてしま
いました。

ソースとしては以下のようになっています。

===================================================
Private Sub Command1_Click()
 '1回目のレポート印刷
 de.Commands!select_a.CommandText = "SELECT * FROM   TABLE_A WHERE CD='100'"
 rp.PrintReport

{・・・途中処理・・・}

 '2回目のレポート印刷
 de.Commands!select_a.CommandText = "SELECT * FROM  TABLE_A WHERE CD='200'"
 rp.PrintReport

■結果
1回目PrintReport->正しい結果
2回目PrintReport->1回目と同じ結果
===================================================

ウォッチで見てみると、Data EnvironmentのResultsets
中身が古いままだったので、Data Environmentをclose->Open
してみたり、executeメソッドを実行してみたりしたのですが
実行時エラーがでるかコンパイルエラーがでるかでうまく動作
させる事が出来ません。

GoogleでData EnvironmentやData Reportで検索してみたので
すが、対応方法がわからない状態です。

何かご存知の方がいらっしゃいましたら、アドバイスをお願い
致します。


■開発環境
OS:Windows XP SP2
VB:Visual Basic 6.0 Professional SP6

コメント(3)

○のぶ さん○

Data Environment1を使用して、複数回SQL文を実行してData
Report1に印刷する方法は良くは分かりませんが、SQL文を複数
回実行して得たRecordsetをData Report1に印刷する方法は下
記のURLにあります。 参考とされてはいかがでしょうか?
 ┌(-_-)┐

http://homepage2.nifty.com/inform/vbdb/reportsample.htm

 (^0^)/^^^^^
>張子房さん

張子房の教えていただいたリンク先の内容で実現できました!
※MSDNのヘルプがData Environmentを使用していた説明でし
 たので、Data Environmentを使ったやり方ばかり調べて
 ました。

ただ、showの場合は後半に実行したほうが表示されてしまい、
前半の内容は表示されませんでした・・・。もっとも今回はプレ
ビューの機能は必要ないので、PrintReportが実行できれば
十分でした。ありがとうございました。

ソースは以下のような感じになりました。

===================================================
Private Sub Command1_Click()
Dim cn As Object
Dim rs As Object
Dim strSQL As String

' データベース接続を確立する
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=OraOLEDB.Oracle.1;Password=xxxxx;Persist Security Info=True;User ID=xxxxx;Data Source=xxxxx"

'SQL作成
 strSQL = "SELECT * FROM TABLE_A WHERE CD='100'"

' レコードセットを取得する
Set rs = cn.Execute(strSQL)

' レポートのデータソースを指定(レコードセットから情報を取得する)
Set rp.DataSource = rs

 '1回目のレポート印刷
 rp.PrintReport

{・・・途中処理・・・}

'SQL作成
 strSQL = "SELECT * FROM TABLE_A WHERE CD='200'"

' レコードセットを取得する
Set rs = cn.Execute(strSQL)

' レポートのデータソースを指定(レコードセットから情報を取得する)
Set rp.DataSource = rs

 '2回目のレポート印刷
 rp.PrintReport

■結果
1回目PrintReport->正しい結果
2回目PrintReport->正しい結果
===================================================
○のぶ さん○

あなたの頑張った成果です、おめでとうございます!

\(^0^)/

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Visual Basic User's Club 更新情報

Visual Basic User's Clubのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング