var ds: TDataSet; s:string; i:Integer; begin i:=0; ds:= self.DBGrid1.DataSource.DataSet; ds.First; while not ds.Eof do begin ds.Edit; ds.FieldByName('总分').AsString:=IntToStr(i); Inc(i); ds.next; Application.ProcessMessages; //ds.Post; //这个是提交数据库 end; ShowMessage(IntToStr(i)+'行记录设置好序号'); end;
就是我在ACCESS中创建了两张表,stu1和stu2,我利用ADOQUERY组件的ADOQUERY1.SQL.ADD('SELECT * From stu1 union select * from stu2 order by 总分 desc');把两张表合并显示在DBgrid中,两张表的所有字段都是一样的,都有排名字段,现在我想对合并的内容进行把1到50(两张表合并起来共50条记录)的数字显示在‘排名’字段中,用你给的代码会显示“缺少用于更新或刷新的基本表信息”,但是不合并就单纯对stu1表进行操作的话,用你给的代码是正确的,合并起来就不行了,你能帮帮我吗?
ds: TDataSet;
s:string;
i:Integer;
begin
i:=0;
ds:= self.DBGrid1.DataSource.DataSet;
ds.First;
while not ds.Eof do
begin
ds.Edit;
ds.FieldByName('总分').AsString:=IntToStr(i);
Inc(i);
ds.next;
Application.ProcessMessages;
//ds.Post; //这个是提交数据库
end;
ShowMessage(IntToStr(i)+'行记录设置好序号');
end;