伝票発行システムを管理 後編
こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きになります。
オートルックアップ、Excelで言うとこのLOOKUPに近いですかね?リレーションシップの重要性も承知してるのですが、自分とこの業務では送り状の送り先が固定先ではない、常に新規の送り先じゃないのが悩みの種です。
メインフォームに仕掛けをする
前回でほぼ完成していますが、さらに業務を効率化するために、仕掛けをします。
小技を持っていると業務が楽になります。
メインフォームに仕掛けをする 作成手順その1 自動的に今日の日時を入力
日時がないデータベースは意味がありません。
自動的に入力する場合は、必ず入力しなければならないフィールドに仕掛けをします。

Private Sub 顧客ID_AfterUpdate() Me.日時 = Date End Sub
メインフォームに仕掛けをする 作成手順その2 一度印字したデータは表示させない
これは更新クエリを使います。
更新クエリは、本当に便利ですので、使いこなせるようになりましょう。

仕掛けは、印字完了にチェックが入っていないデータだけが、未発送のデータになります。

本日のデータ、かつ、チェックが入っていないものにつき、チェックボックスをTrue、つまり、チェックを入れます。
チェックの入ったデータは、発送済なので、抽出されることはありません。しかも、一気にチェックが入ります。
Excelのような手作業ではミスが発生する可能性がありますが、更新クエリは間違えません。
メインフォームに仕掛けをする 作成手順その3 発送確認を行う

お客様から、荷物が届いていないと問合せがあった場合は、普通、日時と会社名を確認するはずです。
この検索フォームは、日時と、会社名で、複数条件で検索ができるようになっています。
複数条件で検索するコード
Private Sub コマンド115_Click()
Dim rs As DAO.Recordset
Dim strFil As String
Set db = CurrentDb
Set rs = db.OpenRecordset("MT_発送印字リスト", dbOpenDynaset)
strFil = "日時=#" & 日付 & "#" & _
" and 届け先氏名 Like '*" & 届け先 & "*'"
rs.Filter = strFil
Set rs = rs.OpenRecordset
Set Me.Recordset = rs
Me.Requery
Set rs = Nothing
Set db = Nothing
End Sub
検索条件を解除するコード
Private Sub コマンド112_Click()
Me.[日付] = Null
Me.[届け先] = ""
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("MT_発送印字リスト", dbOpenDynaset)
Set Me.Recordset = rs
Me.Requery
Set rs = Nothing
Set db = Nothing
End Sub
ここがポイント

今回は、伊川の過去動画でどれだけのシステムを作れるかを検証しました。言葉はわるいですが、どんな格好悪いシステムでも一度完成させましょう。
それを繰り返すことで、コツがわかります。
私は、一番初めに作成したシステムから、コレクションしています。
初めに作成したシステムはお世辞でも、
カッコ良いといえません。
そんな私でも動画あげていますから情熱をもって、お互い頑張りましょう。
。
まとめ
ACCESSは便利ということがわかっていただけましたでしょうか?
もっとACCESSの利便性を解説していきたいと思います。
今回のサンプルファイルは、No111です。

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。













