[delphi-users:4225] [FireDAC][Comp][DS]-200. Bookmark is not found for datasetエラーについて

266 views
Skip to first unread message

たに

unread,
Aug 3, 2015, 8:52:56 AM8/3/15
to delphi...@freeml.com
こんにちは。
FireDACを使用してシステムを改修している中で、
件名のエラーがどうしても対処できません。

エラーはTADQueryのDelete時に発生しております。
何方か対処方法をご存知でしょうか。
宜しくお願い致します。
谷口

・DBGrid1とDBGrid2があり
それぞれ、TADQueryからCloneをしたTADMemTableを使用して
2つのDBGridに表示しています。

procedure TForm1.Button1Click(Sender: TObject);
begin
ADQuery1.Open;
ADMemTable1.CloneCursor(ADQuery1);
ADMemTable2.CloneCursor(ADQuery1);
DataSource1.DataSet := ADMemTable1;
DataSource2.DataSet := ADMemTable2;
 ~Indexの設定~
ADMemTable1.IndexName := 'IDX1';
ADMemTable2.IndexName := 'IDX1';
end;

・データを削除した際、エラーが発生します。
procedure TForm1.Button14Click(Sender: TObject);
begin
ADMemTable1.IndexName := 'IDX1';
ADMemTable1.SetRange([0], [0]);

ADQuery1.CancelRange;
ADQuery1.IndexName := 'IDX3';
ADQuery1.SetRange([0], [0]);
ADQuery1.First;
while (not ADQuery1.Eof) do begin
ADQuery1.Delete; ※ここでエラー
end;
end;


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
【1日5分。副業をお考えのあなたに】
「今まで何をやっても稼げなかった…」
もしあなたがこんな悩みを抱えておられ
るなら、最新の稼ぎ方をご紹介します!
http://ad.freeml.com/cgi-bin/sa.cgi?id=nfLuR
------------------------------------------------------[freeml byGMO]--

赤推

unread,
Aug 3, 2015, 9:16:08 AM8/3/15
to delphi...@freeml.com
 赤推です。

> ADQuery1.First;
> while (not ADQuery1.Eof) do begin
> ADQuery1.Delete; ※ここでエラー
> end;

一度Deleteすることで、カーソルの位置が不定になっているのではないですか?
例えば
> while (not ADQuery1.Eof) do begin
> ADQuery1.Delete; ※ここでエラー
ADQuery1.First;
> end;
とすることで、とりあえずエラーはなくなりませんか?

Queryを使うのであれば、delete文(SQL)を発行するのが素直だと思います。

赤推


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
★★ いくら勉強しても英語が聞き取れない、話せない方へ ★★
これで最後のつもりで無料で10日間だけ聞き流しを試して下さい!
英語の後に日本語が流れるCDを、音楽を聞くように聞き流すことで
英語がどんどん聞き取れるようになり、話せるようになります!
※リスニング力アップを実感された方90.6%(インテグラス調べ)
http://ad.freeml.com/cgi-bin/sa.cgi?id=nfLFj
------------------------------------------------------[freeml byGMO]--

たに

unread,
Aug 3, 2015, 9:31:00 AM8/3/15
to delphi...@freeml.com
赤推さん、こんにちは。

> > while (not ADQuery1.Eof) do begin
> > ADQuery1.Delete; ※ここでエラー
> ADQuery1.First;
> > end;
> とすることで、とりあえずエラーはなくなりませんか?
さっそく試してみましたが、エラーは無くなりませんでした。

> Queryを使うのであれば、delete文(SQL)を発行するのが素直だと思います。
CachedUpdatesを使用していますので、Delete文ではなく
メソッドを呼び出しています。
CloneしたMemTableでもDeleteメソッドを呼び出したりしていますが、
問題ありますでしょうか?

谷口


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
【重要なお知らせ】今から、エーザイ「チョコラBBの日」制定記念豪華賞品が
当たるWEBキャンペーンを開始します!
キレイと元気を応援する「チョコラBB」から、抽選で豪華賞品が合計88名に
当たるチャンスです!参加方法は簡単、あなたの「朝ごはん」を投稿するだけ
http://ad.freeml.com/cgi-bin/sa.cgi?id=nfLT7
------------------------------------------------------[freeml byGMO]--

たに

unread,
Aug 7, 2015, 9:32:21 PM8/7/15
to delphi...@freeml.com
こんにちは。

> 一度Deleteすることで、カーソルの位置が不定になっているのではないですか?
赤推さんからのアドバイスを元に
いろいろと調査をしてわかりましたが、カーソル位置が不定になっていました。

CloneしたMemTebleにはAddやEmptyした事が通知されていないのか
カーソル位置が不定(Bookmark不定)になりました。
なぜ、Deleteでエラーになるのかはよくわかりませんでした。
今回はCloneしているMemTebleに変更通知するよう対応します。

ありがとうございました。
谷口


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
★★ いくら勉強しても英語が聞き取れない、話せない方へ ★★
これで最後のつもりで無料で10日間だけ聞き流しを試して下さい!
英語の後に日本語が流れるCDを、音楽を聞くように聞き流すことで
英語がどんどん聞き取れるようになり、話せるようになります!
※リスニング力アップを実感された方90.6%(インテグラス調べ)
http://ad.freeml.com/cgi-bin/sa.cgi?id=ngLuH
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages