procedure TForm1.ComboBox2Change(Sender: TObject);
begin
combobox2.Items.Clear ;
adoquery1.First ;
with adoquery1 do
begin
 while not adoquery1.Eof do
 begin
 combobox2.Items.Add(adoquery1.fieldbyname('name').asstring);
 adoquery1.Next ;
 end;
 end; 
end;
   
这不行么?哪位大侠帮帮忙啊?

解决方案 »

  1.   

    with adoquery1 do
    begin
     close;
     sql.Clear ;
     sql.Add('select  name form area');
     open;
     if adoquery1.RecordCount =0 then exit;
     combobox2.Items.Clear ;
     adoquery1.First ;
     for i:=0 to adoquery1.recordcount-1 do
     begin
     combobox2.Items.Add(adoquery1.fieldbyname('name').AsString );
     adoquery1.Next ;
     end;
     end;
    end.
    也不行啊?为什么
      

  2.   

    你把这段代码放在FormOnShow事件里面试试。
      

  3.   

    你的语句是没有问题的
    你把
    'select  name form area'
    改为
    'select  * form area'
    试试
    然后在再
    with adoquery1 do 
    begin 
    close; 
    sql.Clear ; 
    sql.Add('select  name form area'); 
    open; 
    if adoquery1.RecordCount =0 then exit; 
    combobox2.Items.Clear ; 
    adoquery1.First ; 
    for i:=0 to adoquery1.recordcount-1 do 
    begin 
     Application.ProcessMessages; //加上这句话
    combobox2.Items.Add(adoquery1.fieldbyname('name').AsString ); 
    adoquery1.Next ; 
    end; 
    Refresh; //加上这句话
    end; 
      

  4.   

    procedure TForm1.ComboBox2Change(Sender: TObject);
    var i:integer;
    begin
    combobox2.Items.Clear ;
    adoquery1.Open  ;
    with adoquery1 do
    begin
     close;
     sql.Clear ;
     sql.Add('select  * form area');
     open;
     if adoquery1.RecordCount =0 then exit;
     combobox2.Items.Clear ;
     adoquery1.First ;
     for i:=0 to adoquery1.recordcount-1 do
     begin
     application.ProcessMessages ;
     combobox2.Items.Add(adoquery1.fieldbyname('name').AsString );
     adoquery1.Next ;
     end;
     refresh;
     end;
     end;
    这样还是没达到效果啊?
      

  5.   

       adoquery1.First;
       while not adoquery1.Eof do
          begin
             combobox2.Items.Add(adoquery1.fieldbyname('name').AsString ); 
             adoquery1.Next;
          end;
    你把你的For循环改成这样试一下
      

  6.   

    代码没问题,不是告诉你不要放在OnChange事件里面了嘛,
    放在Form的OnShow事件中试试看
      

  7.   

    procedure TForm1.FormShow(Sender: TObject);
    var i:integer;
    begin
    combobox2.Items.Clear ;
    adoquery1.Open  ;
    with adoquery1 do
    begin
     close;
     sql.Clear ;
     sql.Add('select  * form area');
     open;
     if adoquery1.RecordCount =0 then exit;
     combobox2.Items.Clear ;
     adoquery1.First ;
     for i:=0 to adoquery1.recordcount-1 do
     begin
     application.ProcessMessages ;
     combobox2.Items.Add(adoquery1.fieldbyname('name').AsString );
     adoquery1.Next ;
     end;
     refresh;
     end;
    end;
     还是不行,好出现问题
    大概是这样的ADOQUERY1:Missing SQL property
      

  8.   

    procedure TForm1.FormShow(Sender: TObject);
    var i:integer;
    begin
      combobox2.Items.Clear ;
      with adoquery1 do
      begin
        close;
        sql.text := 'select * from area';
        Open;
        while not eof do
        begin
          combobox2.Items.Add(fieldbyname('name').AsString );
          next;
        end;
    end;这样试试
      

  9.   

    跟踪看看啊,到底是ado没取到数据,还是combobox没赋上值,还是赋值后没更新到。
      

  10.   

    procedure TForm1.ComboBox1DropDown(Sender: TObject); 
    var i:integer; 
    begin 
      combobox2.Items.Clear ; 
      with adoquery1 do 
      begin 
        close; 
        sql.text := 'select * from area'; 
        Open; 
        while not eof do 
        begin 
          combobox2.Items.Add(fieldbyname('name').AsString ); 
          next; 
        end; 
    end; 
    这样也是可以的吧!