📄 datastore.pas
字号:
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 + -