ADOquery查询结果赋给DBGrid显示,不使用datasource控件,请问如何做?

解决方案 »

  1.   

    这个不对吧,adoquery是TADOQuery类型,不是TDataSoutce类型,
    dbgrid.datasource.dataset:=adoquery.datasource.dataset;试过也不行。
      

  2.   

    还真不知道~ 为什么不用Datasoruce呢
      

  3.   

    我上次给你看的那个代码里面对数据库的查询操作我是封装在一个函数里的,返回的是ADOQuery类型集。而一个面页有很多地方要用到datasource的话感觉很麻烦,可不可以用ADOQuery类型集给dbgrid直接就赋值呢?
      

  4.   

    那可不可以把一个datasource对应一个函数返回的ADOQuery类型集呢?
      

  5.   

    可以啊。 自己重写一些DBgrid 比如:  TMyGrid = class(TDBGRID)
      private
        FDBSet: TDataset;
        procedure SetDBSet(const Value: TDataset);
      public
     property DBSet:TDataset read FDBSet write SetDBSet;//建立Dataset属性 可以直接赋  ADOQUERY
      end;procedure TMyGrid.SetDBSet(const Value: TDataset);
      begin
      FDBSet := Value;
      if Self.DataSource=nil then
        DataSource:=TDatasource.create(self);//如果没有相应的datasoruce自动创建self管理当实例   释放datasource为空
      DataSource.DataSet:=Fdbset;
    end;