比如这样的代码:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i ,j:Integer;
begin
ComboBoxEX1.Items.Clear;
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select DepID From Department');
prepared;
try
Open;
except
Close;
end;
for i :=0 to RecordCount -1 do
begin
for j :=0 to 9 do
ComboBoxEX1.Items.Add(Trim(FieldByName('DepID').AsString)+Format('%.4d',[j]));
end;
end;
end;问题出在这里,当i 从0循环到后面时,在FieldByName('DepID').AsString的值会一直是第一个记录,而不是变化。为什么呢?
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i ,j:Integer;
begin
ComboBoxEX1.Items.Clear;
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select DepID From Department');
prepared;
try
Open;
except
Close;
end;
for i :=0 to RecordCount -1 do
begin
for j :=0 to 9 do
ComboBoxEX1.Items.Add(Trim(FieldByName('DepID').AsString)+Format('%.4d',[j]));
end;
end;
end;问题出在这里,当i 从0循环到后面时,在FieldByName('DepID').AsString的值会一直是第一个记录,而不是变化。为什么呢?
for i :=0 to RecordCount -1 do
begin
for j :=0 to 9 do
ComboBoxEX1.Items.Add(Trim(FieldByName('DepID').AsString)+Format('%.4d',[j]));
Adoquery1.Next; //增加这句话!
end;
for i :=0 to RecordCount -1 do
begin
for j :=0 to 9 do
ComboBoxEX1.Items.Add(Trim(FieldByName('DepID').AsString)+Format('%.4d',[j]));
Next; //增加这句话!
end;
Next; //增加这句话
对。是这样的,要使得记录集的当前位置不停的向后面走才可以的