(1)ある特定の商品区分IDに属する商品だけ、(2)商品ID別に、それぞれ売上数量に応じた単価(例:100個以下、100~500個、500個以上)を設定し、(3)その商品区分ID以外の商品については、商品テーブルにある単価(売上数量に関係なくそれぞれ一定)を使用したい。
小生は、(2)についてユーザ定義関数を作成し、VBAの中で(1)の条件内で、このユーザ定義関数を適用し、(3)の条件の時は、商品テーブルを参照するよう考えましたが、具体的にどうすれば良いか、よくわかりませんので、ご教示くだされば幸いです。特にVBAの中で、テーブルのデータを参照する方法が、よくわかりませんのでよろしくご指導ください。
No.4ベストアンサー
- 回答日時:
追加です
たぶん売上入力フオームで「売上数」を入力すると
思います。そのときに売上の新規レコードが作成される
という仮定で説明します
***********************************************
それともイベントプロパティでイベントプロシージャを
作成するのでしょうか?
***********************************************
イベントプロパティでイベントプロシージャを作成します
売上数を入力したときに動くプログラムですから
売上数のイベントで「更新前処理」のところでイベントプロシージャをつくります
SUBのなかで
If Me!数量>=1 and Me!数量<100 then
me!単価=Dlookup("単価A","T商品","me!商品ID=商品ID")
Endif
If Me!数量>=100 and Me!数量<500 then
me!単価=Dlookup("単価B","T商品","me!商品ID=商品ID")
Endif
If Me!数量>=500 then
me!単価=Dlookup("単価C","T商品","me!商品ID=商品ID")
Endif
金額の計算が必要なら
me!金額=me!数量 * me!単価
とします
途中での計算、記憶が必要ならそのための一時的な
項目として
DIM WK11 AS SINGLE
DIM WK21 AS STRING
DIM WK31 AS VARIANT
などとSUBの中で定義します
***********************************************
"me!商品ID=商品ID" は同一キーでT商品を読むための
命令ですが、書き方についてはペルプを見てください
項目の性格がテキストか数値かで " の必要度が異なり
ますから注意が必要です
"me!商品ID=" & "商品ID" などとしなければならないこともあり、小生もやや自信がありません。。。
No.3
- 回答日時:
数量別単価テーブルで運用されれば良いと思います。
商品ごとの開始個数は 0個から必ず始める。
商品ごとの終了個数は 9999999個まで必ず設定する。
--数量別単価テーブル--
商品名 開始個数 終了個数 単価
商品A 0 100 1,000
商品A 101 500 500
商品A 501 9999999 100
商品B 0 9999999 100
商品C 0 500 200
商品C 501 9999999 100
上記テーブル から 単価を拾い出す方法。
但し、 売上数量 の部分は、環境により違います。
ご自分の環境に合わせて変更してください。
SQL文の場合 (SQL文の方が一括で処理するため一般的だと思います。)
select A.[単価] from xxテーブル As A where (A.[開始個数] >= 売上数量) AND (A.[開始個数] < 売上数量)
Dlookupの場合(dlookupは1レコードづつの処理なので速度に問題あるかも?)
Dlookup("[単価]","[xxテーブル]","([開始個数] >= 売上数量) AND ([開始個数] < 売上数量)"
ryuu001様
早速ご教示いただきまして大変ありがとうございました。
ryuu001様のご教示につきましても、やってみたいと思います。
これからもよろしくお願い申し上げます。
No.2
- 回答日時:
DLookup関数でテーブル内のデータを参照出来ます。
抽出条件も付けられます。しかし関数を定義しなくてもフォーム上でもできます。
商品テーブルを例えば下記のように作成し
商品区分ID 商品名 単価 単価A 単価B 単価C 特定(Yes/No型)
0001 商品A 100 90 80 70 True
0002 商品B 90 80 70 60 False
0003 商品C 80 70 60 50 True
(1)にあたる賞品は[特定]にTrueのフラグを立てる。
(2)の場合は[特定]がTrueのものだけフォーム上の[数量]が100以下なら単価A、100
から500の間であれば単価B、500以上なら単価Cをフォーム上の[単価]に取得する。
(3)の商品は[特定]がFalseのものは[単価]に単価を取得する。
こんな感じでしょうか。
フォーム上でIIf関数をネストして使ってその商品の単価を取得するか、関数を定義
して使うかは作る人によるのでご自分の好きなやり方で良いと思います。
この回答への補足
O_cyan様
早速ご教示いただきまして大変ありがとうございました。
実は、O_cyan様のご回答につきまして、補足を投稿したつもりだったのですが、小生の勘違いで、ttk11様あてに補足をだしてしまいました。ttk11様からは、すぐにご回答をいただきまして、大変勉強になりましたが、遅ればせながら、同一の補足質問をさせていただきたいと思いますので、よろしくご教示のほどお願い申し上げます。
小生、Access初心者で恐縮ですが、ご教示の趣旨は、理解できたつもりですが、具体的にどうすればよいのかよくわかりませんので、お願いします。
フォーム上で設定可能、とのことですが、
フォーム:F受注
テーブル:T商品
として、「数量」がF受注にあるとした場合、Dlookup関数をF受注フォームの「単価」に設定することになると思いますが、「単価」のどのプロパティに設定するのでしょうか?コントロールソースプロパティでしょうか?
それともイベントプロパティでイベントプロシージャを作成するのでしょうか?
また、Dlookup関数の書き方ですが、
Dlookup("単価A","T商品",""&Me!数量&"<100")
これは、数量が100個より少ない場合は、単価Aを取得する、という
意味ですが、この書き方でよろしいのでしょうか?
以上、初歩的質問で恐縮ですが、ご教示方よろしくお願い申し上げます。
No.1
- 回答日時:
>特にVBAの中で、テーブルのデータを参照する
>方法が、よくわかりませんのでよろしくご指導
>ください。
dlookupを使用すればいと思います
各条件の設定は
if でします
if xxxx="zz" then
if xxx<100 then
zzz=dlookup(---,---,---,----)
if xxx>=100 and xxx<500 then
この回答への補足
ttkk11様
早速ご教示ありがとうございました。
小生、Access初心者で恐縮ですが、ご教示の趣旨は、理解できたつもりですが、具体的にどうすればよいのかよくわかりませんので、お願いします。
フォーム上で設定可能、とのことですが、
フォーム:F受注
テーブル:T商品
として、「数量」がF受注にあるとした場合、Dlookup関数をF受注フォームの「単価」に設定することになると思いますが、「単価」のどのプロパティに設定するのでしょうか?コントロールソースプロパティでしょうか?
それともイベントプロパティでイベントプロシージャを作成するのでしょうか?
また、Dlookup関数の書き方ですが、
Dlookup("単価A","T商品",""&Me!数量&"<100")
これは、数量が100個より少ない場合は、単価Aを取得する、という
意味ですが、この書き方でよろしいのでしょうか?
以上、初歩的質問で恐縮ですが、ご教示方よろしくお願い申し上げます。
ttk11様
早速ていねいなご回答ありがとうございました。
ご教示内容を参考にして、これからやってみたいと思いますので
これからもよろしくお願い申し上げます。
また、小生の不手際から、実は、小生の補足内容の前提は、O_cyan様の
ご回答を前提に書いたのですが、あて先を勘違いしてttk11様に出してしまいました。このため、ttk11様も少し、内容的に?の部分があったのではないかと思いまして、大変ご迷惑をおかけしてしまったことお詫び申し上げます。
いずれにいたしましても、今回のご教示内容は、大変勉強になりましたので、心から御礼申し上げます。このような事情から、同一内容の補足をO_cyan様にもお伺いしたいと思いますので、あしからずご了解お願い申し上げます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
一式という言葉の使い方
-
仕入単価
-
製造業に勤めています。 外注さ...
-
積算 高所作業車 建築
-
外構見積もりましたが、どうで...
-
Access columnプロパティについて
-
公共建築工事(設備)の積算に...
-
天井開口費の見積について
-
砕石の価格を教えてください。
-
内装屋やクロス職人の会社は儲...
-
VBAを使用した、複数条件での集計
-
事務所ビルの電気料金について...
-
使い捨ての歯ブラシについて
-
食材の単価と価格の違いを教え...
-
工事現場の騒音は泣き寝入りす...
-
土日も近所の新築工事の騒音で...
-
工事前の挨拶がない業者さんへ
-
不審者?
-
材質 ST
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
製造業に勤めています。 外注さ...
-
初級SE、中級SE、上級SEはどの...
-
天井開口費の見積について
-
一式という言葉の使い方
-
事務所ビルの電気料金について...
-
公共建築工事(設備)の積算に...
-
仕入単価
-
1工数1人工
-
積算 高所作業車 建築
-
卸単価の95掛けってどうゆう意...
-
外構見積もりましたが、どうで...
-
CIF単価→FOB単価の算出の仕方を...
-
リストボックスの項目に、他の...
-
食材の単価と価格の違いを教え...
-
ACCESSのレコード順番の入れ替え
-
出精値引の意味は?
-
売上、客数、単価から買い上げ...
-
独占禁止法、下請法、優越的地...
-
2024年 職人不足で単価が上がる...
おすすめ情報