• ベストアンサー

AccessからOracle DB(View)を参照する方法について

accessでOracleDBに接続し、アプリケーションを作ろうとしております。 OracleDBのViewを参照し、Accsess側で編集をしようとしております。 AccessからOracleのビューを参照できるようにしましたが、そのビューと accessのテーブルから作成されたクエリが新規レコードの作成ができません。(Accessの画面で「→*」のボタンがグレーアウトになっている) どうすれば新規レコードを追加できるようになりますでしょうか? また、できない場合、どのような代替案がありますでしょうか? すみませんがご回答、宜しくお願いします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

Viewの構造が、行を特定できないと更新できません。 元のテーブルの主キー・制約を満たすために必要な列が、Viewに含まれていないからだと思います。 「必要な列だけ見せるために定義する」という趣旨に反するようですが、更新を行いたいのであれば、必要な列を含むようにOracleのView定義を見直ししてください。 SQL*PLUSでの更新が可能になれば、ACCESSで更新できるでしょう。 ※リンクテーブルとしてテーブル定義する際に、「データを特定する列を指定してください」的なダイアログが出るはずです。

masaruf
質問者

お礼

御回答ありがとうございます。 返事が送れましたが、結局Viewの定義を見直すことで対応しました。 ありがとうございました。

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

Oracleの段階で既に更新できないViewでは? SQL*PLUSでInsertまたはUpdateできますか?

masaruf
質問者

補足

ご回答、ありがとうございます。 Oracleの段階で既に更新はできません。 Viewに対してSQL*PLUSでInsertまたはUpdateもできないです。 やはり無理でしょうか?

  • bbbug
  • ベストアンサー率45% (9/20)
回答No.1

ビューはあくまで「仮想表」ですから、インサートやアップデートは基本的にできません。そのため新規追加がグレーアウトになってできないようになっているわけです。 解決策としては、ビューではなく実際のテーブルに個々にインサートするような仕組みを考えるのが無難です。

masaruf
質問者

お礼

ご回答ありがとうございます。 やはりそうですよね。ただ、ViewではなくTableにすると大きくなってしまうので、少し難しいのです。 ありがとうございました。

関連するQ&A