Accessなら使いやすいフォームを作成することができます。
Excelではシートごとにデータが増えていくため、切り替えが少し面倒です。
今回は1日単位で予約を管理する仕組みを紹介してみます。
スケジュール管理にも応用できる汎用性のあるシステムですが、慣れれば簡単に作成することができます。
美容院の予約を例にしてみます。
個人の店舗を想定して予約内容は1件ですが列を増やせば複数の予約にも対応可能です。
時間で予約を取る業種であれば色々応用ができると思います。
上部のカレンダーをボタンで操作することで該当の日がすぐに確認できます。
ここまでならExcelでも何ならWordでもマクロを使って同じようなことは可能だと思います。
さて、Accessではデータベース処理をするため、サービスの内容はマスタ管理します。
ここでは割愛しますが、顧客もマスタ管理すればどのお客さんがどの程度どんなサービスを利用しているか。
曜日による予約状況の傾向などが蓄積されたデータから分析できるようになってきます。
作業としては日常業務としてカレンダーで予約を取るだけなのですが、ある程度の時間が経過すると今度は分析データとして活用できる情報になってくれるのです。
このあたりがデータベースならではの性能であり、素晴らしい仕組みです。
飲食店なら曜日や時間帯での予約状況が把握できれば、スタッフのシフトも組みやすくなります。
カレンダーの作り方を紹介しておきます。
①フィールドが日付だけのテーブルを作成します。
②時間、内容、備考などのフィールドを持たせてテーブルを作成します。
このテーブルを細かくすればより多くの情報を持たせることができます。
今回30分刻みでタイムテーブルを作成しましたが、ここは自由に設定できます。
③カレンダーを作成するモジュールを記述します。
Function CreateCalender()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim lastDay As Date
Dim i As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_予定表")
If rst.RecordCount = 0 Then
rst.AddNew
rst!日付 = Date
rst.Update
End If
rst.MoveLast
lastDay = rst!日付
For i = 1 To 3650
rst.AddNew
rst!日付 = lastDay + i
rst.Update
Next
Set rst = Nothing
Set dbs = Nothing
End Function
これはカレンダーを作成するひな形のような決まりきったコードなのでコピペしてもらえば良いです。
For i=1 To 3650 で10年分のカレンダーを作成しておきます。
④テーブルを基にクエリを作成して、テーブル作成クエリでテーブルを作成します。
リレーションの無い「直積クエリ」です。あまり使うことは無いですが、今回のようにデータを総当たりさせて使用するには欠かせないクエリです。
データは9万件以上にもなりますが、何らストレス無く動作してくれます。
⑤フォーム上部に非連結のテキストボックス(名前:valDate)を設置して、日付を表示させます。コマンドボタンを設置して日付の移動およびフィルタを実行します。
Private Sub cmdMoveNext_Click()
Call moveDate(1)
End Sub
Private Sub cmdMoveNext2_Click()
Call moveDate(10)
End Sub
Private Sub cmdMovePrevious_Click()
Call moveDate(-1)
End Sub
Private Sub cmdMovePrevious2_Click()
Call moveDate(-10)
End Sub
Private Sub moveDate(dVal As Date)
valDate = DateAdd("d", dVal, valDate)
Me.Filter = "日付 = #" & valDate & "#"
Me.FilterOn = True
End Sub
Private Sub Form_Load()
DoCmd.RunCommand acCmdAppMaximize
Call moveDate(0)
End Sub
各ボタンのコードです。
大まかには以上の手順だけなので、少しAccessの知識があればシステム自体は作れると思います。
あとはアイデア次第で色々な運用をすれば良いと思います。
ちなみに、私の仕事場では「公用車の予約」「面談室の予約」「面会者の予約」などで役立っています。
社内LANで共有できるのもAccessの強みです。(Excelは誰かが使用中には他の人が操作できません)
最後までお読みいただきありがとうございました。
毎日の業務で入力して使用済みになったデータも、実はさまざまな分析をするための重要な情報になる。それを実現するのがデータベースシステムです。