Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
サブフォームの入力エラー 更新できない
投稿日時: 18/05/08 09:14:35
投稿者: nanodia

現在、見積書を作成しております。
メインフォーム(見積書クエリ)とサブフォーム(見積もり明細クエリ)があり、
サブフォームは見積もり明細クエリの一部だけを表示し、詳細ボタンを設置して
クリックすることで見積もり明細クエリの全体フォームが表示され入力されるようにしています。
 
しかし、サブフォームのレコードには入力されていましたが、
メインフォームとサブフォームが合わさったフォーマットでは入力されず下記の
エラーが表示されます。
 
実行時エラー'3101'
フィールド'製品ID'とキーが一致しているレコードをテーブル'製品'で探すことができません。

 
入力された一部をサブフォームへ反映させたいのですがどうすればよいでしょうか。
回答をお待ちしております。
 
 
フォーム(主)
 メイン
   -顧客 -受注日
 
 サブフォーム
   [詳細ボタン] -明細ID -製品名 -価格 -総計
 
フォーム(詳細)
   −明細ID −製品ID −製品名 −数量 −価格 −送料 −総計

回答
投稿日時: 18/05/08 09:35:52
投稿者: よろずや

フォーム(詳細)を閉じるときに、レコードの保存をすればよろしいかと。

投稿日時: 18/05/08 09:45:11
投稿者: nanodia

レコードの保存を入れてみましたが
フォーム(主)の状態は変わりませんでした。

回答
投稿日時: 18/05/08 10:39:39
投稿者: Suzu

引用:
サブフォームは見積もり明細クエリの一部だけを表示し、詳細ボタンを設置して
クリックすることで見積もり明細クエリの全体フォームが表示され入力されるようにしています。

 
この全体フォームは
引用:
メインフォーム(見積書クエリ)とサブフォーム(見積もり明細クエリ)

とは別のフォームですか?
 
であれば、当然の結果と思いますよ。
 
メイン - サブ の場合
メインの「リンク親フィールド」の値と「リンク子フィールド」の値が一致するレコードをサブに表示します。
逆に言うと、メインに値が無いレコードは サブには表示されません。
 
 
例えば、
「見積もり明細クエリ」(フォームではなくクエリです)を開き
入力しようとしているレコードを入力し閉じた後に、メインフォームを開いてみましょう。
入力した筈のレコードは表示されませんよね。
 
 
そういう事を防ぐのが、
リレーションシップ 参照整合性
https://support.office.com/ja-jp/article/%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B7%E3%83%83%E3%83%97%E3%81%AE%E6%A6%82%E8%A6%81-30446197-4fbe-457b-b992-2f6fb812b58f
 
設定されていませんよね?

投稿日時: 18/05/08 10:54:09
投稿者: nanodia

フォーム(主)のサブフォームのレコードに削除ボタンを設け、マクロでレコードの削除と再クエリを
入れることで、エラーのレコードがなくなりフォーム(主)のサブフォームが更新されました。
 
まだ、Access初心者なのでリレーションシップがおかしいのかもしれません