如何使用combobox和sql数据库相关联,我编写的代码是
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
adoQuery1.open;
ComboBox2.Items.Clear;
while not adoQuery1.eof do
begin
ComboBox2.Items.Add(adoQuery1.fieldByname('txl_JiGuan').asstring);
adoQuery1.Next;
end;
end;
但最后运行的结果却是空白,要连接的数据表是JiGuan 列名为txl_JiGuan

解决方案 »

  1.   

    你在onchange中写,当然会一直触发这个事件了
      

  2.   

    在Form.Create里面写吧,一创建窗体就打开数据库填充,要不然你点一次,就刷新一次,多麻烦
      

  3.   

    你可以在onshow事件中写
    procedure TForm1.FormShow(Sender: TObject);
    begin
      adoQuery1.open;
      ComboBox2.Items.Clear;
        while not adoQuery1.eof do
        begin
          ComboBox2.Items.Add(adoQuery1.fieldByname('txl_JiGuan').asstring);
          adoQuery1.Next;
        end;
    end; 
      

  4.   

    procedure TForm1.ComboBox2Change(Sender: TObject);
    begin
    ADOQuery1.Close;
    ADOQuery1.Clear;
    ADOQuery1.SQL.Add('SELECT DISTINCT txl_JiGuan FROM JiGuan ORDER BY txl_JiGuan');
    adoQuery1.open;
    ComboBox2.Items.Clear;
    while not adoQuery1.eof do
    begin
    ComboBox2.Items.Add(adoQuery1.fieldByname('txl_JiGuan').asstring);
    adoQuery1.Next;
    end;
    end; 
    写在OnShow里或者是自己写一个构造函数比较好.
      

  5.   

    你的combobox里没有内容永远都不会触发onchange事件的
      

  6.   

    发表于:2008-05-28 15:11:06 3楼 得分:0 
    你可以在onshow事件中写 
    procedure TForm1.FormShow(Sender: TObject); 
    begin 
      adoQuery1.open; 
      ComboBox2.Items.Clear; 
        while not adoQuery1.eof do 
        begin 
          ComboBox2.Items.Add(adoQuery1.fieldByname('txl_JiGuan').asstring); 
          adoQuery1.Next; 
        end; 
    end;  
    同意