⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastore.pas

📁 内存数据库,用于与数据库操作上进行缓冲
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    FHashFieldClass:TStringHashTrie;
    FStringSrv:TTbcStringSrv;
  protected
     function ChkField(Field:TField):integer;
  public
    constructor Create;
    destructor Destroy; override;

    property FtSetUnSupported:TTbcSetOfFieldType read FFtUnSupported;
    property FtSetString:TTbcSetOfFieldType read FFtString;

    property FtSetInteger:TTbcSetOfFieldType read FFtInteger;
    property FtSetLargeInt:TTbcSetOfFieldType read FFtLargeInt;

    property FtSetBoolean:TTbcSetOfFieldType read FFtBoolean;
    property FtSetExtended:TTbcSetOfFieldType read FFtExtended;

    property FtSetDate:TTbcSetOfFieldType read FFtDate;
    property FtSetTime:TTbcSetOfFieldType read FFtTime;
    property FtSetDateTime:TTbcSetOfFieldType read FFtDateTime;

    property FtSetBinary:TTbcSetOfFieldType read FFtBinary;
    property FtSetBlob:TTbcSetOfFieldType read FFtBlob;

    property FtSetText:TTbcSetOfFieldType read FFtText;

    property FtSetVariant:TTbcSetOfFieldType read FFtVariant;

    property FtSetCanGetString:TTbcSetOfFieldType read FFtCanGetString;

    property FtSetCanGetInteger:TTbcSetOfFieldType read FFtCanGetInteger;
    property FtSetCanGetFloat:TTbcSetOfFieldType read FFtCanGetFloat;

    property FtSetCanGetBoolean:TTbcSetOfFieldType read FFtCanGetBoolean;

    property FtSetCanGetDate:TTbcSetOfFieldType read FFtCanGetDate;
    property FtSetCanGetTime:TTbcSetOfFieldType read FFtCanGetTime;
    property FtSetCanGetDateTime:TTbcSetOfFieldType read FFtCanGetDateTime;

    property FtSetCanGetLargeInt:TTbcSetOfFieldType read FFtCanGetLargeInt;

    property FtSetIsBlob:TTbcSetOfFieldType read FFtIsBlob;

    function GetFieldType(Field:TField):TFieldType;

    function  GetBoolean(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):boolean;

    function  GetDate(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):TDate;

    function  GetDateTime(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):TDateTime;

    function  GetTime(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):TTime;

    function  GetFloat(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):extended;

    function  GetInteger(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):integer;

    function  GetLargeInt(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):LargeInt;

    function  GetString(Field:TField;var IsNull:boolean;OriginalValue:boolean=false):string;

    function  GetData(var target:TTbcDwItemData;Field:TField;OriginalValue:boolean=false):integer;

    function  SaveBlobToFile(Field:TField;const FileName: string;var IsNull:boolean):integer;
    function  SaveBlobToStream(Field:TField;Stream: TStream;var IsNull:boolean):integer;

    function  IsNull(Field:TField;OriginalValue:boolean=false):boolean;

    function  SetBoolean(Field:TField;Value:boolean):integer;

    function  SetDate(Field:TField;Value:TDate):integer;

    function  SetDateTime(Field:TField;Value:TDateTime):integer;

    function  SetTime(Field:TField;Value:TTime):integer;

    function  SetFloat(Field:TField;Value:extended):integer;

    function  SetInteger(Field:TField;Value:integer):integer;

    function  SetLargeInt(Field:TField;Value:LargeInt):integer;

    function  SetString(Field:TField;Value:string):integer;

    function  SetVariant(Field:TField;const Value:Variant):integer;

    function  SetData(source:TTbcDwItemData;Field:TField):integer;

    function  LoadBlobFromFile(Field:TField;const FileName: string):integer;
    function  LoadBlobFromStream(Field:TField;Stream: TStream):integer;

    function  SetNull(Field:TField):integer;

    published

  end;

  TTbcExternalFieldSrv=class(TObject)
  private
    //TFieldType Set

    FFtUnSupported:TTbcSetOfFieldType;
    FFtString:TTbcSetOfFieldType;

    FFtInteger:TTbcSetOfFieldType;
    FFtLargeInt:TTbcSetOfFieldType;

    FFtBoolean:TTbcSetOfFieldType;
    FFtExtended:TTbcSetOfFieldType;

    FFtDate:TTbcSetOfFieldType;
    FFtTime:TTbcSetOfFieldType;
    FFtDateTime:TTbcSetOfFieldType;

    FFtBinary:TTbcSetOfFieldType;
    FFtBlob:TTbcSetOfFieldType;


    FFtText:TTbcSetOfFieldType;

    FFtVariant:TTbcSetOfFieldType;

    FFtCanGetString:TTbcSetOfFieldType;

    FFtCanGetInteger:TTbcSetOfFieldType;
    FFtCanGetFloat:TTbcSetOfFieldType;

    FFtCanGetBoolean:TTbcSetOfFieldType;

    FFtCanGetDate:TTbcSetOfFieldType;
    FFtCanGetTime:TTbcSetOfFieldType;
    FFtCanGetDateTime:TTbcSetOfFieldType;

    FFtCanGetLargeInt:TTbcSetOfFieldType;

    FFtIsBlob:TTbcSetOfFieldType;
    FStringSrv:TTbcStringSrv;

    FItemData:TTbcDwItemData;

  protected
     function ChkField(Field:TTbcExternalField):integer;
  public
    constructor Create;
    destructor Destroy; override;

    property FtSetUnSupported:TTbcSetOfFieldType read FFtUnSupported;
    property FtSetString:TTbcSetOfFieldType read FFtString;

    property FtSetInteger:TTbcSetOfFieldType read FFtInteger;
    property FtSetLargeInt:TTbcSetOfFieldType read FFtLargeInt;

    property FtSetBoolean:TTbcSetOfFieldType read FFtBoolean;
    property FtSetExtended:TTbcSetOfFieldType read FFtExtended;

    property FtSetDate:TTbcSetOfFieldType read FFtDate;
    property FtSetTime:TTbcSetOfFieldType read FFtTime;
    property FtSetDateTime:TTbcSetOfFieldType read FFtDateTime;

    property FtSetBinary:TTbcSetOfFieldType read FFtBinary;
    property FtSetBlob:TTbcSetOfFieldType read FFtBlob;

    property FtSetText:TTbcSetOfFieldType read FFtText;

    property FtSetVariant:TTbcSetOfFieldType read FFtVariant;

    property FtSetCanGetString:TTbcSetOfFieldType read FFtCanGetString;

    property FtSetCanGetInteger:TTbcSetOfFieldType read FFtCanGetInteger;
    property FtSetCanGetFloat:TTbcSetOfFieldType read FFtCanGetFloat;

    property FtSetCanGetBoolean:TTbcSetOfFieldType read FFtCanGetBoolean;

    property FtSetCanGetDate:TTbcSetOfFieldType read FFtCanGetDate;
    property FtSetCanGetTime:TTbcSetOfFieldType read FFtCanGetTime;
    property FtSetCanGetDateTime:TTbcSetOfFieldType read FFtCanGetDateTime;

    property FtSetCanGetLargeInt:TTbcSetOfFieldType read FFtCanGetLargeInt;

    property FtSetIsBlob:TTbcSetOfFieldType read FFtIsBlob;

    function GetFieldType(Field:TTbcExternalField):TFieldType;

    function  GetBoolean(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):boolean;

    function  GetDate(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):TDate;

    function  GetDateTime(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):TDateTime;

    function  GetTime(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):TTime;

    function  GetFloat(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):extended;

    function  GetInteger(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):integer;

    function  GetString(Field:TTbcExternalField;var IsNull:boolean;OriginalValue:boolean=false):string;

    function  GetData(var target:TTbcDwItemData;Field:TTbcExternalField;OriginalValue:boolean=false):integer;

    function  SaveBlobToFile(Field:TTbcExternalField;const FileName: string;var IsNull:boolean):integer;
    function  SaveBlobToStream(Field:TTbcExternalField;Stream: TStream;var IsNull:boolean):integer;

    function  IsNull(Field:TTbcExternalField;OriginalValue:boolean=false):boolean;

    function  SetBoolean(Field:TTbcExternalField;Value:boolean):integer;

    function  SetDate(Field:TTbcExternalField;Value:TDate):integer;

    function  SetDateTime(Field:TTbcExternalField;Value:TDateTime):integer;

    function  SetTime(Field:TTbcExternalField;Value:TTime):integer;

    function  SetFloat(Field:TTbcExternalField;Value:extended):integer;

    function  SetInteger(Field:TTbcExternalField;Value:integer):integer;

    function  SetString(Field:TTbcExternalField;Value:string):integer;

    function  SetVariant(Field:TTbcExternalField;const Value:Variant):integer;

    function  SetData(source:TTbcDwItemData;Field:TTbcExternalField):integer;

    function  LoadBlobFromFile(Field:TTbcExternalField;const FileName: string):integer;
    function  LoadBlobFromStream(Field:TTbcExternalField;Stream: TStream):integer;

    function  SetNull(Field:TTbcExternalField):integer;

    function  RestoreValue(Field:TTbcExternalField):integer;

    published

  end;

  TTbcDwExprElem=class(TObject)

  private

  protected

  public
    ElemType:TTbcDwExprElemType;
    Data:string;
    ColNum:integer;
    constructor Create(AElemType:TTbcDwExprElemType);
    destructor Destroy; override;
  published

  end;


  TTbcDwRow=class(TObject)
    private

    protected

    public
      RowID:integer;

      Query:TSDQuery;
      Bookmark:TBookmark;
      CommitUpdatesFlag:integer;

      Values:TObjectList;

      RowStatus:TTbcDwRowStatus;
      RowType:TTbcDwRowType;
      DSType:TTbcDataStoreType;
      SaveOriginValue:boolean;

      ItemStatus:TStringList;
      ItemCount:integer;
      Selected:boolean;

      constructor Create(ARowType:TTbcDwRowType);
      destructor Destroy; override;

    published

   end;

   TTbcDwDropDownType=(dwddDW,dwddCodeTable);

   TTbcDwDropDownObj=class(TObject)
   private

   protected

   public
     ddtype:TTbcDwDropDownType;

     dddw:TTbcDataStore;
     CdCol,ValCol:string;

     codetable:TTbcCodeTable;

     constructor Create;
     destructor Destroy; override;
   published

   end;


