掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ADOのバッチアップデートでのキャッシュアップデートもどきについて (ID:28231)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
・環境 Delphi2007 for win32 pro サーバーはSQL server 2005 express sp2 ADOによる接続での話なのですが、現在上記の環境でサーバーにADOで接続しています。 自分の手元にあるデータベースの参考書によるとQueryで更新したい場合はキャッシュアップデートを使うが、ADOはキャッシュアップデートをサポートしないとありました。 ちなみにこの参考書はdelphi5の時代のものなので今は違うかもしれませんが・・・。 (delphi自体は昔からやっていたので古い参考書は結構もっているのですがデータベースは最近始めたので・・・) しかしADOでもキャッシュアップデートもどきは出来るとありました。 それを要約すると下記のような感じになります。 ・TAdoQueryをバッチアップデートモードに設定する ・実際の更新時にUpdateBatchは使わずに下記のコードを使う //↓実際の更新をするタイミングで下記を実行 procedure TForm1.Update; begin AdoQuery.First; while not(AdoQuery.Eof) do begin case AdoQuery.UpdateStatus of usInserted : //実際の挿入処理 usModified : //実際の更新処理 usDeleted : //実際の削除処理 end; AdoQuery.Next; end; AdoQuery.Close; AdoQuery.Open; end; 要するにバッチアップデートのキャッシュだけを利用して実際の更新処理をし、それが終わったらAdoQueryを開き直してキャッシュをリセットするという事みたいです。 これで挿入と更新はうまくいくのですが削除が出来なくて困っています。 原因を調べてみるとどうも削除されたレコードのUpdateStatusにusDeletedがセットされないために実際の削除処理が呼び出されないようなのです。 しかし削除をするとDBGrid上ではその行は消えるので削除自体はキャッシュに記録されているはずです。 と、いうことはUpdateStatusにusDeletedがセットされると思うのですが・・・ どなたか原因が分かる方いらっしゃいませんか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.