出现这个错误并不是adoquery控件出错,是你在删除TreeList的Item的时候出错,注意你要删除多各TreeList的Item的时候要从后面往前删,否则可能会出现你所说的问题,因为比如说有2条记录,如果是For i := 0 to 1,当i=1时,因为前面已经删除了一条纪录,这时候实际上已经没有Items[1]了,应该这样写: For i := (TreeList1.Count - 1) downto 0 do ...
出现这个错误并不是adoquery控件出错,是你在删除TreeList的Item的时候出错,注意你要删除多各TreeList的Item的时候要从后面往前删,否则可能会出现你所说的问题,因为比如说有2条记录,如果是For i := 0 to 1,当i=1时,因为前面已经删除了一条纪录,这时候实际上已经没有Items[1]了,应该这样写: For i := (TreeList1.Count - 1) downto 0 do ...
with AdoQuery do begin SQL.Clear; SQL.Add('UPDATE ...'); EXECSQL; if RowAffected=-1 then begin showmessage('异常'); Exit; end; if RowAffected=0 then begin SQL.Clear; SQL.ADD('Insert ...'); EXECSQL; end; end;
For i := (TreeList1.Count - 1) downto 0 do
...
For i := (TreeList1.Count - 1) downto 0 do
...
begin
SQL.Clear;
SQL.Add('UPDATE ...');
EXECSQL;
if RowAffected=-1 then
begin
showmessage('异常');
Exit;
end;
if RowAffected=0 then
begin
SQL.Clear;
SQL.ADD('Insert ...');
EXECSQL;
end;
end;
*******************************
对于全部删除,这是一样的效果。并且对于根据某些条件删除的情况,while...do更不好实现