• ベストアンサー

アクセス2000のフォームについて

アクセスでまたつまずいてしまいました。ちょっと教えてください。 複数のテーブルから選択クエリを作り、それを基にオートフォームでフォームを作ったのですが、フォームでデータの入力が出来ません。クエリでもデータの入力が出来ません。 「このレコードセットは更新できません」と下のほうに出ます。 フォームのプロパティのデータの更新の許可と、データ入力用のところは“はい”になっています。 私では原因がわかりません。わかりにくい質問でしょうが、どなたかご指導お願いします。

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

  • ベストアンサー
  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.3

No2さんと似たような回答になりますが SELECTしたデータが 主キーで結合でき 1:1、1:nやn:1の場合は、お互いの主キーをSELECTに加えてあれば 更新可能だと思います。 しかし n:nの場合は、更新できません。 具体的に表現すると 伝票テーブル  伝票NO      主キー  伝票日付        得意先ID 伝票明細Aテーブル  伝票NO      主キー  明細番号      主キー  伝票日付        商品ID  金額 は、 伝票テーブル.伝票NO → 伝票明細Aテーブル.伝票NOで結合すれば 更新OK    しかし 伝票明細Aテーブル  伝票NO      主キー  明細番号      主キー  伝票日付        商品ID  金額 伝票明細Bテーブル  伝票NO      主キー  伝票日付        科目ID      主キー  補助科目ID   は、 伝票明細Bテーブル.伝票NO → 伝票明細Aテーブル.伝票NOで結合しても n:nになるので更新不可 また 伝票明細Aテーブル  伝票NO      主キー  明細番号      主キー  伝票日付        商品ID  金額 商品マスタ  商品ID      主キー  商品名 を伝票明細Aテーブル.商品ID → 商品マスタ.商品IDと結合しても主キー同士で結合できないので更新不可です。 複数のテーブルを使うときは最後の形態がよく使われます。 伝票の中にマスタデータのキー情報を持ち名称をマスタから取得する場合など この条件に当てはまりませんか?

mk114
質問者

お礼

お世話になります。結局1つ別の選択クエリを作り、テーブルも違うのを新しく作り、この2つから選択クエリを作ったらなぜか出来ました。よく解らないままですが、アドバイスはよく解りました。今後の参考にします。 ありがとうございました。またお願いします。

その他の回答 (2)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

簡単に説明すると、参照される側のテーブルへのリレーションが、主キーである必要があります。 つまりこういうことです。 "売上テーブル"と"商品マスタ"があったとして、 "売上テーブル"の商品コードと"商品マスタ"の商品コードを結合したいとします。 その場合、参照される側の"商品マスタ"は、"商品コード"が主キーでないと更新できません。 主キーで結合できない場合は、フォーム上のイベントを使うなどして、値を取得する工夫が必要です。

mk114
質問者

お礼

たびたびお世話になります。よく解りませんが解決できました。 ありがとうございました。

  • maro200
  • ベストアンサー率45% (15/33)
回答No.1

クエリーの内容によって、更新出来る項目とできない項目があります。 Accessのヘルプの質問のことろに 「クエリのデータを更新できない」 を入れて調べてみると詳細が書いてあります。

mk114
質問者

お礼

たびたびお世話になり、ありがとうございます。参考になりました。

関連するQ&A