DBEでAccessのテーブルにアクセスするには?

解決


DB初心者  2005-11-18 01:06:37  No: 18789  IP: 192.*.*.*

はじめまして,私DB初心者と申します.
Delphi Ver7.0で、TQueryを用い、MSAccess2000のテーブルに
接続しようとしています。
SQLでPOSTし、テーブルに更新をかけるときに
「EDBEngineErrorクラスの例外'テーブルは書き込み禁止です'」となり、
レコードの追加や削除ができません。
 With Query1 do begin
     Close;
     SQL.Clear;
     SQL.ADD(SQLDelRec);
     Open;
     Edit;
     Post;
テーブルの参照はできるのですが、追加・変更・削除ができない状態です。
どのように記述すれば宜しいのでしょうか?よろしくご教授お願いします。

編集 削除
ADO  2005-11-18 01:13:30  No: 18790  IP: 192.*.*.*

TADOConnection
 +TADOQueryだと
ヘルプに使い方が載っています。

編集 削除
ヨーダ  2005-11-18 09:54:01  No: 18791  IP: 192.*.*.*

Query1.Edit;は使ったことないのですが、通常は更新、削除、追加などを実行す売る場合Query1.ExecSQLをしようするのがよいと思います。
先の例では、Open; Edit; Post;を、悪いことはいいませんQuery1.Prepare;  Query1.ExecSQL;に変更してください。

編集 削除
DB初心者  2005-11-22 14:05:31  No: 18792  IP: 192.*.*.*

ADO  さん、ヨーダ  さん、ありがとうございます。
     Query1.Open;
     Query1.Edit;
     Query1.Post;
は単一方向のSQL実行時のみ有効だったんですね。

登録時は  Query1.Append  →   Query1.Post
変更時は  Query1.Edit    →   Query1.Post
削除時は(Query1.Prepare)→  Query1.ExecSQL;

で実行できました!!ありがとうございました。

編集 削除
HOta  2005-11-22 14:10:33  No: 18793  IP: 192.*.*.*

QueryのRequestLiveはtrueになっていますか?
Select文が複テーブルの場合は、TUpdateSQLを使用します。

編集 削除