|
環境: Access 2003
Windows XP Pro
度々お世話になっております。simと申します。
現在、以下のようなコード(1.)で帳票出力処理を作成しております。
帳票を、複数のプリンターに対して、指定した開始、終了ページ数で
出力したいと考えております。プリンターはテーブルに登録されており、
開始ページ、出力ページのカラムを持っています。
この関数のprintoutメソッドにてページ指定をして出力したところ、
最初の2ページが飛ばされて印刷されてしまう状況です(例:1〜6ページを
指定すると、3〜8ページが出力される)。
留意点として、この帳票は、特定のレコードソースを持たず、Open時に読み
こんだレコードセットを、詳細_Format時に一行ずつ読み込んでレポートを
出力するつくりになっております(コード2.)。一ページに対し、レコード
セット一行が対応します。このあたりが悪さをしていると思われますが、
printoutメソッドが悪いのか、format時イベントが悪いのか切り分けが
できません。
とりあえずprintoutメソッドの使用法に間違いがあるのかと考え、投稿
させていただきました。printoutメソッドについて情報をお持ちの方、
よろしくご教示ください。
1. PrintOutメソッド使用プロシージャ
DoCmd.openReport REPORT_NAME, acViewPreview, , , , acHidden
DoCmd.SelectObject acReport, REPORT_NAME, True
'テーブルを開く
Set Prtcnn = CurrentProject.Connection
Set Prtrst = New ADODB.Recordset
Prtrst.Open "select * from " & TBL_NAME_PRT_PCK & " where SIYO_FLG=true order by PAGE_FROM ", Prtcnn, adOpenKeyset, adLockReadOnly
Prtrst.MoveFirst
Do Until Prtrst.EOF
strPrinter = Prtrst!PRT_NM
Set prt = Application.Printers(strPrinter)
Set Application.Printer = prt
DoCmd.PrintOut acPages, Prtrst!PAGE_FROM, Prtrst!PAGE_TO
Prtrst.MoveNext
Loop
DoCmd.Close acReport, REPORT_NAME, acSaveNo
Prtrst.Close
Prtcnn.Close
2.帳票イベント
Private Sub Report_Open(Cancel As Integer)
'テーブルを開く
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open TBL_NAME_PCK, cnn, adOpenKeyset, adLockReadOnly
rst.MoveFirst
End Sub
Private Sub 詳細_Print(Cancel As Integer, FormatCount As Integer)
〜各処理〜
rst.MoveNext
If rst.EOF Then
rst.Close
cnn.Close
End If
End Sub
|
|