伊川の過去の動画で、どこまで作成できる?
こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きになります。
私のこれまでの動画で、どこまでできるのか?
今回は、上記の内容を紹介します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記の依頼を受けました。
発送伝票を作成するときに、もっと効率を上げることはできないか?
ACCESSのどのような機能を使えばいいのか?
解決策

ACCESSといえば、
リレーションとクエリです。スキルをフル回転で作成しましょう。
ACCESSの機能
ACCESSを苦手としている人にACCESSの機能の素晴らしさを伝えたいと思います。
Excelと違い、関数やVBAを使わなくても、ACCESSが有している機能で作成できます。

ACCESSを開くと、このようにフォームを起動するように設定するとこころから始めます。
伝票発行システム作成 作成手順その1 ACCESSを開くとフォームが起動

オプションから、フォームを起動する設定になります。
上の記事を参照してください。
伝票発行システム作成 作成手順その2 顧客リストを一瞬で入力
顧客リストは、オートルックアップクエリで入力します。
MT_顧客リスト
荷物を届ける発送先のリストです。

MT_発送元
発送元の会社です。

MT_発送印字リスト
この内容を、送り状に印字します。

F_発送入力
下記のフォームに、情報を入力します。


動画では、6:56の場所で確認できます。
ブログでは、この感動を伝えることはできないので、動画で確認をお願いします。
リレーションの設定
一対多のリレーションを設定します。

伝票発行システム作成 作成手順その3 配達の時間指定を入力

Private Sub 顧客ID_AfterUpdate()
Me.日時 = Date
End Sub
Private Sub 午前中_AfterUpdate()
Select Case True
Case Me.[午前中] = True
Me.[時間_14時] = False
Me.[時間_16時] = False
Me.[時間_18時] = False
Me.[時間_19時] = False
Me.[時間指定無し] = False
Dim a As Variant, b As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:午前中"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
Private Sub 時間_14時_AfterUpdate()
Select Case True
Case Me.[時間_14時] = True
Me.[午前中] = False
Me.[時間_16時] = False
Me.[時間_18時] = False
Me.[時間_19時] = False
Me.[時間指定無し] = False
Dim a As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:14時~16時"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
Private Sub 時間_16時_AfterUpdate()
Select Case True
Case Me.[時間_16時] = True
Me.[午前中] = False
Me.[時間_14時] = False
Me.[時間_18時] = False
Me.[時間_19時] = False
Me.[時間指定無し] = False
Dim a As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:16時~18時"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
Private Sub 時間_18時_AfterUpdate()
Select Case True
Case Me.[時間_18時] = True
Me.[午前中] = False
Me.[時間_14時] = False
Me.[時間_16時] = False
Me.[時間_19時] = False
Me.[時間指定無し] = False
Dim a As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:18時~20時"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
Private Sub 時間_19時_AfterUpdate()
Select Case True
Case Me.[時間_19時] = True
Me.[午前中] = False
Me.[時間_14時] = False
Me.[時間_16時] = False
Me.[時間_18時] = False
Me.[時間指定無し] = False
Dim a As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:19時~21時"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
Private Sub 時間指定無し_AfterUpdate()
Select Case True
Case Me.[時間指定無し] = True
Me.[午前中] = False
Me.[時間_14時] = False
Me.[時間_16時] = False
Me.[時間_18時] = False
Me.[時間_19時] = False
Dim a As Variant
a = Me.[入力用品名]
Me.[配達時間] = ""
Me.[配達時間] = "配達時間:時間指定無し"
Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間]
End Select
End Sub
伝票発行システム作成 作成手順その4 更新クエリ

発送印字リストは顧客IDしか入力されていません。
発送印字リストは更新クエリを利用して、空白を埋めます。

全部の画面を記載できないので、一部抜粋で掲載します。

ボタン一発で更新されます。

実行結果です。
Private Sub コマンド2_Click() DoCmd.OpenQuery "更新Q_発送リスト", acViewNormal, acEdit MsgBox "印字リスト更新完了" DoCmd.OpenReport "R_送り状印", acViewPreview End Sub

MT_発送印字リストも埋まりました。
ここがポイント

カンタンな、VBAのコードでシステムは作成できるのが、ACCESSのスゴイところです。オートルックアップクエリと、クエリを理解することがACCESSを理解する第一歩です。
まとめ
ここまでが前半になります。
後半は、もっと業務を効率化するように細工をします。
今回のサンプルファイルは、ありません。

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
















