我有一个DBComboBox,他用来保存某一数据库内的所有的表的名称
还一个DBGrid,用于显示某表里的所有数据然后,我通过建立ADOConnection,DataSource,ADOQuery等将数据和控件关联起来(不是用代码是用控件的属性)程序运行后,DBComboBox正确的显示出了该数据库内的所有的表的名称
然后,DBGrid显示了当前这个表的所有数据但问题出来了,我想让DBComboBox改变选项后,DBGrid也根据DBComboBox的数据显示该表的所有数据
我是这么做的
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text := 'select * from ' + DBComboBox1.Text + ' ';
  ADOQuery1.Open();
  ADOQuery1.Active := true;  DBGrid1.Refresh;
end;可发现DBComboBox的数据不会更新,该怎么处理呢?

解决方案 »

  1.   

    ADOQuery1.close;
    ADOQuery1.SQL.Clear; //上面加一句
      

  2.   

    应该不会呀,showmessage(dbcombobox1.text)看看
      

  3.   

    加那句也没用
    现在我加了一条
    DataSource1.DataSet.Refresh;目前代码如下:
      ADOQuery1.Active := false;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Text := 'select * from ' + DBComboBox1.Text + ' ';
      ADOQuery1.Open();
      ADOQuery1.Active := true;
    DataSource1.DataSet.Refresh;结果DBComboBox选项一更新,程序就出错
    555555555555
      
      

  4.   

    showmessage(dbcombobox1.text)看看有没有选中表的意思,你的sql部分没错,只有可能表名没选上
      

  5.   

    好了,解决了
    原来问题出在DBComboBox1我给换成普通的ComboBox,一切问题都解决了
    也不用加什么DataSource1.DataSet.Refresh; 了感谢楼上提供的思路,给分