这是我用ADOTable控件做一个排序循环,请大家改正一下。 ( 积分: 100 )

  • 主题发起人 主题发起人 我为编程狂
  • 开始时间 开始时间

我为编程狂

Unregistered / Unconfirmed
GUEST, unregistred user!
下面的循环是在Access数据库进行排序的,请各位老兄指点一下,如果在下面的循环中B不减1能不能对表格进行排序,我遇到的问题是如果不减1,系统报错,如果要是减1在数据中的最后一项没有序列号,请大家帮助指点一下这个小问题。
var
A:Integer;
B:integer;

B:=ADOTable.Recordset.RecordCount;
for A:=1 to B-1 do
begin
ADOTable.Edit;
ADOTable.ReadOnly:=False;
ADOTable.FieldByName('序号').Value:=A;
ADOTable.Post;
ADOTable.FindNext;
end;
 
ADOTable.First;
for A:=1 to ADOTable.RecordCount do
begin
ADOTable.FieldByName('序号').Value := A;
ADOTable.Next;
end;
 
var
A:Integer;
B:integer;

B:=ADOTable.Recordset.RecordCount;
[red]ADOTable.First;[/red]
for A:=1 to B do
begin
ADOTable.Edit;
ADOTable.ReadOnly:=False;
ADOTable.FieldByName('序号').Value:=A;
ADOTable.Post;
[red]if A=B then exit;[/red]
ADOTable.FindNext;
end;
正确的做法:
var
A:Integer;
...
A:=1;
with ADOTable do
begin
First;
while not eof do
begin
Edit;
FieldByName('序号').Value := A;
Post;
A:=A+1;
Next;
end;
end;
顺便说一下,你这不是排序,给每条记录加一个序号而已。
 
for A:=1 to ADOTable.RecordCount do
begin
ADOTable.RecNo:=A;
ADOTable.Edit;
ADOTable.ReadOnly:=False;
ADOTable.FieldByName('序号').Value:=A;
ADOTable.Post;
end;
 
var
A:Integer;
begin
A:=1;
with ADOTable do
begin
First;
while not eof do
begin
Edit;
FieldByName('序号').Value := A;
Post;
Inc(A);
Next;
end;
 
谢谢了各位。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部