|
分類:[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はダメでした。
なにかいい方法があればご教授ください。
|