- 締切済み
アクセス 参照更新について
アクセスのデーターベースの参照更新で悩んでいます。 Aシートには番号(重複なし)、氏名、ふりがな、 Bシートには番号(重複あり)、仲良し番号(重複あり) 上記のAシートの番号、Bシートの番号同士をリレーションでAシートの番号を1、Bシートの番号を多で結び参照更新を設定しています。 新たに、Aシートの番号が変更されたときに、Bシートの仲良し番号が参照更新されるようにしたいのですが、うまくいきません。 どうすれば、うまくいくか教えていただければ有難いのですが・・・ 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- gadd3
- ベストアンサー率46% (211/451)
>Aシートの番号が変更されたときに、 >Bシートの仲良し番号が参照更新されるようにしたいのですが Accessに限らず、参照制約といいますか、リレーション設定の機能としては、 Aシートの番号とBシートの番号でリレーションさせている場合、 Aシートの「番号」の値を変更したら、それに連動して自動変更されるのは Bシートの「番号」、だと思うので、Bシートの「仲良し番号」が自動変更されないのは 正常な動作ではないでしょうか? また、Aシートの番号の値を変更して、Bシートの仲良し番号が 何らかの値に変化してしまったら、データベースの整合性が保てなくなって ぐちゃぐちゃになってしまうのではないでしょうか? なぜ、何の目的で、「仲良し番号」が自動変更されるようにしたいのかがわかりません。 また、「多」側のテーブルにも主キーを入れたほうがよいとは思います。 DB内のテーブルに主キーが無いテーブルがあると、ムダにエラー増えたり 削除が出来なかったり色々と面倒くさいです。 もし、 >Aシートの番号が変更されたときに、 >Bシートの仲良し番号が参照更新されるようにしたいのですが の「参照更新」というものの意味が、「フィールドの連鎖更新」のことを 意味するなら、それはできないので、 単純に 「Aシートの番号が変更されたときにBシートの仲良し番号がある基準をもとに書き換わればいい」 ということでしたら、 AとBをリレーションさせたクエリをソースにした帳票フォームなどを作って、VBAで書き換えるしかないと思います。
- mitarashi
- ベストアンサー率59% (574/965)
久しく触っていない機能なので、復習もかねてやってみました。 リレーションシップを表示させ、 テーブルAと、テーブルBのリレーションを設定し、 「参照整合性」と、「フィールドの連鎖更新」にチェックを入れると、 動作しました(テーブルAの番号を変更すると、テーブルBの方も変更される)。なおAの番号は主キーに設定、Bの番号はインデックスはい(重複あり)に設定しました。 上記設定をしても機能しないという事だと、バージョン、テーブルの構造、リレーションシップの設定、エラー有無等詳しい情報を開示していただけると、先達のアドバイスが得られるかもしれません。 (当方Access2000)
お礼
回答有難うございました。明日職場で早速試してみます。