最新トピック
8
25 日前
Hatena様にご質問 25 日前
1
2 ヶ月前
排他制御 2 ヶ月前
6
5 ヶ月前
モジュールでカレントフォームのコントロールを使うには 5 ヶ月前
7
6 ヶ月前
日付のテキストボックスからフォームが開けません 6 ヶ月前
9
6 ヶ月前
レポートにおける数値の間隔を広げる方法 6 ヶ月前
12
6 ヶ月前
リストボックスから複数選択しそれをテーブルに格納したい 6 ヶ月前
タグリスト
Markdown テーブル生成
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
関数は「機能をひとまとめにしたもの」なので、そこだけ抜き出せば何らかの値に置き換わります。複雑な計算式はメモ帳などで整形してみると理解しやすくなります
これをプログラミング的な思考に置き換えていきます
本手法は入力規則を使うことにしたので、「入力可能な
商品IDかどうかを判定し、入力可能であればその商品IDを入力規則の値にする」様な計算式を作成しますまず、「サブフォームに一番最初に区分けAの商品を選んだ」の時点で「最初の入力」の場合と「2回目以降の入力」で別な処理を行う必要が出ます。つまり、「何の制限もない初回入力」と「制限のかかる2回目以降」を作る必要があります
「(最初の入力)」はどんな
商品IDでも入力できる必要があるので、入力規則としては「どんな商品IDが指定されても同じ商品IDになるような式」とします。つまり自分自身を設定すれば解決です「(2回目以降の入力)」は、「自身の区分け」と「入力済みデータの区分け」が同じかどうかを判定し、処理を分岐(そのまま入力、または、入力規則のエラーとしてメッセージ表示)させます
ただ、入力規則を使う関係上、「同じかどうか」だけでなく、「同じ場合は自身の
商品ID」という結果が必要になります。そこで、DLookup関数を使って商品テーブルから「(入力済みデータの区分け)+自身の商品ID」のレコードの商品IDを求めていますこれで、自身が同じ区分内の商品かチェックされるという仕組みです
「(入力済みデータの区分け)」の取得方法はそのまま関数が何をやっているのか考えてみてください。
取引明細テーブルに区分けデータも記録しているのであれば、区分け判定部分の計算式はもう少し単純にできそうですね
実装方法はいくつか考えられますが、「入力規則に計算式を一つ入れればいい」が謳い文句として簡単そうに見えたのでそれで実現しています。(VBA使ったほうがすっきりする回答になるんですけどね)