|  | 分類:[VB.NET/VB2005 以降]
 
 ctiveReportsにて複数顧客宛の請求書を一括印刷できるプログラムをVB.NET
 で作成中です。
 
 Report1.vb
 ReportStartイベントにて
 ・データソースの設定
 ・複数顧客分の請求データ抽出SQL文
 
 FetchDataイベントにて
 ・ReportStartで抽出した顧客の1顧客分ずつの請求明細データを
 SQLDataReaderで抽出
 (複数顧客一括抽出をデータソースとしているため、明細抽出SQLは
 SQLDataReaderを使用しています。)
 
 という感じで、明細行が固定(8行)の場合は正常に印刷できています。
 データリーダのレコードは表示用コントロールのデータフィールドに設定でき
 ないため、
 8行分の表示用コントロールをすべて作成し、SQLDataReaderの行数に応じて
 当てはめています。
 private Row As Integer = 1
 Dim dr As SqlDataReader
 ...
 Do while dr.Read
 select case Row
 case 1
 txtSeikyuAmount.text = dr.Item("SEIQ_AMOUNT")
 中略
 case 2 ...
 end select
 Row=Row+1
 loop
 )
 
 しかし、明細行が固定行(8行)以上の場合の改ページ処理がうまく出来ず困
 っています。
 FetchDataイベントで9行目の場合、NewPage.Afterしてもダメ(case 9
 NewPage.After)
 Detail_FormatイベントでNewPage.Afterしてもダメ(if Row < 8 then
 NewPage.After)
 
 
 
 
 
 そこで、明細行をサブレポートにぶち込んだのですが、
 (SQLDataReaderにぶち込んでいたSQLをサブレポートのデータソースを設定
 し、抽出したレコードを表示用コントロールのデータフィールドに当てはめ
 る)
 サブレポートの行数に応じて改ページする方法がわかりません。
 サブレポートのDetail_Formatイベントで行数をカウントし、親レポー
 ト.Detail.NewPage = NewPage.Afterはダメでした。
 
 
 なにかいい方法があればご教授ください。
 
 |