在ADOCommond中已经写了SQL语句,可是得到数据集后如何在ComboBox中显示呢?

解决方案 »

  1.   

    begin
        datamodulefm.at_student_add.Filtered:=false;
        datamodulefm.at_student_add.Open;
        datamodulefm.at_student_add.First;
        combobox2.Items.Clear;
        while (not datamodulefm.at_student_add.Eof) do
          begin
           str:=datamodulefm.at_student_add.fieldbyname('stucode').Value;
           if VarIsNull(str) then
              datamodulefm.at_student_add.Next
           else
             begin
                combobox2.Items.Add(str);
                datamodulefm.at_student_add.Next;
              end;       end;
         datamodulefm.at_student_add.Close
     end;
      

  2.   

    谢谢楼上的!at_student_add是ADOTable还是ADOQuery呀?
      

  3.   

    Table 或 Query 操作都是一样的啊。大致步骤:
    Open  你的数据集,表或者查询
    First 数据集的记录指针,使指向第一个记录
    循环  直到数据集结束
      在循环体中使用CombBox.Items.Add方法把你的字段添加到CombBox
      Next 在循环体中移动记录指针
    Close 数据集
      

  4.   

    是adotable 楼下说的对,都一样用,adoquery这样
     combobox2.Items.Clear;
      with adoquery1 do
          begin
            close;
            sql.clear;
            sql.add('select * from student');
            open;
            while (not adoquery1.Eof) do
          begin
           str:=adoquery1['stucode'];
           if VarIsNull(str) then
              adoquery1.Next
           else
             begin
                combobox2.Items.Add(str);
                adoquery1.Next;
              end;
      end;  
    这是把student表中的stucode加到combobox2中
      

  5.   

    first
    while not eof
    begin
    combobox.add
    next
    end;
      

  6.   

    我这段代码那里有问题啊!怎么运行没反映哦!!
    那位高手帮忙看看哦!
    procedure TForm3.FormShow(Sender: TObject);
    begin
        dm1.ADOQuery1.Close;
        dm1.ADOQuery1.SQL.Clear;
        dm1.ADOQuery1.SQL.text :='select jfjs_bh from jqjs';
        dm1.ADOQuery1.Open;
        combobox1.items.clear;
        while dm1.ADOQuery1.Eof do
          begin
           combobox1.items.add(dm1.adoquery1.fieldbyname('jfjs_bh').asstring);
           dm1.ADOQuery1.Next;
          end;
    end;
      

  7.   

    是while  not dm1.adoquery1.eof do
    循环条件错了呵呵
      

  8.   

    谢谢楼上的大哥指点。
    我还想问一下。
    combobox显示数据库中一列数据,要是编号相同怎么让他不重复显示啊!!
    麻烦了!!
      

  9.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
    i:integer;
    begin
     for i:=0 to (query1.FieldCount-1) do
     begin
        combobox1.Items.Add(query1.Fields[i].FieldName);
     end;
    end;
      

  10.   

    combobox显示数据库中一列数据,要是编号相同怎么让他不重复显示啊!!
    麻烦了!!
    ----------------------------------------------------------------------
    select distinct 编号 from YourTableName
      

  11.   

    我用
    procedure TForm3.ComboBox1KeyPress(Sender: TObject; var Key: Char);
    begin
        dm1.ADOQuery1.SQL.Text:='select * from jqjs where jfjs_bh='''+combobox1.Text+'''';
        dm1.ADOQuery1.Open;
    end;
    显示combobox1选中的数据库中的数据。可是为什么没反映呢?
      

  12.   

    我也來一個
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      ADOQuery1.Close;
      AdoQuery1.SQL.Text := 'Select Distinct Field1 from tablename';
      try
        AdoQuery1.Open;
      except
        ShowMessage('查詢出錯');
      end;
      ComboBox1.Items.Clear;
      ComboBox1.Items.BeginUpdate;
      try
        while not AdoQuery1.Eof do
        begin
          ComboBox1.Items.Add(AdoQuery1.FieldByName('Field1').AsString);
          AdoQuery1.Next;
        end;
      finally
        ComboBox1.Items.EndUpdate;
      end;
    end;
      

  13.   

    关注一下
    ComboBox1.Items.Clear;
    with AdoQuery do
    Try
      Close;
      SQL.Text := 'Select Distinct Field1 from tablename';
      Open;
      if IsEmpty then Exit;
      while Not Eof do
      begin
         ComboBox1.Items.Add(AdoQuery1.FieldByName('Field1').AsString);
         Next;   
      end;
    except
        ShowMessage('出錯信息');
    end;
    ComboBox1.Items.Update;
      
      

  14.   

    ComboBox1.Items.Clear;
    with AdoQuery do
    Try
      Close;
      SQL.Text := 'Select Distinct Field1 from tablename';
      Open;
      if IsEmpty then Exit;
      while Not Eof do
      begin
         if adoquery1.fieldsbuname('fields1').asstring<>'' then //---去掉空值
           ComboBox1.Items.Add(AdoQuery1.FieldByName('Field1').AsString);
         Next;   
      end;
    except
        ShowMessage('出錯信息');
    end;
    ComboBox1.Items.Update;
      

  15.   

    當然有啦
    你用SQL語句查詢出一長串
    如:
    declare @value
    set @value=''
    select @value=@value+field1+',' from (select distinct field1 from tablename) A
    set @value=left(@value,len(@value)-1)
    select @value然後
      ComboBox1.Items.Delimiter := ',';
      ComboBox1.Items.DelimitedText := AdoQuery1.Fields[0].AsString;