更新数据(100分)

S

shodoy

Unregistered / Unconfirmed
GUEST, unregistred user!
我是用ADO连接到ACCESS数据库,
我用下列方法将数据进行批量更新,但实际上只在第一条记录上更新,为什么?
i:=0;
while i<=100 do
begin
adoset1.edit;
adoset1.fieldbyname('t_code').asinteger:=i;
adoset1.fieldbyname('t_name').asstring:="AA";
adoset1.updatebatch();
adoset1.recordset.movenext;
i:=i+1;
end;
 
1、你一定要更新100条记录?
  如果不是的话,建议用TadoCommand组件的
adocommand.commandText:='update table set field=value form table';
adocommand.exec;
这样最好!
2、如果一定要指定更改记录条数的话
i:=0;
while (i<=100) and (not(adoset1.eof)) do
begin
adoset1.edit;
adoset1.fieldbyname('t_code').asinteger:=i;
adoset1.fieldbyname('t_name').asstring:="AA";
adoset1.post;
adoset1.next;
i:=i+1;
end;
 
同意 luckywzy
 
LockType属性设为:ltBatchOptimistic
将代码改为如下:
i:=0;
while i<=100 do
begin
adoset.Edit;
adoset.fieldbyname('t_code').asinteger:=i;
adoset.fieldbyname('t_name').asstring:='AA';
adoset.Post;
adoset.Next;
i:=i+1;
end;
adoset.UpdateBatch();
 
最好用ADOQuery控件
 
多人接受答案了。
 
顶部