TTbcDataStore=class(TObject)
  private
    FDSType:TTbcDataStoreType;
    FUpdateMode:TTbcDwUpdateMode;

    FSaveOriginValue:boolean;

    FDatabase:TSDDatabase;  //数据库

    FSQL:string; //检索的SQL语句。
    FOldSQL:string; //段永生。

    FRetrieveArgs:TTbcRetrieveArgs;
    FQuery:TSDQuery;
    FUpdateSQL:TSDUpdateSQL;
    FRowsAffected:integer;

    FFieldDefs,FFieldDefsSave:TTbcDwFieldDefs;//各列描述
    FFieldNames:TStringList;//各列名称
    FFieldTypes:array[0..(MaxTbcDwColumn - 1)] of TFieldType;//各列数据类型
    FHashFieldNames:TStringHashTrie;
    //drop down datawindow or drop down codetable object
    FDropDownList:array[0..(MaxTbcDwColumn - 1)] of TTbcDwDropDownObj;



    FFieldSrv:TTbcTFieldSrv;
    FExternalFieldSrv:TTbcExternalFieldSrv;

    FNextRowID:integer;

    FPrimaryBuf:TObjectList; //primary buffer 数据
    FDeleteBuf:TObjectList; //delete buffer 数据
    FFilterBuf:TObjectList; //filter buffer 数据
    FDiscardBuf:TObjectList; //any row that not in primary,delete,filter buffer

    FCMPrimaryHash:TStringHashTrie;//primary buffer hashtrie for function CommitUpdates
    FCMFilterHash:TStringHashTrie;//filter buffer hashtrie for function CommitUpdates
    FCMFieldSeparator:string;

    FSPrimaryBuf:TObjectList; //ShareData 时 保存原 primary buffer 数据
    FSDeleteBuf:TObjectList; //ShareData 时 保存原 delete buffer 数据
    FSFilterBuf:TObjectList; //ShareData 时 保存原 filter buffer 数据

    FEdtText:string;

    FCurRow,FCurCol:integer;

    FRowCount,FColCount:integer;


    FFilterExpr:string; //Filter 表达式
    FFilterElemList:TObjectList;

    FFindExpr:string; //查找表达式

    FFindCurPos:integer; //存放下一个开始查找记录位置
    FFindElemList:TObjectList;//为FindFirst,FindLast,FindNext,FindPrior 函数服务

    FTmpFindElemList:TObjectList;//为Find 函数定义的变量

    FHashFindList:TObjectList;
    FHashFindName:TStringList;

    FSortExpr:string;//sort 表达式
    FSortColList:TStringList;
    FSortOrderList:TStringList;
    FSorter:TstSorter;

    FEnableTime:boolean;

    FItemData1,FItemData2:TTbcDwItemData;//存放单元数据

    DebugCount:integer;

    FStringSrv:TTbcStringSrv;

    FExprEval:TTbcExprEval;

    FSQLSrv:TTbcSQLSrv;
    FTmpSQLSrv:TTbcSQLSrv;

    FEnableUpdateKinds:TUpdateKinds;

    FTmpStrList:TStringList;
    FTmpStrList2:TStringList;

    //没有实现的函数列表开始
  function AcceptText:integer;

  function ClearValues(Column:string):integer;overload;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -