0

別のフォームで使用されるポインターとして設定したテーブルがあります。

このフォームには、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 をトレースして、他のコードが実行されていないこと、および状態が変更されていないことを確認しました。

この同じコードは、ほとんどのデータ セットを使用して正常に動作します。だから私はそれがデータに関連しているかもしれないと信じています..何かアイデアはありますか?

4

1 に答える 1