首先 把数据库操作都封装在 dll里面。包含数据库链接 等等
问题是:
  如何在主程序中调用这个dll 返回一个数据集?? 比如返回 adoquery 等等补充说明: 不想在主程序中再去设置数据库链接及其数据库操作。调用方式如下: CallRecord 就可以返回一个数据集

解决方案 »

  1.   

    function GetDataSet: TADOQuery;
    begin
      Result := ADOQuery1;
    end;procedure GetData(var qtr: TADOQuery);
    begin
      with qtr do
      begin
        ... ...  do anythings
      end;
    end;
      

  2.   

    楼上的,有个问题:
    你传递到dll中的 qtr: TADOQuery 在主程序中还并没有链接 adoconn 
    我的adoconn还在 dll中。
    我是这样写的。
    function Test_GetAllRecord(ADOQueryF: TADOQuery): boolean;
    var
      FF            : TFF;
      s:string;
    begin
      Result := false;
      FF := TFF.Create;  //这里是ado的初始化,含链接数据库==
      try
         with ADOQueryF do
           begin
           Connection:= FF.Adoconnection;  //打算把传递进来的ado建立conn
           Close;
           SQL.Clear;
           SQL.Text:= 'Select * MyTable Forum where status=1';
           Open;
         end;
         Result := true;
      finally
        FF.Free;
      end;
    end;主程序中 
    FForum_GetAllRecord(ADOQuery3);  //ADOQuery3 是主程序中已经画好了的一个控件
     DataSource1.DataSet:=ADOQuery3;  //运行的时候 这里提示:对象关闭,不允许操作关闭程序的时候要出错
      

  3.   

    我在 dll中这样定义
    function Test_GetAllRecord(var ADOQueryF: TADOQuery): boolean;
    依然出现相同的问题 
      

  4.   

    ADOQuery 在哪里连接adoconnection都可以。adoquery1.connection := adoconnection1;这句代码写在哪儿都可以。看你程序怎么写了。你上面的代码肯定不行……