• ベストアンサー
  • すぐに回答を!

ACCESS:参照整合性がとれない

  • 質問No.942183
  • 閲覧数689
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 45% (11/24)

私は、『提案フォーム』と『管理フォーム』(同様に、提案/管理テーブルも作成)を作り、『提案フォーム』に記入した内容を『管理フォーム』の同じコードのレコードに自動で書き込みたい(反映したい)と思いましたが、未入力のままで、自動書き込みはできませんでした。

『提案テーブル/フォーム』(関連テーブル)
 *コード(オートナンバー型) 
 *提案年月日
 *カテゴリ 
 *提案内容

『管理テーブル/フォーム』(主テーブル)
 *コード(オートナンバー型)
 *提案年月日
  更新年月日 
 *カテゴリ
 *提案内容
  改善内容
  改善過程
   ・
   ・
   ・

試みた方法1)自動結合:クエリの作成
『管理テーブル』から『提案テーブル』と同じ項目を削除し、『管理テーブル』と『提案テーブル』の全項目を
選択したクエリを作った。

試みた方法2)手動結合:リレーションシップを設定する
『管理テーブル』の「コード」と『提案テーブル』の「コード」を結合線で結び、参照整合性の欄にチェックをした。ちなみに、「フィールドの連鎖更新」や「レコードの連鎖削除」にチェックを入れると”「Invalid field definition "コード" in definition of index or relatiionship.」(なぜに英語?!)というエラーメッセージが出てきたので、チェックマークをつけられなかった。


上記の2方法とも『提案フォーム』から入力した内容が『管理フォーム』に自動書き込み(反映)されませんでした。恐らく、『管理テーブル』がオートナンバー型であり、『提案フォーム』で自動入力したコードが『管理テーブル』のレコードの新規作成にあたるために、その段階ではまだ、コードが存在していないことが、原因かと思われるのですが、ハッキリとした原因や解決法は分かりません。

解決法の分かる方がいらっしゃいましたら、宜しくお願いします。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 48% (174/362)

提案テーブルの内容を全自動で管理テーブルに書き込むのは、Accessにトリガ機能が無いため、不可能です。

したがって、フォームの中で機能を作りこむ必要があります。
先にデータが追加されるのが提案テーブルなのであれば、管理テーブルの「コード」はオートナンバでなく、長整数型などにしておく方が良いでしょう。

提案テーブルに追加する処理の中で、追加クエリを実行するか、VBAでInsert文を実行することで実現するしかありません。

ただ、なぜ提案テーブルと管理テーブルが必要なのかがよくわからないのですが。
管理テーブルに提案テーブルの内容は全て書かれているようですので、管理テーブルだけにして、提案テーブルは選択クエリの形で持っておけば、データは完全に一致しますし、フォームでもテーブルをベースにするのではなく、選択クエリをベースにすればすむので、もし理由が無いのであれば、これをお勧めします。
補足コメント
_shino_

お礼率 45% (11/24)

回答ありがとうございます。
補足すると、私は自分の職場の業務改善を担当していまして、職場の方からの改善要求を出して頂いて、要求に対する改善の進行状況を把握・提示するためのツール作りをしています。改善要求は、提案テーブルに提案内容を記入するだけにし、できるだけ提案しやすい形にしたいと思い、管理テーブルと別にしました。
回答くださった方法でやってみたいと思います。
投稿日時:2004/07/29 01:17
お礼コメント
_shino_

お礼率 45% (11/24)

ありがとうございます。
教えてくださった通りにやったら、できました。
本当にありがとうございました。
投稿日時:2004/07/29 23:46
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

ピックアップ

ページ先頭へ