Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5026 / 9994 ←次へ | 前へ→

【8202】Re:Printoutメソッドのページ指定
質問  sim  - 06/7/11(火) 10:10 -

引用なし
パスワード
   ▼hatena さん:
>レポートのレコードソースは何も設定していないのですか。(非連結レポート?)
>
>その場合、詳細セクションは1行のみになりますが、
>どのように複数ページ出力をしているのですか。

レコードソースを指定していないつもりでつくっていましたが、いつの間にか指定しておりました。不正確な記述で申し訳ありません。レコードソースの指定を削除しましたところ、hatenaさまのおっしゃるとおり、1件分しか出力されなくなりました。追加質問ですが、レコードソースの指定をせずに、1レコードがレポート1枚に対応した帳票(単票?)を複数ページ出力するような処理は可能でしょうか?

>
>>  〜各処理〜
>
>肝心な部分を省略されては、回答しようがありません。

長いのと必要ないかと考えたのとで、省略してしまいました。
冗長となりますが、レポートのイベントを重複部分も含めて再掲いたします。
レポートのレコードソースにはTBL_NAME_PCKが指定してあります。レコード1件と
レポート1枚は基本的に1:1の対応なのですが、レコードの内容によって
2:1の対応になる場合があります。

自分でも調査したところ、2ページ分飛ばされてしまうのは、openReport実行時と
PrintOut時共に詳細_formatが走ってしまうため?と考えています。実際OpenReportをコメントアウトしたところ、飛ばされるのは1ページに減りました。
ですがこの場合、複数プリンタから、同じ開始ページで帳票が出力されてしまいました。PrintOutメソッドは実行時に自らレポートを開いて印刷し、既にOpenしたレポートをそのまま印刷してくれるわけではないということでしょうか?

Option Compare Database
Option Explicit

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub Report_Close()
  rst.Close
  cnn.Close
End Sub

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)
  '全てのコントロールを不可視にする
  Call setCtlVisiblePCK(0, False)
  Call setCtlVisiblePCK(5, False)
  Call setCtlVisibleBLK(1, False)
  Call setCtlVisibleBLK(2, False)
  Call setCtlVisibleBLK(3, False)
  Call setCtlVisibleBLK(4, False)

  'rst!PGBLKSUM =2かつ 次レコードの値がrst!PGBLKSUM =2
  'のとき、レポート1枚に対して2件のレコードを出力する。
  If (rst!PGBLKSUM = 2) Then
    rst.MoveNext
    If rst!PGBLKSUM = 2 Then
      '2:1
      rst.MovePrevious
      'P0,B1に値を入れる
      Call setCtlVisiblePCK(0, True)
      Call setCtlValuePCK(0)
      Call setCtlVisibleBLK(1, True)
      Call setCtlValueBLK(1, 1)
      rst.MoveNext
      'P5,B3に値を入れる
      Call setCtlVisiblePCK(5, True)
      Call setCtlValuePCK(5)
      Call setCtlVisibleBLK(3, True)
      Call setCtlValueBLK(3, 1)
      'B2,B4を不可視
      Call setCtlVisibleBLK(2, False)
      Call setCtlVisibleBLK(4, False)
    Else
      'P0,B1に値を入れる
      Call setCtlVisiblePCK(0, True)
      Call setCtlValuePCK(0)
      Call setCtlVisibleBLK(1, True)
      Call setCtlValueBLK(1, 1)
      'B2,B3,B4,P5を不可視
      Call setCtlVisibleBLK(2, False)
      Call setCtlVisibleBLK(3, False)
      Call setCtlVisibleBLK(4, False)
      Call setCtlVisiblePCK(5, False)
    End If

  Else
    'P0,B1,B2,B3に値を入れる
    Call setCtlVisiblePCK(0, True)
    Call setCtlValuePCK(0)
    Call setCtlVisibleBLK(1, True)
    Call setCtlValueBLK(1, 1)
    Call setCtlVisibleBLK(2, True)
    Call setCtlValueBLK(2, 2)
    Call setCtlVisibleBLK(3, True)
    Call setCtlValueBLK(3, 3)
    
    'B4,P5を不可視
    Call setCtlVisibleBLK(4, False)
    Call setCtlVisiblePCK(5, False)
  End If
  
  rst.MoveNext
  
  If rst.EOF Then
    rst.Close
    cnn.Close
  End If
End Sub

Private Sub setCtlVisiblePCK(i As Integer, blnVisible As Boolean)
  
  Me("UNYOBI" & i).Visible = blnVisible
  Me("ADD1" & i).Visible = blnVisible
  Me("ADD2" & i).Visible = blnVisible
     
      〜省略〜
     
End Subnd Sub

Private Sub setCtlValuePCK(i As Integer)

  Me("UNYOBI" & i) = rst!UNYOBI
  Me("ADD1" & i) = rst!ADD1
  Me("PGTEN" & i) = rst!PGTEN
  Me("PGBLK" & i) = rst!PGBLK
     
      〜省略〜
     
End Sub

Private Sub setCtlVisibleBLK(i As Integer, blnVisible As Boolean)
  
  Me("UNYOBI" & i).Visible = blnVisible
  Me("ADD1" & i).Visible = blnVisible
     
      〜省略〜
End Sub

Private Sub setCtlValueBLK(i As Integer, j As Integer)
  
  Me("BLKCD" & i) = rst("BLKCD" & j)
  Me("BLKNM" & i) = rst("BLKNM" & j)
  Me("PGBLK" & i) = rst("PGBLK" & j)
     
      〜省略〜

End Sub
480 hits

【8194】Printoutメソッドのページ指定 sim 06/7/10(月) 20:08 質問
【8197】Re:Printoutメソッドのページ指定 hatena 06/7/10(月) 23:21 回答
【8202】Re:Printoutメソッドのページ指定 sim 06/7/11(火) 10:10 質問
【8205】Re:Printoutメソッドのページ指定 hatena 06/7/11(火) 12:06 回答
【8206】Re:Printoutメソッドのページ指定 sim 06/7/11(火) 14:34 お礼
【8207】Re:Printoutメソッドのページ指定 hatena 06/7/11(火) 15:10 回答

5026 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078228
(SS)C-BOARD v3.8 is Free