F_在庫品作成依頼というフォームを作りました。
レコードソースは00品番と00作成というテーブルを品番で繋げたものです。
txb_品名コードの更新後処理で、品名コードでフィルターし、その製品の詳細と作成依頼の履歴(サブフォームで、レコードソースはF_在庫品作成依頼と同一)を表示する
txb_現在庫数に、現在の在庫数を入力する
ここで問題となるのは、[txb_品名コード]と[txb_現在庫数]が
連結テキストボックスであるか、それとも非連結テキストボックスであるか、
ということです。
[txb_品名コード]のコントロールソースがテーブル[00作成]のフィールド[品番]、
[txb_現在庫数]のコントロールソースがテーブル[00作成]のフィールド[現在庫数]
であるならば、それらのテキストボックスに対して値を入力する操作は
そのままコントロールソースであるフィールドに対しての入力となります。
その際のフォームのカレントレコードが新規レコードなのであれば、
カレントレコードが保存された段階でそのレコードはテーブル[00作成]に
追加されます。
カレントレコードが既存のレコードなのであれば、参照中のレコードが
更新(上書き)されます。
btn_作成手配ボタンを押して、F_在庫品作成依頼のテキストボックスに
表示されている値・今日の日付を00作成という作成履歴を保存するレコードに追加する
「連結フォームのカレントレコードに対する入力操作」によって
テーブル[00作成]のレコードの追加/更新が成されているのであれば、
それとは別に(独自に)「追加クエリを用いたレコードの追加」という操作を
実行する必要はありません。
後者の操作を行う必要があるとすれば、それは[F_在庫品作成依頼]が
非連結フォーム(どのテーブルとも連結していない)である場合か、
「連結フォームのカレントレコードに対する入力操作」とは別に
何か特殊なレコードの追加処理を実行しなければならないような場合
ぐらいでしょう。
ごくありふれた操作なのですね。初めてだったので安心しました。
txb_品名コード、txb_現在庫数ともに非連結のテキストボックスです。
ならば[F_在庫品作成依頼]が連結フォームである必要はないのではないでしょうか。
いわゆる CRUD 機能を Access の非連結フォームに実装する場合、
「新規レコードの追加」を行う手法については、大別して次の 3 種類の方法が挙げられます。
保存済みの追加クエリを実行するマクロまたはプロシージャを呼び出す。
任意の SQL 文(この場合は INSERT INTO ... ステートメント)を実行するマクロまたはプロシージャを呼び出す。
DAO または ADO の Recordset オブジェクトによって任意のテーブルを参照し、AddNew メソッドを呼び出して新規レコードを作成し、そのレコードの各フィールドの値を編集し、Update メソッドを呼び出してそのレコードをテーブルに保存する――という一連の操作を実行するプロシージャを呼び出す。
挙げられた方法は上記 1 に該当します。