有人可以告诉我为什么这只在 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;