Visual Basic 2010で作成したフォームから条件指定した行のみAccess 2019のレポート印刷する方法

Visual Basic

・きっかけ

先日、データベースにMicrosoft Accessを利用しているVisual Basic 2010(以下、VB2010)Windowsアプリケーションを使用しているお客様から機能追加依頼があり、テーブルに入金情報を登録したタイミング(条件指定に入力日)で領収書を印刷(Accessで作成してあるレポート印刷)したいという内容でした。その際に記述したプログラムについて書かせていただきましたので、ご覧いただいた方に少しでも参考になれば幸いです。
(この記事は約5分ぐらいで読めます)

・今回のプログラムではこんなことができます

・VB2010で作成したフォームに入力した値を検索条件に特定行のみAccessのレポートが印刷できます。※フォームのコードは割愛させていただきます。

・プログラムの記述例(プロシージャ)

Public Sub receipt_print()

        'Access経由で請求書の印刷
        ' 変数の宣言
        Dim objAccess As Object
        Dim findkey As String
        Dim setmno As Integer
    Dim Access_PATH As String
        
        'Access(データベースの保存場所)
     Access_PATH = "C:\WindowsApplication\データベース名.accdb"

        '顧客管理番号(Mno)の取得
        setmno = TextBox.text(フォームに設置しているテキストボックスやリストボックスの入力値をセット)

        'Accessを起動する
        objAccess = CreateObject("Access.Application")
        findkey = "テーブル名.顧客管理番号=" & setmno & " AND テーブル名.日付=#" & DateTimePicker.Value.Date(フォームで入力した値) & "#"

        With objAccess
            .OpenCurrentDatabase(filePath:=Access_PATH)
            .DoCmd.OpenReport(ReportName:="Accessのレポート名", WhereCondition:=findkey)
        End With

        ' Accessを終了する
        objAccess.quit()
        objAccess = Nothing
        Me.Cursor = Cursors.Default
        MsgBox("領収書を出力しました。", vbInformation)

    End Sub

・参考資料

DoCmd.OpenReport メソッド (Access)

OpenReport メソッドは、Visual Basic で “OpenReport/レポートを開く” アクションを実行します。

DoCmd.OpenReport メソッド (Access) | Microsoft Learn

・まとめ

今回はVB2010のプログラムを利用してAccessレポートを印刷する内容でしたが、DoCmd.OpenReportはAccessのVBAを使用しているフォームでも使用が可能なので、同じような処理をしたい場合の情報として、お役に立てれば幸いです。ここまでご覧いただき、誠にありがとうございます。

・ご注意

・掲載されている内容には細心の注意をしてるつもりですが、
間違いやご指摘等がありましたら、「お問い合わせ」からご連絡をいただけますと幸いです。
・掲載されている入力VBプログラム等は動作を保証するものではなく、あくまでサンプルとして掲載しております。
・掲載されているVBプログラム等は自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
・対応バージョン
 Microsoft Access 2019
 Microsoft Visual Studio 2010 Professional

コメント