目次
売上を確認する検索フォームを作成する
こんにちは。伊川(@naonaoke)です。
今回は、検索フォームから日別の売上を検索する方法を紹介します。
また、簡易的な報告用のレポートを作成する方法も説明します。
Excelを利用しなくても、カンタンな報告書も作成できます。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記のような依頼を受けました。
・日別の売上を検索するフォームを作成して欲しい。
・紙として保存したいため、レポートも作成してほしい。
複数の検索条件で検索できるフォームを作成する自信がないし、レポートを作成もしたことがありません。
なにか良い方法がないだろうか?
解決策
回答
・DAOを使って、検索フォームを作成する。
日別の売上を検索するフォームを作成する
今回、作成する検索フォームです。
日時検索と、社員氏名検索で一致したものを、表示します。
作成手順 その1 対象のデータベースを表示して検索フォームを作成する
Q_売上速報を表示して、「作成」⇒「複数のアイテム」を選択します。
こんなフォームができますので、名前をつけて保存します。
作成手順 その2 非連結のテキストボックスで検索窓を作成する
上の図のようになります。
検索窓、ボタンの設置方法は、上の記事を参照してください。
作成手順 その3 社員氏名検索の更新後処理にコードを仕込む
上の図の社員名検索の更新後処理にVBAのコードを仕込みます。
Private Sub 社員氏名検索_AfterUpdate() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strFil As String Set db = CurrentDb Set rs = db.OpenRecordset("Q_売上速報", dbOpenDynaset) strFil = "契約日時=#" & 日時検索 & "#" & " and 社員氏名 = '" & 社員氏名検索 & "'" rs.Filter = strFil Set rs = rs.OpenRecordset Set Me.Recordset = rs Me.Requery Set rs = Nothing Set db = Nothing End Sub
作成手順 その4 解除ボタンにコードを仕込む
Private Sub コマンド53_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Q_売上速報", dbOpenDynaset) Set Me.Recordset = rs Me.Requery Set rs = Nothing Set db = Nothing Me.[日時検索] = "" Me.[社員氏名検索] = "" End Sub
ここがポイント
DAOのようなことが記載されるVBAを見ると、
難しいようですが、コードは、伊川なりに解説しています。
むずかしいと思わないで、チャレンジしてください。
むずかしいと思わないで、チャレンジしてください。
報告するレポートを作成する
レポート作成手順 その1 対象のデータベースを表示する
Q_売上速報から、「作成」⇒「レポート」を選択します。
こんなレポートが完成します。
上の図のように整形してください。
そして、名前をつけて保存してください。
レポート作成手順 その2 検索フォームの印字ボタンにコードを仕込む
Private Sub コマンド54_Click() DoCmd.OpenReport "RQ_売上速報", acViewPreview, , _ "契約日時=#" & 日時検索 & "#" & " and 社員氏名 = '" & 社員氏名検索 & "'" End Sub
ボタンのイベントプロシージャに上のコードを仕込みます。
これで完成です。
完成図
名前と日時でフィルターをかける
印字する
解除をクリックして、元に戻す
まとめ
今回のまとめ
今回は、社員氏名と、日時の複数条件で検索するフォームを作成しました。また、カンタンなレポートの作成もしました。ここまで、できたら、皆さんのスキルは、かなりアップしています。伊川と一緒にがんばりましょう。
こんかいのサンプルファイルは、No42です。
毎日の業務が、3時間短縮できます
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。