Microsoft Access Club >初心者講座 >休暇申請管理ソフト >このページ >次頁 - 前項  サイト内検索


休暇申請書印刷フォームの作成について:休暇申請管理ソフト



そろそろ、終焉に近づいて来ましたね。前回は「休暇申請書」の作成を行いました。今回はそのレポートを印刷するための"休暇申請書印刷フォーム"の作成を やってみましょう。

 

フォームのデザインビュー

フォームのデザインビューは下記のようになっています。そうですね、これは以前作成した「社員別閲覧フォーム」とよく似ているでしょう。実際、流用したのです。

 

 

  1. まず、フォームに記述しているプロシージャを全て削除します。
  2. その他、テキストボックスやリストボックス等を、上記サンプル図を参考にして削除します。
  3. 新たにコマンドボタンを1個新規作成します。
  4. 標題は 印刷(&A) として下さい。
  5. このようにすることで、「ALT + A」で実行できるようになります。ちょっと便利でしょう。

 

 

左側のリストボックス

  1. 左側にあるリストボックス(名前は、リスト)の「値集合ソース」には、下記のようなクエリを配置します。

 

 

  1. 入力者名フィールドの抽出条件欄に記述している「<>"管理者"」の意味は、管理者以外の社員名を表示しなさい、と云うことです。
  2. リストボックスの列数は2、列幅は0cm;3cmとしています。
  3. つまり、入力者IDフィールドデータを表示させていません。
  4. 但し、連結プロパティを 1 としていますので、「入力者ID」で右のリストボックスと連結しています。

 

更新後処理イベントに下記プロシージャを記述しています。

Private Sub リスト_AfterUpdate()

    Me.リスト2.Requery

End Sub

 

右側のリストボックス

  1. 右側にあるリストボックス(名前は、リスト2)の値集合ソースには、下記のようなクエリを配置します。

 

 

列数は4、列幅はそれぞれ 0cm;1.507cm;3.812cm;2.702cmとしています。こちらも、入力者IDを表示させていません。

 

 

印刷を実行するプロシージャ

コマンドボタン「印刷」に下記のようなプロシージャを記述します。

Private Sub 印刷_Click()

    Select Case IsNull(var条件)

    Case True
        MsgBox strmsg_1, 16, "管理者"
    Case False
        If 1 = MsgBox(strmsg_2, 1, "管理者") Then
            DoCmd.OpenReport "rpt_申請書", acViewNormal, "", "TD in (" & var条件 & ")"
        End If

    End Select
解説
  • これで印刷可能となります。サンプルは「印刷プレビュー」としていますのでご注意下さい。また、複数項目を選択して印刷する場合は、ちょっと対応が異なりますので、注意が必要です。Mリストボックスプロパティのの「複数選択」を"拡張"とします。Nこれで、Ctrl をクリックしながら複数項目を選択できるようになります。申請はまとめて行う場合もありますからね‥。コマンドボタン「印刷」に下記のようなプロシージャを記述します。

 

Private Sub 印刷_Click()

    Dim 条件 As Variant
    Dim 行 As Variant
    Dim strmsg_1 As Variant
    Dim strmsg_2 As Variant

    条件 = Null

    For Each 行 In Me![リスト2].ItemsSelected
        条件 = 条件 & IIf(Not IsNull(条件), ",", "") & Me![リスト2].Column(0, 行)
    Next

    strmsg_1 = "対象項目が何も選択されていませんので、印刷を中止します。" & Chr(13) & Chr(13) & _
                "再度操作を行って下さい。"
    strmsg_2 = "申請者" & Space(4) & Me![リスト].Column(1) & Chr(13) & "申請No." & _
                Space(4) & 条件 & Chr(13) & Chr(13) & "上記でよければ印刷を開始します。"

    Select Case IsNull(条件)

    Case True
        MsgBox strmsg_1, 16, "管理者"
    Case False
        If 1 = MsgBox(strmsg_2, 1, "管理者") Then
            DoCmd.OpenReport "rpt_申請書", acPreview, "", "No. in (" & 条件 & ")"
        End If

    End Select

End Sub

 

このプロシージャについては、「参考ファイルNo.62」で詳しく紹介していますのでご覧下さい。サンプルファイルは"複数選択可能"としています。"
 


休暇申請書印刷フォームの作成について:休暇申請管理ソフト


 

-Microsoft Access Club-