・きっかけ
先日、データベースに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
コメント