📄 dsintf.pas
字号:
const
{Do not localize }
szUNIQUE_KEY = 'UNIQUE_KEY'; { Series of unique keys to enforce on the client }
szPRIMARY_KEY = 'PRIMARY_KEY'; { Primary key used in RowRequest and for key information }
szDEFAULT_ORDER = 'DEFAULT_ORDER'; { Index used for the default ordering of the dataset }
szCHANGEINDEX = 'CHANGEINDEX';
szCHANGE_LOG = 'CHANGE_LOG';
szSERVER_COL = 'SERVER_COL';
szCONSTRAINTS = 'CONSTRAINTS';
szDATASET_CONTEXT = 'DATASET_CONTEXT';
szDATASET_DELTA = 'DATASET_DELTA';
szREADONLY = 'READONLY'; { Specifies the packet is read only }
szSUBTYPE = 'SUBTYPE'; { Field Subtype }
szDECIMALS = 'DECIMALS'; { Field decimal precision }
szWIDTH = 'WIDTH'; { Field width }
szLCID = 'LCID'; { Locale ID that the packet comes from }
szBDEDOMX = 'BDEDOMAIN_X'; { Server side field constraints }
szBDERECX = 'BDERECORD_X'; { Server side record constraints }
szBDEDEFX = 'BDEDEFAULT_X'; { Server side default values }
szAUTOINCVALUE = 'AUTOINCVALUE';
szELEMENTS = 'ELEMENTS';
szTABLE_NAME = 'TABLE_NAME'; { Table name used for resolving the packet - deprecated}
szMD_FIELDLINKS = 'MD_FIELDLINKS'; { Master detail field relationships }
szTYPENAME = 'TYPENAME'; { Field type name. Used for object fields }
szUPDATEMODE = 'UPDATEMODE'; { Update mode }
szFIELDPROPS = 'FIELDPROPS'; { Delphi transferable field properties }
szPROVFLAGS = 'PROVFLAGS'; { Provider flags }
szORIGIN = 'ORIGIN'; { Field origin }
szMD_SEMANTICS = 'MD_SEMANTICS'; { Master detail semantic properties }
szSERVERCALC = 'SERVER_CALC'; { A server side calculated field }
szBDEDOMCL = 'BDEDOMAIN_CL'; { Client side field constraints }
szBDERECCL = 'BDERECORD_CL'; { Client side record constraints }
szBDEDEFCL = 'BDEDEFAULT_CL'; { Client side default values }
szDISABLE_INSERTS = 'DISABLE_INSERTS'; { Disable inserting records }
szDISABLE_DELETES = 'DISABLE_DELETES'; { Disable deleting records }
szDISABLE_EDITS = 'DISABLE_EDITS'; { Disable editing records }
szNO_RESET_CALL = 'NO_RESET_CALL'; { Specifies not to call reset when the client closes the data }
szMINVALUE = 'MINVALUE'; { Minimum value for the field }
szMAXVALUE = 'MAXVALUE'; { Maximum value for the field }
szstMEMO = 'Text';
szstBINARY = 'Binary';
szstFMTMEMO = 'Formatted';
szstOLEOBJ = 'Ole';
szstGRAPHIC = 'Graphics';
szstDBSOLEOBJ = 'dBASEOle';
szstTYPEDBINARY = 'TypedBinary';
szstMONEY = 'Money';
szstAUTOINC = 'Autoinc';
szstADTNESTEDTABLE = 'ADTNestedTable';
szstFIXEDCHAR = 'FixedChar';
szstREFNESTEDTABLE = 'Reference';
szstGUID = 'Guid';
szstACCOLEOBJ = 'AccessOle';
szstHMEMO = 'HMemo';
szstHBINARY = 'HBinary';
fldstReference = 70;
dsfldUNKNOWN = 0; { Unknown }
dsfldINT = 1; { signed integer }
dsfldUINT = 2; { Unsigned integer }
dsfldBOOL = 3; { Boolean }
dsfldFLOATIEEE = 4; { IEEE float }
dsfldBCD = 5; { BCD }
dsfldDATE = 6; { Date (32 bit) }
dsfldTIME = 7; { Time (32 bit) }
dsfldTIMESTAMP = 8; { Time-stamp (64 bit) }
dsfldZSTRING = 9; { Multi-byte string }
dsfldUNICODE = 10; { unicode string }
dsfldBYTES = 11; { bytes }
dsfldADT = 12; { ADT (Abstract Data Type) }
dsfldARRAY = 13; { Array type (not attribute) }
dsfldEMBEDDEDTBL = 14; { Embedded (nested table type) }
dsfldREF = 15; { Reference }
dsfldDATETIME = 17; { Datetime struct for DB Express }
dsfldFMTBCD = 18; { BCD Variant type }
dsSizeBitsLen = 16; { no. bits indicating fld size }
dsSizeBitsMask = $0000FFFF; { mask to retrieve fld size }
dsTypeBitsMask = $003F0000; { mask to retrieve Type info }
dsVaryingFldType = $00400000; { Varying attribute type. }
dsArrayFldType = $00800000; { Array attribute type. }
dsPseudoFldType = $01000000; {Composite. Bits 1..15 gives number of elements }
dsCompArrayFldType = $02000000; { Compressed array }
dsEmbeddedFldType = $04000000; { Embedded table }
dsIncInDelta = $80000000; { For optional parameters only:include parameter in delta }
dskeyCASEINSENSITIVE = $4000;
dskeyDESCENDING = $8000;
dsDELAYEDBIT = $80000000; { Length/number is not present }
PACKETVERSION_1 = 1;
PACKETVERSION_2 = 2;
PACKETVERSION_3 = 3;
dsCASCADEDELETES = 1;
dsCASCADEUPDATES = 2;
{ Field Types (Logical) - Originally from BDE.PAS }
fldUNKNOWN = 0;
fldZSTRING = 1; { Null terminated string }
fldDATE = 2; { Date (32 bit) }
fldBLOB = 3; { Blob }
fldBOOL = 4; { Boolean (16 bit) }
fldINT16 = 5; { 16 bit signed number }
fldINT32 = 6; { 32 bit signed number }
fldFLOAT = 7; { 64 bit floating point }
fldBCD = 8; { BCD }
fldBYTES = 9; { Fixed number of bytes }
fldTIME = 10; { Time (32 bit) }
fldTIMESTAMP = 11; { Time-stamp (64 bit) }
fldUINT16 = 12; { Unsigned 16 bit integer }
fldUINT32 = 13; { Unsigned 32 bit integer }
fldFLOATIEEE = 14; { 80-bit IEEE float }
fldVARBYTES = 15; { Length prefixed var bytes }
fldLOCKINFO = 16; { Look for LOCKINFO typedef }
fldCURSOR = 17; { For Oracle Cursor type }
fldINT64 = 18; { 64 bit signed number }
fldUINT64 = 19; { Unsigned 64 bit integer }
fldADT = 20; { Abstract datatype (structure) }
fldARRAY = 21; { Array field type }
fldREF = 22; { Reference to ADT }
fldTABLE = 23; { Nested table (reference) }
fldDATETIME = 24; { Datetime structure for DBExpress }
fldFMTBCD = 25; { BCD Variant type: required by Midas, same as BCD for DBExpress}
MAXLOGFLDTYPES = 26; { Number of logical fieldtypes }
{ Additional (non-BDE fieldtypes }
fldUNICODE = $1007; { Unicode }
{ Sub Types (Logical) }
{ fldFLOAT subtype }
fldstMONEY = 21; { Money }
{ fldBLOB subtypes }
fldstMEMO = 22; { Text Memo }
fldstBINARY = 23; { Binary data }
fldstFMTMEMO = 24; { Formatted Text }
fldstOLEOBJ = 25; { OLE object (Paradox) }
fldstGRAPHIC = 26; { Graphics object }
fldstDBSOLEOBJ = 27; { dBASE OLE object }
fldstTYPEDBINARY = 28; { Typed Binary data }
fldstACCOLEOBJ = 30; { Access OLE object }
fldstHMEMO = 33; { CLOB }
fldstHBINARY = 34; { BLOB }
fldstBFILE = 36; { BFILE }
{ fldZSTRING subtype }
fldstPASSWORD = 1; { Password }
fldstFIXED = 31; { CHAR type }
fldstUNICODE = 32; { Unicode }
fldstGUID = 38; { GUID }
{ fldINT32 subtype }
fldstAUTOINC = 29;
const
FieldTypeMap: TFieldMap = (
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, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN,
fldUNKNOWN, fldZSTRING, fldDATETIME, fldFMTBCD);
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, fldstHBINARY, fldstHMEMO, 0, 0, 0, fldstGUID,
fldDATETIME, 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,
ftTimeStamp, ftFMTBcd);
BlobTypeMap: array[fldstMEMO..fldstBFILE] of TFieldType = (
ftMemo, ftBlob, ftFmtMemo, ftParadoxOle, ftGraphic, ftDBaseOle,
ftTypedBinary, ftBlob, ftBlob, ftBlob, ftBlob, ftOraClob,
ftOraBlob, ftBlob, ftBlob);
{ Error Codes }
const
DBERR_NONE = 0;
DBERR_BOF = $2201;
DBERR_EOF = $2202;
DBERR_NOSUCHINDEX = $270D;
ERRCAT_ALC = $40;
ERRBASE_ALC = $4000;
ERRCODE_DELTAISEMPTY = 1; { Delta is empty }
ERRCODE_NOTHINGTOUNDO = 2; { Nothing to undo }
ERRCODE_NOMETADATA = 3; { Datapacket contains no meta data }
ERRCODE_CANNOTAPPEND = 4; { Trying to append data to a non-partial }
ERRCODE_DATAPACKETMISMATCH = 5; { Mismatch in datapacket }
ERRCODE_ABORTED = 6; { Operation was aborted }
ERRCODE_CANCELLED = 7; { Operation was cancelled }
ERRCODE_NEWERVERSIONREQ = 8; { Newer version required }
ERRCODE_BLOBNOTFETCHED = 9; { Blob has not been fetched }
ERRCODE_DETAILSNOTFETCHED = 10; { Details has not been fetched }
ERRCODE_NOMASTERRECORD = 11; { no corresponding master record found }
ERRCODE_LINKFIELDSNOTUNIQUE= 12; { Linkfields must be unique }
ERRCODE_FLYAWAY_WRONGORDER = 13; { Special case: wrong order of updates for fly-away }
ERRCODE_NOCASCADEDUPDATES = 14; { Cascaded updates is not enabled }
DBERR_DELTAISEMPTY = ERRBASE_ALC + ERRCODE_DELTAISEMPTY;
DBERR_NOTHINGTOUNDO = ERRBASE_ALC + ERRCODE_NOTHINGTOUNDO;
DBERR_NOMETADATA = ERRBASE_ALC + ERRCODE_NOMETADATA;
DBERR_CANNOTAPPEND = ERRBASE_ALC + ERRCODE_CANNOTAPPEND;
DBERR_DATAPACKETMISMATCH = ERRBASE_ALC + ERRCODE_DATAPACKETMISMATCH;
DBERR_ABORTED = ERRBASE_ALC + ERRCODE_ABORTED;
DBERR_CANCELLED = ERRBASE_ALC + ERRCODE_CANCELLED;
DBERR_NEWERVERSIONREQ = ERRBASE_ALC + ERRCODE_NEWERVERSIONREQ;
DBERR_BLOBNOTFETCHED = ERRBASE_ALC + ERRCODE_BLOBNOTFETCHED;
DBERR_DETAILSNOTFETCHED = ERRBASE_ALC + ERRCODE_DETAILSNOTFETCHED;
DBERR_NOMASTERRECORD = ERRBASE_ALC + ERRCODE_NOMASTERRECORD;
DBERR_LINKFIELDSNOTUNIQUE = ERRBASE_ALC + ERRCODE_LINKFIELDSNOTUNIQUE;
DBERR_FLYAWAY_WRONGORDER = ERRBASE_ALC + ERRCODE_FLYAWAY_WRONGORDER;
DBERR_NOCASCADEDUPDATES = ERRBASE_ALC + ERRCODE_NOCASCADEDUPDATES;
{ IDSBase }
type
IDSBase = interface(IUnknown)
['{9E8D2FA2-591C-11D0-BF52-0020AF32BD64}']
function Create( { Create empty dataset }
iFields : LongWord; { Number of fields }
pFldDes : pDSFLDDesc; { Array of field descriptors }
pszName : PChar { Name (optional) }
): DBResult; stdcall;
function AddField( { Add a field to the dataset }
pFldDes : pDSFLDDesc { Field descriptor }
): DBResult; stdcall;
function AppendData( { Appends data packet to dataset. }
Packet : PSafeArray; { Data packet }
bEof : LongBool { If True, this is last packet }
): DBResult; stdcall;
function GetOptParameter( { Returns optional parameter (unknown to dataset) }
iNo : LongWord; { Number 1..iOptAttr }
iFldNo : LongWord; { 0 if not field attribute }
var ppName : Pointer; { returns ptr to name }
var piType : LongWord; { returns type }
var piLen : LongWord; { returns length }
var ppValue : Pointer { returns ptr to value }
): DBResult; stdcall;
function AddOptParameter( { Adds optional parameter to dataset }
iFldNo : LongWord; { 0 if not field attribute }
pszAttr : PChar; { ptr to name }
iType : LongWord; { type }
iLen : LongWord; { length }
pValue : Pointer { ptr to value }
): DBResult; stdcall;
function GetProps( { Get dataset properties }
var Prop : DSProps
): DBResult; stdcall;
function GetFieldDescs( { Get field descriptors }
Fields : pDSFLDDesc { Array of fields descriptors (output) }
): DBResult; stdcall;
function GetIndexDescs( { Get index descriptors }
p1: PDSIDXDesc { Array of index descriptors (output) }
): DBResult; stdcall;
function GetDelta( { Extract delta from dataset }
out DsDelta: IDSBase { Delta in a dataset }
): DBResult; stdcall;
function StreamDS( { Create data packet from the dataset }
out Packet : PSafeArray { Return data packet }
): DBResult; stdcall;
function AcceptChanges: DBResult; stdcall; { Accept all current changes }
function PutBlank( { Put blank value }
pRecBuf : Pointer; { RecBuf OR }
iRecNo : LongWord; { iRecNo }
iFldNo : LongWord;
iBlankValue : LongWord
): DBResult; stdcall;
function CreateIndex( { Create, and add an index }
const IdxDesc : DSIDXDesc
): DBResult; stdcall;
function RemoveIndex( { Remove index of given name }
pszName : PChar
): DBResult; stdcall;
function GetErrorString( { Retrieve error string }
iErrCode : DBResult;
pString : PChar
): DBResult; stdcall;
function FldCmp( { Compare field values returns 0 if equal }
iFldType : LongWord; { Fieldtype }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -