- ベストアンサー
アクセス2000でクエリーで更新できない
アクセス2000で簡単なプログラムを作成中なのですが、2つのテーブルをリレーションで繋いでそれぞれ必要項目を抽出するクエリーを作成しました。 このクエリーをフォームに使って空欄のエリアにデータを 入力しようとしたら次のメッセージとなりました。 「このレコードセットは更新できません。」となってしまいます。根本的なミスのような気がしますが、気が焦っていて思いつきません。どこの設定を見れば良いか、どなたかご教示ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
リレーションには1対1とか1対多とかあって、各テーブルのレコードが完璧に1対1で対応していないと、クエリーのフィールドに保護がかかって追加や更新ができなくなります。フィールドの更新がクエリーの結果に反映されて不安定になる恐れがあるためです。 具体的な内容がわからないので、あまり詳しく書けませんが、どちらかのテーブルを基本にしたフォームを作成して、他のテーブルのデータをフォーム上に表示させるという手があります。テキストボックスに式(DLookupなど)を書き込む方法と、コンボボックスを使って表示させる方法があります。いずれも表示させるだけですので、基本テーブルのフィールド以外は更新しても実際のデータには反映されません。プログラムで処理すれば別ですが……。 基本テーブルのレコードに対応した別のテーブルのレコードを、サブフォームを使って表示させるという手もあります。これでしたら、フィールドデータの更新が実際のデータに反映されます。 具体的な方法は、ヘルプに聞いてください。
その他の回答 (1)
- gadd3
- ベストアンサー率46% (211/451)
クエリのデザインビューを開いて、テーブルの表示されている上半分の部分で、何も無いところで右クリックします。 で、プロパティの「レコードセット」で「ダイナセット」になってると思うんですが、これを「ダイナセット(矛盾を許す)」に変更してみます。 もしかしたらそうすると、入力できるようになるかもしれません。 ただ、この方法で、もしデータ入力が可能になったとしても、クエリが「矛盾した状態」なのに変わりはありませんし、何が矛盾しているのかわからない状態でこのまま進んでいくと非常に危険です。 今後、どこかで非常に困ることになると思いますので、テーブルのフィールド構成、定義、リレーション設定の内容、クエリのフィールド項目等々についてもう一度洗いなおしてみることをおすすめします。 テーブルの内容や、性格(顧客台帳とか、売上台帳とか)なども提示されて聞かれた方が良いように思います。
お礼
そんな制限があったのですか。 勉強になりました。 どうもありがとうございました。
お礼
回答ありがとうございました。 このリレーションの設定を良く理解していないのがいけませんね。 機会を見て、勉強していくとこにします。 どうもありがとうございました。