home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 October / tst.iso / programs / borland / RUNIMAGE / DELPHI40 / DOC / DBCOMMON.INT < prev    next >
Encoding:
Text File  |  1998-06-17  |  4.4 KB  |  126 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {       Common BDE and DBClient Code                    }
  6. {                                                       }
  7. {       Copyright (c) 1995,98 Inprise Corporation       }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit DBCommon;
  12.  
  13. interface
  14.  
  15. uses Windows, Classes, DB, BDE;
  16.  
  17. { FieldType Mappings }
  18.  
  19. const
  20.   FldTypeMap: array[TFieldType] of Byte = (
  21.     fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
  22.     fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
  23.     fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
  24.     fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
  25.     fldArray, fldREF, fldTABLE);
  26.  
  27.   FldSubTypeMap: array[TFieldType] of Word = (
  28.     0, 0, 0, 0, 0, 0, 0, fldstMONEY, 0, 0, 0, 0, 0, 0, fldstAUTOINC,
  29.     fldstBINARY, fldstMEMO, fldstGRAPHIC, fldstFMTMEMO, fldstOLEOBJ,
  30.     fldstDBSOLEOBJ, fldstTYPEDBINARY, 0, fldstFIXED, fldstUNICODE,
  31.     0, 0, 0, 0, 0);
  32.  
  33.   DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
  34.     ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
  35.     ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
  36.     ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
  37.     ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet);
  38.  
  39.   BlobTypeMap: array[fldstMEMO..fldstBFILE] of TFieldType = (
  40.     ftMemo, ftBlob, ftFmtMemo, ftParadoxOle, ftGraphic, ftDBaseOle,
  41.     ftTypedBinary, ftBlob, ftBlob, ftBlob, ftBlob, ftMemo, ftBlob,
  42.     ftBlob, ftBlob);
  43.  
  44. { TFilterExpr }
  45.  
  46. type
  47.  
  48.   TParserOption = (poExtSyntax, poAggregate, poDefaultExpr, poUseOrigNames,
  49.                    poFieldNameGiven, poFieldDepend);
  50.   TParserOptions = set of TParserOption;
  51.  
  52.   TExprNodeKind = (enField, enConst, enOperator, enFunc);
  53.   TExprScopeKind = (skField, skAgg, skConst);
  54.  
  55.   PExprNode = ^TExprNode;
  56.   TExprNode = record
  57.     FNext: PExprNode;
  58.     FKind: TExprNodeKind;
  59.     FPartial: Boolean;
  60.     FOperator: CanOp;
  61.     FData: Variant;
  62.     FLeft: PExprNode;
  63.     FRight: PExprNode;
  64.     FDataType: Integer;
  65.     FDataSize: Integer;
  66.     FArgs: TList;
  67.     FScopeKind: TExprScopeKind;
  68.   end;
  69.  
  70.   TFilterExpr = class
  71.   public
  72.     constructor Create(DataSet: TDataSet; Options: TFilterOptions;
  73.       ParseOptions: TParserOptions; const FieldName: string; DepFields: TBits);
  74.     destructor Destroy; override;
  75.     function NewCompareNode(Field: TField; Operator: CanOp;
  76.       const Value: Variant): PExprNode;
  77.     function NewNode(Kind: TExprNodeKind; Operator: CanOp;
  78.       const Data: Variant; Left, Right: PExprNode): PExprNode;
  79.     function GetFilterData(Root: PExprNode): PCANExpr;
  80.     property DataSet: TDataSet;
  81.   end;
  82.  
  83. { TExprParser }
  84.  
  85.   TExprToken = (etEnd, etSymbol, etName, etLiteral,  etLParen, etRParen,
  86.     etEQ, etNE, etGE, etLE, etGT, etLT, etADD, etSUB, etMUL, etDIV,
  87.     etComma, etLIKE, etISNULL, etISNOTNULL, etIN);
  88.  
  89.  
  90.   TExprParser = class
  91.   public
  92.     constructor Create(DataSet: TDataSet; const Text: string;
  93.       Options: TFilterOptions; ParserOptions: TParserOptions;
  94.       const FieldName: string; DepFields: TBits);
  95.     destructor Destroy; override;
  96.     procedure SetExprParams(const Text: string; Options: TFilterOptions;
  97.       ParserOptions: TParserOptions; const FieldName: string);
  98.     property FilterData: PCANExpr;
  99.     property DataSize: Integer;
  100.   end;
  101.  
  102. { TMasterDataLink }
  103.  
  104.   TMasterDataLink = class(TDetailDataLink)
  105.   protected
  106.     procedure ActiveChanged; override;
  107.     procedure CheckBrowseMode; override;
  108.     function GetDetailDataSet: TDataSet; override;
  109.     procedure LayoutChanged; override;
  110.     procedure RecordChanged(Field: TField); override;
  111.   public
  112.     constructor Create(DataSet: TDataSet);
  113.     destructor Destroy; override;
  114.     property FieldNames: string;
  115.     property Fields: TList;
  116.     property OnMasterChange: TNotifyEvent;
  117.     property OnMasterDisable: TNotifyEvent;
  118.   end;
  119.  
  120. function FMTBCDToCurr(const BCD: FMTBcd; var Curr: Currency): Boolean;
  121. function CurrToFMTBCD(Curr: Currency; var BCD: FMTBcd; Precision,
  122.   Decimals: Integer): Boolean;
  123. function GetFieldSource(ADataSet: TDataSet; var ADataSources:  DataSources): Boolean;
  124.  
  125. implementation
  126.