本帖最后由 thumb0422 于 2013-01-12 23:29:55 编辑

解决方案 »

  1.   


    function GetDir(aSql:string;var cds:TClientDataSet):Boolean;
    var aTempSqlDataSet:TSQLDataSet;
        aTempProvider:TDataSetProvider;
        aTempCds:TClientDataSet;
    begin
      try
        aTempSqlDataSet:=TSQLDataSet.Create(nil);
        aTempProvider:=TProvider.Create(nil);
        aTempCds:=TClientDataSet.Create(nil);
        aTempSqlDataSet.SQLConnection:=DM.FBCON;
        aTempProvider.DataSet:=aTempSqlDataSet;
        aTempProvider.Name:='aTempProvider';
        aTempCds.SetProvider(aTempProvider);
        aTempSqlDataSet.Active:=False;
        aTempCds.Active:=False;
        aTempSqlDataSet.CommandText:=aSql;
        aTempSqlDataSet.Open;
        aTempCds.Open;
        cds.CloneCursor(aTempCds,True,False);
      finally
        FreeAndNil(aTempSqlDataSet);
        FreeAndNil(aTempProvider);
        FreeAndNil(aTempCds);
      end;