目次
伊川の過去の動画で、どこまで作成できる?
こんにちは。伊川(@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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。