pickup

目次

顧客別の単価を設定するには?

こんにちは。伊川(@naonaoke)です。

今回は、顧客別に単価をACCESSで設定します。

これは、Yahooの知恵袋で質問されていた項目です。

少しだけ回答して、追加の答えを書くことなくベストアンサーになってしまいました。

問題提起

 

(株)IKAWAの阿久 世子男(アク セスオ)は、下記のような依頼を受けました。

・顧客別に単価設定をしたい。

・顧客テーブルと商品テーブルは作成済である。

どのように作成すればいいだろうか?

解決策

 

回答
sesuo2.jpg
・顧客別単価を設定するテーブルを作成する。・オートルックアップクエリと、カンタンなVBAを利用してフォームを作成する。

顧客別単価を設定するテーブルを作成する。

作成手順 その1 現在のテータベースを確認する


上の図のように、MT_顧客ID(主キーは顧客ID)、MT_商品ID(主キーは商品ID)があるとします。

ここから、顧客別単価を管理するテーブルを作成します。

つまり、1社について、商品10個分のIDが作成されます。

作成手順 その2 顧客別単価テーブルを作成する。


赤枠の中は、顧客IDと、商品IDを合わせました。

主キーと主キーを組合わせても、重複はしません。

これは、Excelで作成したほうが楽です。

10社に、10個の商品IDを組合わせるので、100個のデータができます。

主キーができましたので、当然、データ入力は、オートルックアップクエリを使います。

作成手順 その3 データ入力で、オートルックアップクエリを使えるようにする


上の図のように、MT_発注というテーブルを作成します。

テーブルの構造は、上の図のようにしていますが、顧客別単価IDを作成します。

顧客別単価IDでオートルックアップクエリを作成します。

オートルックアップクエリに関しては、上の記事を参照してください。



オートルックアップクエリを使う準備は完了しました。

作成手順 その4 検索フォームを作成する


上の図のような入力フォームを作成しました。

社名、商品名を、コンボボックスにしています。


上の図のようにコンボボックスを2列にしています。


プロパティシートで、「列数」を2、「列幅」2cm;2cmにします。

そして、顧客IDに反映をさせます。

Private Sub 社名_AfterUpdate()
Me.顧客ID.Value = Me.[社名].Column(1)
End Sub


社名を選択すると、商品IDが、自動的に入力されます。

商品名を選択すると、商品IDも自動的に入力されるようにしています。

作成手順 その5 顧客別単価IDを作成する

顧客別単価IDは、顧客IDと商品IDを合体させたものです。

つまり、このフォームでは、商品が選択された時点で、商品IDも、顧客IDもフォーム上に表示されます。

Private Sub 商品名_AfterUpdate()
Me.商品ID.Value = Me.[商品名].Column(1)
Me.顧客別単価ID.Value = 顧客ID.Value & 商品ID.Value
Me.発注日 = Date
End Sub


顧客別単価IDが表示されることで、顧客別単価がオートルックアップクエリによって、自動で表示されます。

後は、オマケですが、発注日も自動で入力されます。

発注数量が、入力されると、自動で、計算され、合計金額は表示されます。

Private Sub 発注数量_AfterUpdate()
Me.金額合計 = Me.発注数量 * 顧客別単価
End Sub

ここがポイント

ここがポイント
Function8.png
データベースを作成するときは、オートルックアップクエリが使えるように設計することです。
また、いったん入力されたデータは、再度入力しないで、参照するがデータベースの原則です。

 

まとめ

今回のまとめ
sesuo6.jpg
オートルックアップクエリが使えると、後は、きわめて単純なVBAのコードを記載するだけです。

今回のサンプルファイルは、No40です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事