3

有人可以告诉我为什么这只在 aTbl.Edit 之后有效。如果我删除用于编辑表格的四行,它将遍历所有 49 条记录。似乎编辑和发布会将文件光标定位在文件的末尾,因为我只更改了一条记录并且它以 EOF 退出。

我正在使用 D5、Zeos-6 和 SQLite3。我什至尝试在编辑之前抓取 Auto-inc,然后在它之后进行定位,但它在编辑后仍然退出。

感谢您提出的任何建议,但这让我整个下午都发疯了。我一直认为这是我所做的愚蠢的事情,但我找不到它。:)

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

问题很可能是您的索引处于活动状态,该索引使用AccountFolder用作索引字段之一。这些是您要更改其值的字段,如果其中任何一个在当前索引表达式中,它会将记录指针移动到该行的新位置(实际上可能是EOF)。

于 2013-03-25T01:55:58.103 回答