procedure TForm1.Button1Click(Sender: TObject);
var
  cn: TADOConnection;
  qu: TADOQuery;
  sr: TDataSource;
begin
  cn := TADOConnection.Create(self);
  qu := TADOQuery.Create(self);
  sr := TDataSource.Create(self);
  cn.ConnectionString :=
    'Provider=SQLOLEDB.1;User ID=SA;Initial Catalog=xondata;Data Source=MY\DATA2000;password=321321';
  cn.LoginPrompt := false;
  cn.Connected := true;
  qu.Connection := cn;
  sr.DataSet := qu;
  DBGrid1.DataSource := sr;  qu.SQL.Clear;
  qu.SQL.Add('select * from inventory' + ' where autoid=200'); // edit1.Text);
  qu.Active := true;
  qu.Open;
  qu.ExecSQL;
  //我想把cn断开,表格就没有数据了,如果断开连接,而表格同样有数据呢??end;

解决方案 »

  1.   

    关键是你的表格(数据集DataSet)的生命周期
      

  2.   

    先把TADOQuery保存成一个文件,adoquery.savetofile,然后关闭数据集后,再adoquery.loadfromfile出来要不就别用db组件
      

  3.   

    把数据写到stringgrid
    可以实现你的功能,
    就是需要自己写代码控制
      

  4.   

    用内存数据表啊,从数据库查出来后,添加到内存表中,这样断开数据还在。内存表 第三方组件 Rx 中有。
    不过建议使用 VirtualTable 组件。本人现在只用这个,超好用