📄 datastore.pas
字号:
function ClearValues(Column:integer):integer;overload;
function FindGroupChange(row,level:integer):integer;
function FindRequired(dwbuffer:TTbcDwBuffer;row,colnbr:integer;colname:string;updateonly:boolean):integer;
function GetFormat(Column:integer):string;overload;
function GetFormat(Column:string):string;overload;
function GetValidate(Column:string):string;overload;
function GetValidate(Column:integer):string;overload;
function GetValue(Column:string;index:integer):string;overload;
function GetValue(Column:integer;index:integer):string;overload;
function GroupCalc:integer;
function ImportClipboard(StartRow:integer=1;EndRow:integer=2147483646;StartColumn:integer=1;EndColumn:integer=200000;DwStartColumn:integer=1):integer;
function ImportFile(FileName:string;StartRow:integer=1;EndRow:integer=2147483646;StartColumn:integer=1;EndColumn:integer=200000;DwStartColumn:integer=1):integer;
function Importstring(str:string;StartRow:integer=1;EndRow:integer=2147483646;StartColumn:integer=1;EndColumn:integer=200000;DwStartColumn:integer=1):integer;
function Print:integer;
function ReselectRow(row:integer):integer;
function SaveAs(FileName:string;SaveAsType:TTbcDwSaveAsType;ColHeading:boolean):integer;
function SaveAsAscii(FileName:string;Separator:string=#9;Quote:string='"';LineEnding:string=#13#10):integer;
function SetFormat(Column:integer;AFormat:string):integer;overload;
function SetFormat(Column:string;AFormat:string):integer;overload;
function SetItemStatus(row:integer;Column:string;dwBuffer:TTbcDwBuffer=dwPrimary;ItemStatus:TTbcDwItemStatus=isNotModified):integer;overload;
function SetItemStatus(row:integer;Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary;ItemStatus:TTbcDwItemStatus=isNotModified):integer;overload;
function SetSQLPreview(SqlSyntax:string):integer;
function SetText(Value:string):integer;
function SetValidate(Column:integer;ARule:string):integer;overload;
function SetValidate(Column:string;ARule:string):integer;overload;
function SetValue(Column:integer;Index:integer;Value:string):integer;overload;
function SetValue(Column:string;Index:integer;Value:string):integer;overload;
function ShareData(dsSecond:TTbcDataStore):integer;
function ShareDataOff:integer;
//2007_11_2 每次对FQuery进行操作前检查FQuery的连接状态,如果为False则设为True
procedure CheckQueryActive; //2007_11_2 武磊 EndStart 添加原因 在MDI的形式下,释放一个窗口中的DataStore,会影响其他窗口的DataStore.FQuery.Activate 的状态(被自动修改为False).添加此方法用来检查每次对Query进行操作时的状态是否为True
//没有实现的函数列表结束
protected
function RowBufFree(Buf:TObjectList):integer;
function ExprElemListFree(ExprElemList:TObjectList):integer;
function ResetFieldHashTrie:integer;
function RetrieveReset:integer;
function InternalDataStructureReset:integer;
function internalGetColNumFromColName(const ColName:string):integer;
function GetColNameFromColNum(const colNum:integer):string;
function BuildNewExternalRow:TTbcDwRow;
function BuildNewDbRow:TTbcDwRow;
function TbcFieldDefCopy(target:TTbcDwFieldDef;source:TFieldDef):integer;
function ChkGetParamsAndGetBuf(row:integer;Column:string;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TObjectList;overload;
function ChkGetParamsAndGetBuf(row:integer;Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TObjectList;overload;
procedure ChkRowParams(buf:TObjectList;row:integer);
function ChkRowParamsAndGetBuf(row:integer;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TObjectList;
function ChkColParamAndGetColNum(const ColNum:integer):integer;overload;
function ChkColParamAndGetColNum(const ColName:string):integer;overload;
function ChkColParamsAndGetBuf(Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TObjectList;
function InternalRetrieve(SQL:string):integer;
procedure InternalSetSQL(SQL:string);
function InternalChkSQL(SQL:string):integer;
procedure InternalSetDatabase(db:TSDDatabase);
function ChkAndGetFieldNum(const FieldExpr:string):integer;
function SortCompare(row1:TTbcDwRow;row2:TTbcDwRow):integer;
function EvalRow(RowObj:TTbcDwRow;ExprElemList:TObjectList):boolean;
function GetRowHashKey(RowObj:TTbcDwRow;ExprElemList:TObjectList):string;
function GetRowCMHashKey(RowObj:TTbcDwRow;ColList:TStringList):string;
function InternalValidateExpr(const ExprElemList:TObjectList):integer;
function InternalSort(dwBuffer:TTbcDwBuffer):integer;
function InternalFind(const Buf:TObjectList;const ExprElemList:TObjectList;const StartRow,EndRow:integer;const OriginalExpr:string):integer;
procedure DecomposeSortExpr;
procedure DecomposeDwExpr(const Expr:string;ExprElemList:TObjectList);
procedure SetSaveOriginValue(const ASaveOriginValue:boolean);
function DbDs:boolean;
function ExternalDs:boolean;
procedure ChkDbDs(const ErrMsg:string);
procedure ChkExternalDs(const ErrMsg:string);
procedure ChkQueryOpen(const ErrMsg:string);
procedure ChkQueryClose(const ErrMsg:string);
procedure ChkNoData(const ErrMsg:string);
procedure ChkNullStr(const s:string;const ErrMsg:string);
procedure ChkNullStrList(List:TStrings;const ErrMsg:string);
procedure ChkColOverflow(const ColCount:integer;const ErrMsg:string);
procedure ChkNewField(const Name: string; DataType: TFieldType;
Size: Integer; Required: Boolean);
procedure InternalSetItemChanged(RowObj:TTbcDwRow;const ColNum:integer);
function InternalRemoveRow(dwBuffer:TTbcDwBuffer;row:integer):integer;
function InternalRebuildDataRow:integer;
function InternalRebuildDataBuffer(Buf:TObjectList):integer;
function InternalResetHashFind:integer;
function InternalResetDropDownList:integer;
function PrepareCommitUpdates:integer;
function RebuildBufferAfterCommitUpdates:integer;
function InternalSplitFieldNames(const FieldNames:string;TargetList:TStringList):integer;
function InternalSplitFieldNums(const FieldNums:string;TargetList:TStringList):integer;
function InternalSplitFields(const Fields:string;TargetList:TStringList):integer;
function InternalTrimSplitFields(const Fields:string;TargetList:TStringList):integer;
procedure sdQryUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
public
property database:TSDDatabase read FDatabase write InternalSetDatabase;
property SQL:string read FSQL write InternalSetSQL;
property OLDSQL:string read FOLDSQL write FOLDSQL;////段永生
property RowsAffected: Integer read FRowsAffected;
property EnableTime:boolean read FEnableTime write FEnableTime ;
property RetrieveArgs:TTbcRetrieveArgs read FRetrieveArgs;
property SaveOriginValue:boolean read FSaveOriginValue write SetSaveOriginValue;
property DSType:TTbcDataStoreType read FDSType;
property UpdateMode:TTbcDwUpdateMode read FUpdateMode write FUpdateMode;
property EnableUpdateKinds:TUpdateKinds read FEnableUpdateKinds write FEnableUpdateKinds;
property UpdateSQL:TSDUpdateSQL read FUpdateSQL;
constructor Create(ADSType:TTbcDataStoreType=dstDB);
destructor Destroy;override;
//field properties series
function AddField(const Name: string; DataType: TFieldType; Size: Integer = 0;
Required: Boolean = False):integer;
function ClearFields:integer;
function FieldInfoByName(const Name:string;var AColNum:integer;var ADataType: TFieldType):integer;
function FieldInfoByCol(const AColNum:integer;var AColName:string;var ADataType: TFieldType):integer;
//filter series
function Filter:integer;
function FilteredCount:integer;
function SetFilter(Expr:string):integer;
//find series
function Find(FindExpr:string;StartRow,EndRow:integer):integer;
function FindBack(FindExpr:string;StartRow,EndRow:integer):integer;
function SetFind(Expr:string):integer;
function FindFirst:integer;
function FindNext:integer;
function FindPrior:integer;
function FindLast:integer;
//hash find series
function PrepareHashFind(const HashName:string;const HashExpr:string;const CaseSensitive:boolean=true):integer;
function UnPrepareHashFind(const HashName:string):integer;
function UnPrepareAllHashFind:integer;
function HashFind(const HashName:string;const Key:string):integer;
//current column series
function GetColumn:integer;
function GetColumnName:string;overload;
function SetColumn(Column:integer):integer;overload;
function SetColumn(Column:string):integer;overload;
//current row series
function SetRow(row:integer):integer;
function GetRow:integer;
//Column properties series
function GetColumnName(Column:integer):string;overload;
function GetColumnNumber(const ColName:string):integer;
function IsBlobColumn(const Column:integer):boolean;overload;
function IsBlobColumn(const Column:string):boolean;overload;
//GetItem series
function GetItemBoolean(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):boolean;overload;
function GetItemBoolean(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):boolean;overload;
function GetItemDate(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TDate;overload;
function GetItemDate(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TDate;overload;
function GetItemDateTime(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TDateTime;overload;
function GetItemDateTime(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TDateTime;overload;
function GetItemTime(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TTime;overload;
function GetItemTime(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):TTime;overload;
function GetItemFloat(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):extended;overload;
function GetItemFloat(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):extended;overload;
function GetItemInteger(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):integer;overload;
function GetItemInteger(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):integer;overload;
function GetItemLargeInt(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):LargeInt;overload;
function GetItemLargeInt(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):LargeInt;overload;
function GetItemString(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):string;overload;
function GetItemString(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):string;overload;
function IsItemNull(row:integer;Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false): boolean;overload;
function IsItemNull(row:integer;Column:string;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false): boolean;overload;
function SaveBlobItemToFile(row:integer;Column:string;const FileName:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SaveBlobItemToFile(row:integer;Column:integer;const FileName:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SaveBlobItemToStream(row:integer;Column:string;Stream:TStream;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SaveBlobItemToStream(row:integer;Column:integer;Stream:TStream;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
//get one row/column all data list
function GetColStringList(TargetList:TStrings;Column:string;IsNullList:TStrings;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):integer;overload;
function GetColStringList(TargetList:TStrings;Column:integer;IsNullList:TStrings;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):integer;overload;
function GetRowStringList(TargetList:TStrings;Row:integer;IsNullList:TStrings;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):integer;
//get drop down series
function NewDDCodeTable(const Column:integer):TTbcCodeTable;overload;
function NewDDCodeTable(const Column:string):TTbcCodeTable;overload;
function NewDDCodeTable(const Column:integer;const codes,values:string):TTbcCodeTable;overload;
function NewDDCodeTable(const Column:string;const codes,values:string):TTbcCodeTable;overload;
function NewDDDW(const Column:integer;const SQL,CdCol,ValCol:string;const bRetrieve:boolean=true):TTbcDataStore;overload;
function NewDDDW(const Column:string;const SQL,CdCol,ValCol:string;const bRetrieve:boolean=true):TTbcDataStore;overload;
function RefreshDDDWs:integer;
function GetItemDisplayString(row:integer;Column:string;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):string;overload;
function GetItemDisplayString(row:integer;Column:integer;var IsNull:boolean;dwBuffer:TTbcDwBuffer=dwPrimary;OriginalValue:boolean=false):string;overload;
function GetDDDW(const Column:integer):TTbcDataStore;overload;
function GetDDDW(const Column:string):TTbcDataStore;overload;
function GetDDCodeTable(const Column:integer):TTbcCodeTable;overload;
function GetDDCodeTable(const Column:string):TTbcCodeTable;overload;
function FreeDropDownObj(const Column:integer):integer;overload;
function FreeDropDownObj(const Column:string):integer;overload;
//SetItem series
function SetItemBoolean(row:integer;Column:string;value:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemBoolean(row:integer;Column:integer;value:boolean;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemDate(row:integer;Column:string;value:TDate;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemDate(row:integer;Column:integer;value:TDate;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemDateTime(row:integer;Column:string;value:TDateTime;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemDateTime(row:integer;Column:integer;value:TDateTime;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemTime(row:integer;Column:string;value:TTime;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemTime(row:integer;Column:integer;value:TTime;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemFloat(row:integer;Column:string;value:extended;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemFloat(row:integer;Column:integer;value:extended;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemInteger(row:integer;Column:string;value:integer;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemInteger(row:integer;Column:integer;value:integer;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemLargeInt(row:integer;Column:string;value:LargeInt;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemLargeInt(row:integer;Column:integer;value:LargeInt;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemString(row:integer;Column:string;value:string;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemString(row:integer;Column:integer;value:string;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function LoadBlobItemFromFile(row:integer;Column:string;const FileName:string;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function LoadBlobItemFromFile(row:integer;Column:integer;const FileName:string;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function LoadBlobItemFromStream(row:integer;Column:string;Stream:TStream;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function LoadBlobItemFromStream(row:integer;Column:integer;Stream:TStream;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemNull(row:integer;Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItemNull(row:integer;Column:string;dwBuffer:TTbcDwBuffer=dwPrimary): integer;overload;
function SetItem(row:integer;column:integer;const value:Variant;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
function SetItem(row:integer;column:string;const value:Variant;dwBuffer:TTbcDwBuffer=dwPrimary):integer;overload;
//Get status series
function GetItemStatus(row:integer;Column:string;dwBuffer:TTbcDwBuffer=dwPrimary):TTbcDwItemStatus;overload;
function GetItemStatus(row:integer;Column:integer;dwBuffer:TTbcDwBuffer=dwPrimary):TTbcDwItemStatus;overload;
function GetRowStatus(row:integer;dwBuffer:TTbcDwBuffer=dwPrimary):TTbcDwRowStatus;
function GetRowBookmark(row:integer;dwBuffer:TTbcDwBuffer=dwPrimary):Tbookmark;
function GetNextModified(row:integer;dwbuffer:TTbcDwBuffer=dwPrimary):integer;
//row id series
function GetRowFromRowId(rowid:integer;dwbuffer:TTbcDwBuffer=dwPrimary):integer;
function GetRowIdFromRow(row:integer;dwbuffer:TTbcDwBuffer=dwPrimary):integer;
//SQL series
function GetSQLSelect:string;
function SetSQLSelect(Sql:string):integer;
//Database Series
function GetDatabase:TSDDatabase;
procedure SetDatabase(db:TSDDatabase);
//insert series
function InsertFirst:integer;
function InsertBefore(row:integer):integer;
function InsertAfter(row:integer):integer;
function InsertLast:integer;
//delete series
function DeleteRow(row:integer):integer;
//restore series
function RestoreRow(const row:integer;const dwBuffer:TTbcDwBuffer=dwPrimary):integer;
//rows series
function RowsCopy(CopyBuffer:TTbcDwBuffer;StartRow,EndRow:integer;TargetBuffer:TTbcDwBuffer;BeforeRow:integer):integer;overload;
function RowsCopy(CopyBuffer: TTbcDwBuffer; StartRow, EndRow: integer;Target: TTbcDataStore; BeforeRow: integer): integer;overload;
function RowsMove(MoveBuffer:TTbcDwBuffer;StartRow,EndRow:integer;TargetBuffer:TTbcDwBuffer;BeforeRow:integer):integer;overload;
function RowsMove(MoveBuffer:TTbcDwBuffer;StartRow,EndRow:integer;Target:TTbcDataStore;BeforeRow:integer):integer;overload;
function RowsDiscard(Buffer:TTbcDwBuffer;StartRow,EndRow:integer):integer;
//selected series
function IsSelected(row:integer):boolean;
function SelectRow(row:integer;select:boolean):integer;
function GetSelectedRow(row:integer):integer;
//count Series
function ModifiedCount:integer;
function DeletedCount:integer;
function RowCount:integer;//得到检索数据个数
function ColCount:integer;//得到检索列个数
//retrieve series
function Reset:integer;
function Retrieve:integer;
function RetrieveWithArgs:integer;
function Close:integer;
function CloseAndClearFieldDefs:integer;
//move row Series
function MoveRowFirst(const row:integer):integer;
function MoveRowUp(const row:integer):integer;
function MoveRowDown(const row:integer):integer;
function MoveRowLast(const row:integer):integer;
function MoveRowTo(const SourceRow,TargetRow:integer):integer;
function ExchangeRow(const Row1,Row2:integer):integer;
//sort series
function SetSort(Expr:string):integer;
function Sort:integer;
function IsValidSortExpr(Expr:string):boolean;
//field update properties series
function GetFieldUpdateProp(const ColNum:integer;var FieldProp:TTbcFieldUpdateProp):integer;overload;
function GetFieldUpdateProp(const ColName:string;var FieldProp:TTbcFieldUpdateProp):integer;overload;
function SetFieldUpdateProp(const ColNum:integer;const FieldProp:TTbcFieldUpdateProp):integer;overload;
function SetFieldUpdateProp(const ColName:string;const FieldProp:TTbcFieldUpdateProp):integer;overload;
function SetKeyField(const ColNum:integer;const IsKeyField:boolean=true):integer;overload;
function SetKeyField(const ColName:string;const IsKeyField:boolean=true):integer;overload;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -