List 7-208 FormBillフォームのBTN_PRINT_Clickプロシージャ


  1: Private Sub BTN_PRINT_Click()
  2:     ' [印刷]ボタンが押されたときの処理
  3:     Dim oldBookMark As Variant, bmk As Variant
  4:     Dim sendflag As VbMsgBoxResult
  5:     Dim objBill As Business.Bill
  6:     
  7:     ' プリンタがなければ,エラーメッセージを表示する
  8:     If Printers.Count = 0 Then
  9:         MsgBox "プリンタがインストールされていません", _
                    vbOKOnly, "印刷エラー"
 10:     End If
 11:     
 12:     ' 印刷方法を選択させる
 13:     FormPrintSelect.Show 1
 14:     
 15:     ' 印刷後に送付ずみとするかどうかを尋ねる
 16:     If FormPrintSelect.Selected = 2 Or _
            FormPrintSelect.Selected = 3 Then
 17:         sendflag = MsgBox("印刷後に送付ずみとしますか", _
                                vbYesNo, "印刷の確認")
 18:         On Error GoTo ErrHandle
 19:         Set objBill = CreateObject("Business.Bill")
 20:     End If
 21:     
 22:     Select Case FormPrintSelect.Selected
 23:         Case 1
 24:             ' 表示されている表を印刷ならびにプレビュー
 25:             FormPrintPreview.SetTitle "請求書一覧", DGrid_Bill
 26:             FormPrintPreview.Show 1
 27:         Case 2
 28:             ' 表内のすべての項目の明細を一括印刷
 29:             Printer.ScaleMode = vbTwips
 30:             FormPrinting.bCancelFlag = False
 31:             FormPrinting.Show 0
 32:             
 33:             oldBookMark = g_objRec.BookMark
 34:             g_objRec.MoveFirst
 35:             Do While Not g_objRec.EOF
 36:                 FormBillDetail.InitData g_objRec.Fields("ID").Value
 37:                 FormPrintPreview.SetTitle2 FormBillDetail.FRAME_BILL, _
                                      FormBillDetail.FLXGrid_SlipDetail
 38:                 If FormPrintPreview.DrawPreview(Printer, 1, 65535) < 0 Then
 39:                     MsgBox "印刷が中断されました", vbOKOnly, "印刷エラー"
 40:                     Exit Do
 41:                 End If
 42:                 ' 送付ずみとする
 43:                 If sendflag = vbYes And _
                        g_objRec.Fields("SENDBILLFLAG").Value = False Then
 44:                     objBill.SendBill g_objRec.Fields("ID").Value
 45:                 End If
 46:                 g_objRec.MoveNext
 47:             Loop
 48:             FormPrinting.Hide
 49:             
 50:             ' データグリッドの内容を更新する
 51:             RefreshData
 52: 
 53:             On Error Resume Next
 54:             g_objRec.BookMark = oldBookMark
 55:         Case 3
 56:             ' 表内の選択されている項目の明細を一括印刷
 57:             Printer.ScaleMode = vbTwips
 58:             FormPrinting.bCancelFlag = False
 59:             FormPrinting.Show 0
 60:             
 61:             oldBookMark = g_objRec.BookMark
 62: 
 63:             For Each bmk In DGrid_Bill.SelBookmarks
 64:                 g_objRec.BookMark = bmk
 65:                 
 66:                 FormBillDetail.InitData g_objRec.Fields("ID").Value
 67:                 FormPrintPreview.SetTitle2 FormBillDetail.FRAME_BILL, _
                                                FormBillDetail.FLXGrid_SlipDetail
 68:                 If FormPrintPreview.DrawPreview(Printer, 1, 65535) < 0 Then
 69:                     MsgBox "印刷が中断されました", vbOKOnly, "印刷エラー"
 70:                     Exit For
 71:                 End If
 72:                 
 73:                 ' 送付ずみとする
 74:                 If sendflag = vbYes And g_objRec.Fields("SENDBILLFLAG").Value = False Then
 75:                     objBill.SendBill g_objRec.Fields("ID").Value
 76:                 End If
 77:                 g_objRec.MoveNext
 78:             Next
 80:             FormPrinting.Hide
 81:             
 82:             ' データグリッドの内容を更新する
 83:             RefreshData
 84: 
 85:             On Error Resume Next
 86:             g_objRec.BookMark = oldBookMark
 87:     End Select
 88: 
 89: 
 90:     Set objBill = Nothing
 91:     Exit Sub
 92: 
 93: ErrHandle:
 94:     MsgBox Err.descriotion, vbOKOnly, "印刷エラー"
 95:     FormPrinting.Hide
 96:     Set objBill = Nothing
 97: End Sub