打印本文 打印本文 关闭窗口 关闭窗口
TManagedDataSet和DataSetPool的实现
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2703  更新时间:2009/4/23 18:37:43  文章录入:mintao  责任编辑:mintao
ce) then

    begin

             _source := TDataSource.Create(nil);

    _source.AutoEdit := False;

             _source.DataSet := Self;

    end;

    Result := _source;

end;

 

end.

 

 

 

 

 

unit DataSetPool; // 癘魁栋GlobalVarい承セ摸Ы龟ㄒ跑秖

 

interface

 

uses ManagedDataSet, Contnrs, SysUtils, AdoDb, Db, CommonDm;

 

type

         TDataSetPool = class

                   private

           _ads : TObjectList;

            function GetCount() : Integer;

        public

           constructor Create(const ini : Integer = 10);

            destructor Destroy(); override;

            property Count : Integer read GetCount;

            function GetDataSet(const intype : TManagedDataSetType = Editable) : TManagedDataSet;

            function GetAdoCommand() : TAdoCommand; // 度TAdoCommand睦パ秸ノ璽砫

    end;

 

implementation

 

constructor TDataSetPool.Create(const ini : Integer = 10);

begin

         _ads := TObjectList.Create;

end;

 

destructor TDataSetPool.Destroy();

begin

    FreeAndNil(_ads);

end;

 

function TDataSetPool.GetCount() : Integer;

begin

         Result := _ads.Count;

end;

 

function TDataSetPool.GetDataSet(const intype : TManagedDataSetType = Editable) : TManagedDataSet;

var

         i : Integer;

begin

         Result := nil;

 

         for i := 0  to _ads.Count-1 do

    begin

                   if (not TManagedDataSet(_ads[i]).IsUsed) and (TManagedDataSet(_ads[i]).DataSetType = intype) then

        begin

            Result := TManagedDataSet(_ads[i]);

            Result.Use;

            break;

        end;

    end;

 

    if Result = nil then

    begin

                   _ads.Add(TManagedDataSet.Create(intype));

        Result := TManagedDataSet(_ads[_ads.Count-1]);

        Result.Use;

    end;

end;

 

function TDataSetPool.GetAdoCommand() : TAdoCommand;

begin

         Result := TADOCommand.Create(nil);

    Result.Connection := DmCommon.Cnn;

end;

 

end.

上一页  [1] [2] [3] [4] 

打印本文 打印本文 关闭窗口 关闭窗口