別のフォームで使用されるポインターとして設定したテーブルがあります。
このフォームには、GUID がまだ存在しない場合に For ループを使用してテーブルに新しいレコードを作成する手順があります。
With Table^ do
for I := 0 to Results.result.RowCount - 1 do
begin
IndexName := 'GUID';
SetKey;
FieldByName('GUID').AsString := Results.UserDetail[I].Guid;
if not Gotokey then
begin
Insert;
etc..
end;
ほとんどの場合、問題なく動作します。ただし、キーを設定しようとすると、テーブルの状態が dsBrowse から dsSetKey に移行するのではなく、dsBrowse のままになり、その結果、「table not in edit mode」が表示されるシナリオがいくつかあります。エラー"
これが発生する 1 つのケースでは、forloop を 10 回繰り返してスムーズに動作しますが、11 回目にはテーブルを setkey モードに変更できません。
テーブルで何が起こっているのか、または SetKey を呼び出した後にテーブルがブラウズ モードのままになる理由について何か考えはありますか?
ありがとう
アップデート-
SetRangeStart が状態を変更せずにブラウズ モードのままであるという同様の状況にも遭遇しました。テーブルのすべての変更イベントを取り除き、SetRangeStart をトレースして、他のコードが実行されていないこと、および状態が変更されていないことを確認しました。
この同じコードは、ほとんどのデータ セットを使用して正常に動作します。だから私はそれがデータに関連しているかもしれないと信じています..何かアイデアはありますか?