ここから本文です

Access2016で質問です。 下記のようなテーブルを作成しました。これに数値をフォ...

アバター

ID非公開さん

2019/11/2917:29:43

Access2016で質問です。
下記のようなテーブルを作成しました。これに数値をフォームで入力して請求書にしたいと思っ
ています。

受注テーブル(受注コード[主キー]、受注日、顧客名)

受注サブテーブル(受注サブID[主キー]、受注コード、商品名、販売単価、数量)

顧客別単価テーブル(商品コード[主キー]、顧客コード[主キー]、顧客別単価)

商品マスタテーブル(商品コード[主キー]、商品名、重さ)

顧客マスタテーブル(顧客コード[主キー]、顧客名、住所・・・)


顧客別に単価が違う為、顧客別単価テーブルというテーブルがありその顧客別の単価がうまく反映できなく困っています。

イメージはメインの受注フォームで顧客名をコンボボックスで選び受注サブテーブルの商品名をコンボボックスで選ぶと販売単価に顧客別の単価が反映される様なフォームを作りたいと考えています。
DLookUp関数を使って処理をするのは何となく分かるのですが初心者なのでうまく出来ません。
どなたかご教示下さい。宜しくお願い致します。

閲覧数:
49
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2019/11/3019:00:34

気になる事
1つのテーブルに2つの主キーは設定できません。
「受注テーブル」に「顧客コード」がありません。
この「顧客別単価テーブル」の設計形式では、顧客数×商品数のテーブルが必要になり、更に顧客や商品を追加した時の「顧客別単価テーブル」の更新に注意が必要になる場合があります。


と言う事は別にして、フォーム上に「顧客コード」と「商品コード」と「単価」のテキストボックスがある場合です。
また、「顧客別単価テーブル」の「商品コード」と「顧客コード」が数値型の場合です。
「サブフォーム」の記述が無いので1フォーム内の場合です。
(「顧客コード」と「商品コード」と「単価」が同一のフォーム上)
フォーム上の単価のフィールドの[コントロールソース]を下記にしてください。

=DLookUp("顧客別単価","顧客別単価テーブル","([顧客コード]=" & Nz([顧客コード],0) & ")and([商品コード]=" & Nz([商品コード],0) & ")")





または、「単価」を非連結にして、フォームのVBA部に下をコピーしてください。

Private Sub 顧客コード_AfterUpdate()
単価表示
End Sub

Private Sub 商品コード_AfterUpdate()
単価表示
End Sub

Sub 単価表示()
[単価] = DLookup("顧客別単価", "顧客別単価テーブル", "([顧客コード]=" & Nz([顧客コード], 0) & ")and([商品コード]=" & Nz([商品コード], 0) & ")")
End Sub

気になる事
1つのテーブルに2つの主キーは設定できません。
「受注テーブル」に「顧客コード」がありません。...

  • アバター

    質問者

    ID非公開さん

    2019/12/108:46:31

    返信ありがとうございます。

    >「サブフォーム」の記述が無いので1フォーム内の場合です。

    「受注サブテーブルの商品名をコンボボックスで」→「受注サブフォームの商品名をコンボボックスで」の間違いでした(汗)

    さておき非常に丁寧な説明ありがとうございます。さっそく明日会社で取り掛かってみます。

  • その他の返信(5件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tee********さん

2019/11/3011:18:41

顧客別単価テーブルの顧客コードを主キーにしてるのはどうかなと思いますが。

確定的なのは受注テーブルの顧客名は顧客IDです。

顧客名を選択するコンボはクエリなどで顧客マスターから引っ張って、IDを参照。

僕なら
そのコンボの更新後処理、及び商品選択の更新後処理に、販売単価を反映させる処理を書きます。

もしくは、販売単価がテキストボックスなら、そこにフォーカスが当たった時のイベントに書きます。まぁこれはしないかな(笑)

書けないならクエリを作ってそれを販売単価に反映させるか。

それが一番手っ取り早いかもですが、販売単価のコントロールの種類が不明なので。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる