3

誰かがこれがaTbl.Editの後に1回だけ機能する理由を教えてもらえますか?テーブルを編集するために4行を削除すると、49個のレコードすべてが繰り返されます。編集と投稿では、ファイルの最後にファイルカーソルが配置されるようです。これは、レコードが1つしか変更されておらず、EOFで終了するためです。

私はD5、Zeos-6、SQLite3を使用しています。編集前にAuto-incを取得し、その後にLocateを取得しようとしましたが、編集後に終了します。

あなたが提案できることは何でもありがとう、しかしこれは午後中ずっと私を狂わせてきました。私はそれが私がしたことの愚かなことだと思い続けていますが、私はそれを見つけることができません。:)

aTbl.First;                            // Test DB has 49 records
while not aTbl.EOF do
begin
  for i := 0 to lbCt.Items.Count-1 do  // Currently only two items in the list
  begin                                // and only the second makes a match
    aMatch := False;                   // which then forces the edit
    CtStr := lbCt.Items[i]);
    case InOut.ItemIndex of
      0: aMatch := aTbl.FieldByName(fld_A).AsString = CtStr;
      1: aMatch := aTbl.FieldByName(fld_B).AsString = CtStr;
      2: aMatch := (aTbl.FieldByName(fld_A).AsString = CtStr) or
                   (aTbl.FieldByName(fld_B).AsString = CtStr);
      3: aMatch := (aTbl.FieldByName(fld_A).AsString = CtStr) and
                   (aTbl.FieldByName(fld_B).AsString = CtStr);
    end;
    if aMatch then
    begin
      aTbl.Edit; 
      aTbl.FieldByName('Account').AsString := lbCt.Items[i];
      aTbl.FieldByName('Folder').AsString := lbCt.Items[i];
      aTbl.Post;
    end;
  end;
  aTbl.Next;
end;
4

1 に答える 1

3

問題は、インデックスフィールドのいずれかAccountまたは1つとして使用するインデックスがアクティブになっている可能性があります。Folderこれらは値を変更するフィールドであり、いずれかが現在のインデックス式に含まれている場合は、レコードポインタが行の新しい場所(実際にはEOF)に移動します。

于 2013-03-25T01:55:58.103 に答える