procedure TForm1.Button2Click(Sender: TObject); begin while not adotable1.eof do begin adotable1.Edit; adotable1['数量']:=adotable1['数量']+10; if messagedlg('确认改变数据?',mtconfirmation,[mbyes,mbno],0)=mryes then adotable1.Next else begin adotable1.Cancel; adotable1.next; end; end;
应该这样:procedure TForm1.Button2Click(Sender: TObject); begin adotable1.first; while not adotable1.Eof do begin adotable1.Edit; adotable1['数量']:=adotable1['数量']+10; if messageBox(handle,pchar('确认改变数据?'),pchar('确认'),MB_YESNO or MB_ICONINFORMATION)=idyes then adotable1.post else adotable1.Cancel; adotable1.next; end;end;
Eof才是返回是否到尾
用Next当然永远不会回到首
begin
while not adotable1.eof do
begin
adotable1.Edit;
adotable1['数量']:=adotable1['数量']+10;
if messagedlg('确认改变数据?',mtconfirmation,[mbyes,mbno],0)=mryes then
adotable1.Next
else
begin
adotable1.Cancel;
adotable1.next;
end;
end;
Eof = End of field/file
messagedlg('确认改变数据?',mtconfirmation,[mbyes,mbno],0)=mryes
括号里的定义是什么意思?
Eof 才是是否到达数据集的尾部你总是Next,它是永远也没有完的!!:)
要EOF才用NEXT
begin
adotable1.first;
while not adotable1.Eof do
begin
adotable1.Edit;
adotable1['数量']:=adotable1['数量']+10;
if messageBox(handle,pchar('确认改变数据?'),pchar('确认'),MB_YESNO or MB_ICONINFORMATION)=idyes then
adotable1.post
else
adotable1.Cancel; adotable1.next;
end;end;
0:帮助索引
mtconfirmation:确认图标 (mtWarning:警告图标;mtError:错误图标...)
mryes:模态返回值 (mrYes对应mbYes; mrNo对应mbNo; mrOK对应mbOK)
改为:while not AdoTable1.Eof do
谢谢你们的帮助,我会努力的啦!