home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Borland Delphi Visual Component Library }
- { Common BDE and DBClient Code }
- { }
- { Copyright (c) 1995,98 Inprise Corporation }
- { }
- {*******************************************************}
-
- unit DBCommon;
-
- interface
-
- uses Windows, Classes, DB, BDE;
-
- { FieldType Mappings }
-
- const
- FldTypeMap: array[TFieldType] of Byte = (
- fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
- fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
- fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
- fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
- fldArray, fldREF, fldTABLE);
-
- FldSubTypeMap: array[TFieldType] of Word = (
- 0, 0, 0, 0, 0, 0, 0, fldstMONEY, 0, 0, 0, 0, 0, 0, fldstAUTOINC,
- fldstBINARY, fldstMEMO, fldstGRAPHIC, fldstFMTMEMO, fldstOLEOBJ,
- fldstDBSOLEOBJ, fldstTYPEDBINARY, 0, fldstFIXED, fldstUNICODE,
- 0, 0, 0, 0, 0);
-
- DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
- ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
- ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
- ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
- ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet);
-
- BlobTypeMap: array[fldstMEMO..fldstBFILE] of TFieldType = (
- ftMemo, ftBlob, ftFmtMemo, ftParadoxOle, ftGraphic, ftDBaseOle,
- ftTypedBinary, ftBlob, ftBlob, ftBlob, ftBlob, ftMemo, ftBlob,
- ftBlob, ftBlob);
-
- { TFilterExpr }
-
- type
-
- TParserOption = (poExtSyntax, poAggregate, poDefaultExpr, poUseOrigNames,
- poFieldNameGiven, poFieldDepend);
- TParserOptions = set of TParserOption;
-
- TExprNodeKind = (enField, enConst, enOperator, enFunc);
- TExprScopeKind = (skField, skAgg, skConst);
-
- PExprNode = ^TExprNode;
- TExprNode = record
- FNext: PExprNode;
- FKind: TExprNodeKind;
- FPartial: Boolean;
- FOperator: CanOp;
- FData: Variant;
- FLeft: PExprNode;
- FRight: PExprNode;
- FDataType: Integer;
- FDataSize: Integer;
- FArgs: TList;
- FScopeKind: TExprScopeKind;
- end;
-
- TFilterExpr = class
- public
- constructor Create(DataSet: TDataSet; Options: TFilterOptions;
- ParseOptions: TParserOptions; const FieldName: string; DepFields: TBits);
- destructor Destroy; override;
- function NewCompareNode(Field: TField; Operator: CanOp;
- const Value: Variant): PExprNode;
- function NewNode(Kind: TExprNodeKind; Operator: CanOp;
- const Data: Variant; Left, Right: PExprNode): PExprNode;
- function GetFilterData(Root: PExprNode): PCANExpr;
- property DataSet: TDataSet;
- end;
-
- { TExprParser }
-
- TExprToken = (etEnd, etSymbol, etName, etLiteral, etLParen, etRParen,
- etEQ, etNE, etGE, etLE, etGT, etLT, etADD, etSUB, etMUL, etDIV,
- etComma, etLIKE, etISNULL, etISNOTNULL, etIN);
-
-
- TExprParser = class
- public
- constructor Create(DataSet: TDataSet; const Text: string;
- Options: TFilterOptions; ParserOptions: TParserOptions;
- const FieldName: string; DepFields: TBits);
- destructor Destroy; override;
- procedure SetExprParams(const Text: string; Options: TFilterOptions;
- ParserOptions: TParserOptions; const FieldName: string);
- property FilterData: PCANExpr;
- property DataSize: Integer;
- end;
-
- { TMasterDataLink }
-
- TMasterDataLink = class(TDetailDataLink)
- protected
- procedure ActiveChanged; override;
- procedure CheckBrowseMode; override;
- function GetDetailDataSet: TDataSet; override;
- procedure LayoutChanged; override;
- procedure RecordChanged(Field: TField); override;
- public
- constructor Create(DataSet: TDataSet);
- destructor Destroy; override;
- property FieldNames: string;
- property Fields: TList;
- property OnMasterChange: TNotifyEvent;
- property OnMasterDisable: TNotifyEvent;
- end;
-
- function FMTBCDToCurr(const BCD: FMTBcd; var Curr: Currency): Boolean;
- function CurrToFMTBCD(Curr: Currency; var BCD: FMTBcd; Precision,
- Decimals: Integer): Boolean;
- function GetFieldSource(ADataSet: TDataSet; var ADataSources: DataSources): Boolean;
-
- implementation
-