質問: ### 前提・実現したいこと Access初心者です。 VBAコードを用いて、一度の登録ボタンで複数のレコードに分けて登録がしたいです。 フォームでの入力欄は、 日付 伝票番号 商品 関連商品1 関連商品2 関連商品3 のようになっています。 関連商品には、各々番号を振っているため、 登録するテーブルのフィールド名を分けたくない状態です。 登録する際も、商品によって 関連商品が1~3種類とばらつきがあるため、 入力がある場所のみの登録がしたいです。 情報が不足していたら申し訳ございません。 ### 試したこと .AddNewを使ってみましたが、1件のレコードしか登録できませんでした。 ### 補足情報(FW/ツールのバージョンなど) 環境 Windows10 Access2016 VBA
回答: 関連商品の個数分、forループなどで.AddNewすればいいのでは? もう少し丁寧に説明すると、 !例えばテーブル構造 のようなテーブル構造を例示する。 もしも、日付、伝票番号を主キーにしたり、あるいはインデックス:「はい(重複なし)」にしてしまうと、 複数レコードを登録することができなくなる。 レコードをユニークに識別するために、ユーザーに入力させない、 オートナンバー型の例えばIDなるフィールドを設けてやると扱いやすい。 そうしないと、関連商品3個から2個に減らしたい、なんていう操作が大変なことになるから。 オートナンバー型のフィールドは、 .AddNewするときに自動で値を作ってくれるから気にしなくてよい。 .AddNewして、.Fields("~") = Me.テキストボックス1.Valueとかやって、 最後.Updateとか書けばいい。 !フォームとテーブル 画像の中でテキスト7って書いてる隣のテキストボックスには、 ちゃんと名前:「関連商品1」「関連商品2」「関連商品3」ってなってる。 !サンプルコード