比如这样的代码:
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的值会一直是第一个记录,而不是变化。为什么呢?

解决方案 »

  1.   

    也就是说在执行后,在COMBOBOXEX的ITEMS中会有COUNT条重复的记录。
      

  2.   

    ADOQuery1都没有next啊!
    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;
      

  3.   

    刚才没有看到 with ...,应该如下:
        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;
      

  4.   

    lincanwen(Too Two To)说,
     Next;   //增加这句话
     对。是这样的,要使得记录集的当前位置不停的向后面走才可以的
      

  5.   

    thanks,我真笨!问题解决,给您们分