// idapi.h - main include file for idapi clients // // $Revision: 3.99 $ #ifndef DBI_H #define DBI_H #ifdef __cplusplus extern "C" { #endif // __cplusplus #define DBIINTFVER 119 // Version of the interface #define DBIENGVERSION 120 // Version of the engine (1.20) // assume byte packing throughout #if ! (defined(lint) || defined(_lint)) # ifndef RC_INVOKED # if ( _MSC_VER >= 800 ) || (defined(__BORLANDC__) && defined(__FLAT__)) # pragma warning(disable:4103) # if !(defined( MIDL_PASS )) || defined( __midl ) # pragma pack(push) # endif # pragma pack(1) # elif defined(__BORLANDC__) && !defined(__FLAT__) # pragma option -a- # else # pragma pack(1) # endif # endif // ndef RC_INVOKED #endif // ! (defined(lint) || defined(_lint)) #ifndef NODBITYPES //----------------------------------------------------------------------- // DBI types //----------------------------------------------------------------------- // sdk debug layer defines #define DEBUGON 0x1 #define OUTPUTTOFILE 0x2 #define FLUSHEVERYOP 0x8 #define APPENDTOLOG 0x10 // Constants #define DBIMAXNAMELEN 31 // Name limit (table, field etc) #define DBIMAXSPNAMELEN 64 // Max stored procedure name length #define DBIMAXFLDSINKEY 16 // Max fields in a key #define DBIMAXKEYEXPLEN 220 // Max Key expression length #define DBIMAXEXTLEN 3 // Max file extension len, not incl. dot (excluding zero termination) #if defined(__WIN32__) #define DBIMAXTBLNAMELEN 260 // Max table name length #define DBIMAXDRIVELEN 127 // Max drive length #define DBIMAXPATHLEN 260 // Max path+file name len (excluding zero termination) #else #define DBIMAXTBLNAMELEN 127 // Max table name length #define DBIMAXDRIVELEN 2 // Max drive length #define DBIMAXPATHLEN 81 // Max path+file name len (excluding zero termination) #endif // defined(WIN32) #define DBIMAXMSGLEN 127 // Max message len (allocate 64) #define DBIMAXVCHKLEN 255 // Max val check len #define DBIMAXPICTLEN 175 // Max picture len //Verify this - VJ #define DBIMAXFLDSINSEC 256 // Max fields in security spec #define DBIMAXSCFIELDS 16 // max nbr of fields in a config section #define DBIMAXSCFLDLEN 128 // max field length #define DBIMAXSCRECSIZE 2048 // max rec size #define DBIMAXUSERNAMELEN 14 // Max user name (general) #define DBIMAXXBUSERNAMELEN 12 // Max user name length (xBASE) #define DBIMAXBOOKMARKLEN 4104 // Max Bookmark length #if defined(__FLAT__) #ifdef far #undef far #endif // far #define far #endif // defined __FLAT__ #ifndef NODBIBASETYPES #ifndef TRUE # define TRUE 1 #endif // TRUE #ifndef FALSE # define FALSE 0 #endif // FALSE //For pointers #ifndef NULL # define NULL (0) #endif // NULL #if defined(__WIN32__) || defined (__NT__) #if !defined(VOID) #define VOID void typedef char CHAR; // from winnt.h typedef short SHORT; typedef long LONG; #endif #else #if !defined(VOID) #define VOID void #endif // !defined(VOID) typedef char CHAR; // from windows.h #endif // defined(WIN32) && !defined(VOID) #ifndef _WINDEF_ typedef unsigned char BYTE; #endif #ifndef INT8 # define INT8 char #endif // INT8 #ifndef UINT8 # define UINT8 unsigned char #endif // UINT8 #ifndef INT16 #if defined(__FLAT__) # define INT16 short #else # define INT16 int #endif // defined(__FLAT__) #endif // INT16 #ifndef UINT16 #if defined(__FLAT__) # define UINT16 unsigned short #else # define UINT16 unsigned int #endif // defined(__FLAT__) #endif // UINT16 #ifndef INT32 # define INT32 long #endif // INT32 #ifndef UINT32 # define UINT32 unsigned long #endif // UINT32 typedef int BOOL; // from windows.h typedef unsigned char BOOL8; typedef short BOOL16; #endif // NODBIBASETYPES typedef double DFLOAT; typedef long DBIDATE; typedef long TIME; typedef double TIMESTAMP; typedef UINT32 hDBICfg; typedef VOID far *pVOID; typedef pVOID far *ppVOID; typedef CHAR far *pCHAR; typedef const CHAR far *pCCHAR; typedef BYTE far *pBYTE; typedef INT8 far *pINT8; typedef UINT8 far *pUINT8; typedef INT16 far *pINT16; typedef UINT16 far *pUINT16; typedef INT32 far *pINT32; typedef UINT32 far *pUINT32; typedef DFLOAT far *pDFLOAT; typedef DBIDATE far *pDBIDATE; typedef TIME far *pTIME; typedef BOOL far *pBOOL; typedef BOOL16 far *pBOOL16; typedef TIMESTAMP far *pTIMESTAMP; #if !defined(__WIN32__) || (defined(__WATCOMC__) && !defined (__NT__)) #define FLOAT DFLOAT // for compatibility with BDE 2.0 #define pFLOAT pDFLOAT #define DATE DBIDATE #define pDATE pDBIDATE #endif // WIN32 typedef pBYTE far *ppBYTE; typedef pCHAR far *ppCHAR; typedef pBOOL far *ppBOOL; typedef pBOOL16 far *ppBOOL16; typedef hDBICfg far *phDBICfg; // Constants //=========================================================================== // G e n e r a l //=========================================================================== #if defined(__FLAT__) #define DBIFN __stdcall // All functions are this type #else #define DBIFN __pascal far // All functions are this type #endif // define(__FLAT__) typedef UINT16 DBIResult; // Function result typedef DBIResult far *pDBIResult; // Function result pointer typedef UINT32 hDBIObj; // Generic object handle typedef hDBIObj hDBIDb; // Database handle typedef hDBIObj hDBIQry; // Query handle typedef hDBIObj hDBIStmt; // Statement handle ("new query") typedef hDBIObj hDBICur; // Cursor handle typedef hDBIObj hDBISes; // Session handle typedef hDBIObj hDBIXlt; // Translation handle typedef hDBIObj far *phDBIObj; // pointer to generic object handle typedef hDBIDb far *phDBIDb; // pointer to Database handle typedef hDBIQry far *phDBIQry; // pointer to Query handle typedef hDBIStmt far *phDBIStmt; // pointer to Statement handle typedef hDBICur far *phDBICur; // pointer to Cursor handle typedef hDBISes far *phDBISes; // pointer to Session handle typedef hDBIXlt far *phDBIXlt; // pointer to Translation handle typedef UINT32 hDBIXact; // Transaction handle typedef hDBIXact far *phDBIXact; // pointer to Transaction handle // typedefs for buffers of various common sizes: // typedef CHAR DBIPATH [DBIMAXPATHLEN+1]; // holds a DOS path typedef CHAR DBINAME [DBIMAXNAMELEN+1]; // holds a name typedef CHAR DBIEXT [DBIMAXEXTLEN+1]; // holds an extension EXT typedef CHAR DBIDOTEXT [DBIMAXEXTLEN+2]; // holds an extension EXT including '.' typedef CHAR DBIDRIVE [DBIMAXDRIVELEN+1]; // holds a drive name typedef CHAR DBITBLNAME [DBIMAXTBLNAMELEN+1]; // holds a table name typedef CHAR DBISPNAME [DBIMAXSPNAMELEN+1]; // holds a stored procedure name typedef CHAR DBIUSERNAME[DBIMAXUSERNAMELEN+1]; // holds a user name typedef UINT16 DBIKEY [DBIMAXFLDSINKEY]; // holds list of fields in a key typedef CHAR DBIKEYEXP [DBIMAXKEYEXPLEN+1]; // holds a key expression typedef BYTE DBIVCHK [DBIMAXVCHKLEN+1]; // holds a validity check typedef CHAR DBIPICT [DBIMAXPICTLEN+1]; // holds a picture (Pdox) typedef CHAR DBIMSG [DBIMAXMSGLEN+1]; // holds an error message //=========================================================================== // Environmental //=========================================================================== typedef struct // Struct for defining the environ. { DBIPATH szWorkDir; // Working directory DBIPATH szIniFile; // Configuration file BOOL16 bForceLocalInit; // Force local initialization DBINAME szLang; // System language driver DBINAME szClientName; // Client name (documentary) } DBIEnv; typedef DBIEnv far *pDBIEnv; //============================================================================ // System Info //============================================================================ typedef struct // System Version Info { UINT16 iVersion; // Engine version UINT16 iIntfLevel; // Client Interface level DBIDATE dateVer; // Version date (Compile/Release) TIME timeVer; // Version time (Compile/Release) } SYSVersion; typedef SYSVersion far *pSYSVersion; typedef struct // System configuration (basic) { BOOL16 bLocalShare; // If Local files will be shared UINT16 iNetProtocol; // Net Protocol (35, 40 etc.) BOOL16 bNetShare; // If Net files will be shared DBINAME szNetType; // Network type DBIUSERNAME szUserName; // Network user name DBIPATH szIniFile; // Configuration file DBINAME szLangDriver; // System language driver } SYSConfig; typedef SYSConfig far *pSYSConfig; typedef struct // System Status/Info { UINT16 iBufferSpace; // in K UINT16 iHeapSpace; // in K UINT16 iDrivers; // Active/Loaded drivers UINT16 iClients; // Active clients UINT16 iSessions; // Number of sessions (For all clients) UINT16 iDatabases; // Open databases UINT16 iCursors; // Number of cursors } SYSInfo; typedef SYSInfo far * pSYSInfo; typedef struct { DBINAME szName; // Documentary name UINT16 iSessions; // Number of sessions DBIPATH szWorkDir; // Working directory DBINAME szLang; // System language driver (Client supplied) } CLIENTInfo; typedef CLIENTInfo far * pCLIENTInfo; typedef struct { UINT16 iSession; // Session id (1..n) DBINAME szName; // Documentary name UINT16 iDatabases; // Open databases UINT16 iCursors; // Open cursors INT16 iLockWait; // Lock wait time (in seconds) DBIPATH szNetDir; // Net directory location DBIPATH szPrivDir; // Current Private directory } SESInfo; typedef SESInfo far * pSESInfo; //============================================================================ // Table / Field Types //============================================================================ // Driver Types #define szPARADOX "PARADOX" #define szDBASE "DBASE" #define szASCII "ASCIIDRV" // Field Types (Logical) #define fldUNKNOWN 0 #define fldZSTRING 1 // Null terminated string #define fldDATE 2 // Date (32 bit) #define fldBLOB 3 // Blob #define fldBOOL 4 // Boolean (16 bit) #define fldINT16 5 // 16 bit signed number #define fldINT32 6 // 32 bit signed number #define fldFLOAT 7 // 64 bit floating point #define fldBCD 8 // BCD #define fldBYTES 9 // Fixed number of bytes #define fldTIME 10 // Time (32 bit) #define fldTIMESTAMP 11 // Time-stamp (64 bit) #define fldUINT16 12 // Unsigned 16 bit integer #define fldUINT32 13 // Unsigned 32 bit integer #define fldFLOATIEEE 14 // 80-bit IEEE float #define fldVARBYTES 15 // Length prefixed var bytes #define fldLOCKINFO 16 // Look for LOCKINFO typedef #define MAXLOGFLDTYPES 17 // Number of logical fieldtypes // Sub Types (Logical) // fldFLOAT subtype #define fldstMONEY 21 // Money // fldBLOB subtypes #define fldstMEMO 22 // Text Memo #define fldstBINARY 23 // Binary data #define fldstFMTMEMO 24 // Formatted Text #define fldstOLEOBJ 25 // OLE object (Paradox) #define fldstGRAPHIC 26 // Graphics object #define fldstDBSOLEOBJ 27 // dBASE OLE object #define fldstTYPEDBINARY 28 // Typed Binary data // fldZSTRING subtype #define fldstPASSWORD 1 // Password // fldINT32 subtype #define fldstAUTOINC 29 // Paradox types (Physical) #define fldPDXCHAR 0x101 // Alpha (string) #define fldPDXNUM 0x102 // Numeric #define fldPDXMONEY 0x103 // Money #define fldPDXDATE 0x104 // Date #define fldPDXSHORT 0x105 // Short #define fldPDXMEMO 0x106 // Text Memo (blob) #define fldPDXBINARYBLOB 0x107 // Binary data (blob) #define fldPDXFMTMEMO 0x108 // Formatted text (blob) #define fldPDXOLEBLOB 0x109 // OLE object (blob) #define fldPDXGRAPHIC 0x10A // Graphics object (blob) #define fldPDXBLOB fldPDXMEMO #define fldPDXLONG 0x10B // Long #define fldPDXTIME 0x10C // Time #define fldPDXDATETIME 0x10D // Time Stamp #define fldPDXBOOL 0x10E // Logical #define fldPDXAUTOINC 0x10F // Auto increment (long) #define fldPDXBYTES 0x110 // Fixed number of bytes #define fldPDXBCD 0x111 // BCD (32 digits) #define fldPDXUNICHAR 0x112 // not supported yet // xBASE types (Physical) #define fldDBCHAR 0x201 // Char string #define fldDBNUM 0x202 // Number #define fldDBMEMO 0x203 // Memo (blob) #define fldDBBOOL 0x204 // Logical #define fldDBDATE 0x205 // Date #define fldDBFLOAT 0x206 // Float #define fldDBLOCK 0x207 // Logical type is LOCKINFO #define fldDBOLEBLOB 0x208 // OLE object (blob) #define fldDBBINARY 0x209 // Binary data (blob) #define fldDBBYTES 0x20A // Only for TEMPORARY tables // xBASE key types (Cannot be used as field types) #define fldDBKEYNUM 0x210 #define fldDBKEYBCD 0x211 // Ascii types (Physical) #define fldASCCHAR 0x301 // Char string #define fldASCNUM 0x302 // Number #define fldASCBOOL 0x303 // Logical #define fldASCDATE 0x304 // Date #define fldASCFLOAT 0x305 // Float #define fldASCLOCK 0x306 // Not used #define fldASCTIMESTAMP 0x307 // TimeStamp #define fldASCTIME 0x308 // Time #define fldASCLONG 0x309 // Long #define fldASCMONEY 0x30A // Money //============================================================================ // Field descriptor //============================================================================ typedef enum // Field Val Check type { fldvNOCHECKS = 0, // Does not have explicit val checks fldvHASCHECKS = 1, // One or more val checks on the field fldvUNKNOWN = 2 // Dont know at this time } FLDVchk; typedef enum // Field Rights { fldrREADWRITE = 0, // Field can be Read/Written fldrREADONLY = 1, // Field is Read only fldrNONE = 2, // No Rights on this field fldrUNKNOWN = 3 // Dont know at this time } FLDRights; typedef struct { // Field Descriptor UINT16 iFldNum; // Field number (1..n) DBINAME szName; // Field name UINT16 iFldType; // Field type UINT16 iSubType; // Field subtype (if applicable) INT16 iUnits1; // Number of Chars, digits etc INT16 iUnits2; // Decimal places etc. UINT16 iOffset; // Offset in the record (computed) UINT16 iLen; // Length in bytes (computed) UINT16 iNullOffset; // For Null bits (computed) FLDVchk efldvVchk; // Field Has vcheck (computed) FLDRights efldrRights; // Field Rights (computed) } FLDDesc; typedef FLDDesc far *pFLDDesc; //============================================================================ // Index descriptor //============================================================================ typedef struct // Index description { DBITBLNAME szName; // Index name UINT16 iIndexId; // Index number DBINAME szTagName; // Tag name (for dBASE) DBINAME szFormat; // Optional format (BTREE, HASH etc) BOOL16 bPrimary; // True, if primary index BOOL16 bUnique; // True, if unique keys BOOL16 bDescending; // True, for descending index BOOL16 bMaintained; // True, if maintained index BOOL16 bSubset; // True, if subset index BOOL16 bExpIdx; // True, if expression index UINT16 iCost; // Not used UINT16 iFldsInKey; // Fields in the key (1 for Exp) UINT16 iKeyLen; // Phy Key length in bytes (Key only) BOOL16 bOutofDate; // True, if index out of date UINT16 iKeyExpType; // Key type of Expression DBIKEY aiKeyFld; // Array of field numbers in key DBIKEYEXP szKeyExp; // Key expression DBIKEYEXP szKeyCond; // Subset condition BOOL16 bCaseInsensitive; // True, if case insensitive index UINT16 iBlockSize; // Block size in bytes UINT16 iRestrNum; // Restructure number UINT16 iUnUsed[16]; } IDXDesc; typedef IDXDesc far *pIDXDesc; //============================================================================ // Validity check, Referential integrity descriptors //============================================================================ // Subtypes for Lookup typedef enum // Paradox Lookup type { lkupNONE = 0, // Has no lookup lkupPRIVATE = 1, // Just Current Field + Private lkupALLCORRESP = 2, // All Corresponding + No Help lkupHELP = 3, // Just Current Fld + Help and Fill lkupALLCORRESPHELP= 4 // All Corresponging + Help } LKUPType; #define TODAYVAL 2 // for Min/Max/Def val flags // In VCHKDesc below, if any of bHasMinVal/bHasMaxVal/bHasDefVal // = TODAYVAL, then TODAY is assumed. typedef struct // Val Check structure { UINT16 iFldNum; // Field number BOOL16 bRequired; // If True, value is required BOOL16 bHasMinVal; // If True, has min value BOOL16 bHasMaxVal; // If True, has max value BOOL16 bHasDefVal; // If True, has default value DBIVCHK aMinVal; // Min Value DBIVCHK aMaxVal; // Max Value DBIVCHK aDefVal; // Default value DBIPICT szPict; // Picture string LKUPType elkupType; // Lookup/Fill type DBIPATH szLkupTblName; // Lookup Table name } VCHKDesc; typedef VCHKDesc far *pVCHKDesc; typedef enum // Ref integrity type { rintMASTER = 0, // This table is Master rintDEPENDENT = 1 // This table is Dependent } RINTType; typedef enum // Ref integrity action/qualifier { rintRESTRICT = 0, // Prohibit operation rintCASCADE = 1 // Cascade operation } RINTQual; typedef struct // Ref Integrity Desc { UINT16 iRintNum; // Ref integrity number DBINAME szRintName; // A name to tag this integegrity constraint RINTType eType; // Whether master/dependent DBIPATH szTblName; // Other table name RINTQual eModOp; // Modify qualifier RINTQual eDelOp; // Delete qualifier UINT16 iFldCount; // Fields in foreign key DBIKEY aiThisTabFld; // Fields in this table DBIKEY aiOthTabFld; // Fields in other table } RINTDesc; typedef RINTDesc far *pRINTDesc; //============================================================================ // Security descriptor //============================================================================ // Family rights #define NOFAMRIGHTS 0x00 // No Family rights #define FORMRIGHTS 0x01 // Can change form #define RPTRIGHTS 0x02 // Can change reports #define VALRIGHTS 0x04 // Can change valchecks #define SETRIGHTS 0x08 // Can change settings #define ALLFAMRIGHTS (FORMRIGHTS | RPTRIGHTS | VALRIGHTS | SETRIGHTS) // All family rights typedef enum { // Privileges prvNONE = 0, // No privilege prvREADONLY = 0x01, // Read only Table or Field prvMODIFY = 0x03, // Read and Modify fields (non-key) prvINSERT = 0x07, // Insert + All of above prvINSDEL = 0x0F, // Delete + All of above prvFULL = 0x1F, // Full Writes prvUNKNOWN = 0xFF // Unknown } PRVType; typedef struct { // Security description UINT16 iSecNum; // Nbr to identify desc PRVType eprvTable; // Table privileges UINT16 iFamRights; // Family rights DBINAME szPassword; // Null terminated string PRVType aprvFld[DBIMAXFLDSINSEC]; // Field level privileges (prvNONE/prvREADONLY/prvFULL) } SECDesc; typedef SECDesc far *pSECDesc; //====================================================================== // Miscellaneous //====================================================================== // Index Id used to open table without a default index (i.e. no order) #define NODEFAULTINDEX 0xFFFF //============================================================================ // Object types //============================================================================ typedef enum { objSYSTEM = 1, // System object objSESSION = 2, // Session object objDRIVER = 3, // Driver object objDATABASE = 4, // Database object objCURSOR = 5, // Cursor object objSTATEMENT = 6, // Statement object objCLIENT = 7, // Client object objDBSEC = 8 // DbSystem object (dBASE only) } DBIOBJType; //============================================================================ // Cursor properties //============================================================================ typedef enum // Database/Table Share type { dbiOPENSHARED = 0, // Open shared (Default) dbiOPENEXCL = 1, // Open exclusive } DBIShareMode; typedef enum // Database/Table Access type { dbiREADWRITE = 0, // Read + Write (Default) dbiREADONLY = 1 // Read only } DBIOpenMode; typedef enum // Lock types (Table level) { dbiNOLOCK = 0, // No lock (Default) dbiWRITELOCK = 1, // Write lock dbiREADLOCK = 2 // Read lock } DBILockType; typedef enum // Field translate mode { xltNONE = 0, // No translation (Physical Types) xltRECORD = 1, // Record level translation (not supported) xltFIELD = 2, // Field level translation (Logical types) } XLTMode; typedef enum // Update lock mode (SQL only) { updWHEREALL = 0, // All fields in WHERE clause updWHEREKEYCHG = 1, // Keyed and changed fields in WHERE clause updWHEREKEY = 2 // Keyed fields in WHERE clause } UPDLockMode; // Table levels #define TBLLEVEL3 3 // Paradox level 3 and dBASE level 3+ #define TBLLEVEL4 4 // Paradox level 4 and dBASE level 4 #define TBLLEVEL5 5 // Paradox level 5 and dBASE/Win #define FOXLEVEL25 25 // Fox Table (Ver 2.5) typedef struct { // Virtual Table properties DBITBLNAME szName; // table name (no extension, if it can be derived) UINT16 iFNameSize; // Full file name size DBINAME szTableType; // Driver type UINT16 iFields; // No of fields in Table UINT16 iRecSize; // Record size (logical record) UINT16 iRecBufSize; // Record size (physical record) UINT16 iKeySize; // Key size UINT16 iIndexes; // Number of indexes UINT16 iValChecks; // Number of val checks UINT16 iRefIntChecks; // Number of Ref Integrity constraints UINT16 iBookMarkSize; // Bookmark size BOOL16 bBookMarkStable; // Stable book marks DBIOpenMode eOpenMode; // ReadOnly / RW DBIShareMode eShareMode; // Excl / Share BOOL16 bIndexed; // Index is in use INT16 iSeqNums; // 1: Has Seqnums; 0: Has Record# // <0 (-1, -2, ...): None (e.g. SQL) BOOL16 bSoftDeletes; // Supports soft deletes BOOL16 bDeletedOn; // If above, deleted recs seen UINT16 iRefRange; // Not used XLTMode exltMode; // Translate Mode UINT16 iRestrVersion; // Restructure version number BOOL16 bUniDirectional; // Cursor is uni-directional PRVType eprvRights; // Table rights UINT16 iFmlRights; // Family rights UINT16 iPasswords; // Number of Aux passwords UINT16 iCodePage; // Codepage (0 if unknown) BOOL16 bProtected; // Table is protected by password UINT16 iTblLevel; // Driver dependent table level DBINAME szLangDriver; // Language driver name BOOL16 bFieldMap; // Field map active UINT16 iBlockSize; // Physical file blocksize in K BOOL16 bStrictRefInt; // Strict referential integrity UINT16 iFilters ; // Number of filters BOOL16 bTempTable ; // Table is a temporary table UINT16 iUnUsed[16]; } CURProps; typedef CURProps far *pCURProps; //============================================================================ // Record Properties //============================================================================ typedef struct { // Record properties UINT32 iSeqNum; // When Seq# supported only UINT32 iPhyRecNum; // When Phy Rec#s supported only BOOL16 bRecChanged; // Not used BOOL16 bSeqNumChanged; // Not used BOOL16 bDeleteFlag; // When soft delete supported only } RECProps; typedef RECProps far *pRECProps; //============================================================================ // General properties DbiGetProp/DbiSetProp //============================================================================ // Cursor properties // General #define curMAXPROPS 0x00050000l //ro UINT16 , Number of defined properties #define curTABLENAME 0x00050001l //ro pTBLNAME , Table name #define curTABLETYPE 0x00050002l //ro pDBINAME , Table type #define curTABLELEVEL 0x00050003l //ro UINT16 , Table level 1..n #define curFILENAME 0x00050004l //ro pPATH , Full filename #define curXLTMODE 0x00050005l //rw XLTMode , Translate mode #define curSEQREADON 0x00050006l //rw BOOL , Sequential read mode hint ON #define curONEPASSON 0x00050007l //rw BOOL , One pass mode hint ON #define curUPDATETS 0x00050008l //ro TIMESTAMP, Update timestamp #define curSOFTDELETEON 0x00050009l //rw BOOL , Softdelete ON #define curLANGDRVNAME 0x0005000Al //ro pCHAR , Symbolic language drv. name #define curCURSORNAME 0x0005000Bl //ro pCHAR , name of the cursor #define maxcurPROPS 11 // keep in sync when adding cursor properties // Paradox specific #define curPDXMAXPROPS 0x01050000l //ro UINT16 , Number of defined properties #define maxcurPDXPROPS 0 // DBase specific #define curDBMAXPROPS 0x02050000l //ro UINT16 , Number of defined properties #define curINEXACTON 0x02050001l //rw BOOL , InExact match ON #define curSHAREMODE 0x02050002l //rw DBIShareMode, Share mode #define maxcurDBPROPS 2 // Text Driver specific #define curDELIMITALLFLDS 0x03050000l //rw BOOL , Delimit all fields. #define curUSESCHEMAFILE 0x03050001l //rw BOOL , read schema from a file // SQL Driver specific #define curUPDLOCKMODE 0x04050000l //rw UPDLockMode ,Update lock mode #define curNATIVEHNDL 0x04050001l //ro pBYTE ,Native cursor handle // Driver properties // General #define drvMAXPROPS 0x00030000l //ro UINT16 , Number of defined properties #define drvDRIVERTYPE 0x00030002l //ro pDBINAME , Driver type #define drvDRIVERVERSION 0x00030003l //ro UINT16 , Driver version #define maxdrvPROPS 2 // keep in sync when adding driver properties // Database properties // General #define dbMAXPROPS 0x00040000l //ro UINT16 , Number of defined properties #define dbDATABASENAME 0x00040001l //ro pDBINAME , Database name/alias #define dbDATABASETYPE 0x00040002l //ro pDBINAME , Database type #define dbDEFAULTDRIVER 0x00040003l //rw pDBINAME , Default Driver name #define dbPARAMFMTQMARK 0x00040004l //rw BOOL , Stmt param marker fmt = ? #define dbUSESCHEMAFILE 0x00040005l //rw BOOL , for text driver only. #define maxdbPROPS 11 // keep in sync when adding ANY db properties // SQL Driver specific #define dbASYNCSUPPORT 0x04040000l //ro BOOL , Async. qry exec support #define dbPROCEDURES 0x04040001l //ro BOOL , Stored procedure support #define dbDEFAULTTXNISO 0x04040002l //ro eXILType , Default transaction iso level #define dbNATIVEHNDL 0x04040003l //ro pBYTE , Native connection handle #define dbNATIVEPASSTHRUHNDL 0x04040004l //ro pBYTE , Native passthru connection handle #define dbSERVERVERSION 0x04040005l //ro UINT16 , Major server version number // Session properties // General #define sesMAXPROPS 0x00020000l //ro UINT16 , Number of defined properties #define sesSESSIONNAME 0x00020001l //ro pDBINAME , Name of seesion #define sesNETFILE 0x00020002l //rw pCHAR , Full filename of netfile (MAXPATHLEN) #define sesCFGMODE 0x00020003l //rw CFGMode, Mode of configuration file. #define sesDEFAULTDRIVER 0x00020004l //rw pDBINAME, default driver name #define sesGROUPNAME 0x00020005l //rw pCHAR, Security - user group name (dBASE) #define sesUSERNAME 0x00020006l //rw pCHAR, User Name #define sesUSERPASSWORD 0x00020007l //rw pCHAR, User password #define sesSECFILENAME 0x00020008l //rw pCHAR, Location of dBASE Security file #define maxsesPROPS 8 // keep in sync when adding session properties // System properties // General #define sysMAXPROPS 0x00010000l // ro UINT16 , Number of defined properties #define sysLOWMEMUSAGE 0x00010001l // ro UINT16 , Low memory usage in (k) #define maxsysPROPS 1 // keep in sync when adding system properties // Statement properties // General #define stmtMAXPROPS 0x00060001l //ro UINT16 Number of defined properties #define stmtPARAMETERCOUNT 0x00060002l //ro UINT16 Count of parameters #define stmtPARAMETERDESCS 0x00060003l //ro aFLDDesc Array of parameters #define stmtLANGDRVNAME 0x00060004l //ro pCHAR Symbolic language drv. name #define stmtUNIDIRECTIONAL 0x00060010l //rw BOOL Cursor Unidirectional #define stmtCURSORNAME 0x00060011l //rw pCHAR Cursor name #define stmtNEWCONNECT 0x00060012l //rw BOOL Stmt on new connection #define stmtNATIVEHNDL 0x00060013l //ro pBYTE Native statement handle #define stmtROWCOUNT 0x00060014l //ro UINT32 Rows effected by a stmt #define maxstmtPROPS 19 // keep in sync when adding ANY stmt properties // specific to QBE or local SQL #define stmtANSTYPE 0x00060020l //rw pBYTE Table Type of Answer set #define stmtLIVENESS 0x00060021l //rw LIVENESS Preference for canned/live answers #define stmtQRYMODE 0x00060022l //rw QryEvalMode Execute on server or local or either #define stmtBLANKS 0x00060023l //rw BOOL True if blanks to be regarded as zeros. #define stmtDATEFORMAT 0x00060024l //rw FMTDate Date format #define stmtNUMBERFORMAT 0x00060025l //rw FMTNumber Number format #define stmtAUXTBLS 0x00060026l //rw BOOL True if QBE to create CHANGED, etc. #define stmtTBLVECTOR 0x00060027l //ro UINT16 Vector of tables generated by query. #define stmtALLPROPS 0x00060028l //rw QueryLowProps #define stmtALLPROPSSIZE 0x00060029l //rw INT16 size of QueryLowProps #define stmtANSNAME 0x00060030l //rw pBYTE Answer Table Name. //============================================================================ // Transactions //============================================================================ // Transaction support typedef enum // Transaction isolation levels { xilDIRTYREAD, // Uncommitted changes read xilREADCOMMITTED, // Committed changes, no phantoms xilREPEATABLEREAD // Full read repeatability } eXILType; typedef enum // Transaction end control { xendCOMMIT, // Commit transaction xendCOMMITKEEP, // Commit transaction, keep cursors xendABORT // Rollback transaction } eXEnd; typedef enum // Transaction end control { xsINACTIVE, // Transaction inactive xsACTIVE // Transaction active } eXState; typedef struct { eXState exState; // xsActive, xsInactive eXILType eXIL; // Xact isolation level UINT16 uNests; // Xact children } XInfo, *pXInfo; //============================================================================ // BookMark compares //============================================================================ typedef enum // Compare BookMark Results { CMPLess = -1, // Bkm1 < Bkm2 CMPEql = 0, // BookMarks are exactly the same CMPGtr = 1, // Bkm1 > Bkm2 CMPKeyEql = 2 // Only Bkm1.key_val = Bkm2.key_val } CMPBkMkRslt; typedef CMPBkMkRslt far *pCMPBkMkRslt; //=========================================================================== // Key searches //=========================================================================== typedef enum { // Search condition for keys keySEARCHEQ = 0, // = keySEARCHGT = 1, // > keySEARCHGEQ = 2, // >= } DBISearchCond; //============================================================================ // Create/Restructure descriptor //============================================================================ typedef enum // Create/Restruct Operation type { crNOOP = 0, crADD = 1, // Add a new element. crCOPY = 2, // Copy an existing element. crMODIFY = 3, // Modify an element. crDROP = 4, // Removes an element. crREDO = 5, // Reconstruct an element. crTABLE = 6, // Not used crGROUP = 7, // Not used crFAMILY = 8, // Not used crDONE = 9, // Used internally crDROPADD = 10 // Used internally } CROpType; typedef CROpType far *pCROpType; typedef struct // Create/Restruct Table descr { DBITBLNAME szTblName; // TableName incl. optional path & ext DBINAME szTblType; // Driver type (optional) DBIPATH szErrTblName; // Error Table name (optional) DBINAME szUserName; // User name (if applicable) DBINAME szPassword; // Password (optional) BOOL16 bProtected; // Master password supplied in szPassword BOOL16 bPack; // Pack table (restructure only) UINT16 iFldCount; // Number of field defs supplied pCROpType pecrFldOp; // Array of field ops pFLDDesc pfldDesc; // Array of field descriptors UINT16 iIdxCount; // Number of index defs supplied pCROpType pecrIdxOp; // Array of index ops pIDXDesc pidxDesc; // Array of index descriptors UINT16 iSecRecCount; // Number of security defs supplied pCROpType pecrSecOp; // Array of security ops pSECDesc psecDesc; // Array of security descriptors UINT16 iValChkCount; // Number of val checks pCROpType pecrValChkOp; // Array of val check ops pVCHKDesc pvchkDesc; // Array of val check descs UINT16 iRintCount; // Number of ref int specs pCROpType pecrRintOp; // Array of ref int ops pRINTDesc printDesc; // Array of ref int specs UINT16 iOptParams; // Number of optional parameters pFLDDesc pfldOptParams; // Array of field descriptors pBYTE pOptData; // Optional parameters } CRTblDesc; typedef CRTblDesc far *pCRTblDesc; //============================================================================ // Batch //============================================================================ typedef struct // Batch Table definition struct { hDBIDb hDb; // Database DBIPATH szTblName; // Table name DBINAME szTblType; // Optional Driver type DBINAME szUserName; // Optional User name DBINAME szPassword; // Optional Pass word } BATTblDesc; typedef BATTblDesc far *pBATTblDesc; typedef enum // Batch mode for DBIBatchMove { batAPPEND = 0, batUPDATE = 1, batAPPENDUPDATE = 2, batSUBTRACT = 3, batCOPY = 4 } eBATMode; typedef enum // Sort Order { sortASCEND = 0, // ascending (default) sortDESCEND = 1, // descending } SORTOrder; typedef SORTOrder far *pSORTOrder; typedef INT16 (DBIFN * pfSORTCompFn) // pntr to client compare fn ( pVOID pLdObj, // Language driver, if needed pVOID pValue1, // first value pVOID pValue2, // second value INT16 iLen // Length, if needed ); // Returns: -1 if (Value 1 < Value 2), // 0 if (Value 1 == Value 2), // +1 if (Value 1 > Value 2) //=========================================================================== // Types/Structs for Capabilities //=========================================================================== typedef enum // Driver Category { drvFILE = 1, // File based (Paradox, xBASE) drvOTHERSERVER = 2, // Other kind of server (IMS ?) drvSQLBASEDSERVER = 3 // SQL Based Server } DRVCat; typedef enum // Config info & Optional Parameters { opDBCREATE = 3, opDBOPEN = 4, opTBLCREATE = 5, opTBLOPEN = 6 } OPType; typedef struct // Driver Description/Capabilities { DBINAME szType; // Symbolic name to identify DBINAME szText; // Descriptive text DRVCat edrvCat; // Driver category BOOL16 bTrueDb; // Supports True Db concept DBINAME szDbType; // Db Type to be used BOOL16 bMultiUser; // Supports Multi-user access BOOL16 bReadWrite; // Read Write or Read-only BOOL16 bTrans; // Supports Transactions BOOL16 bPassThruSQL; // Supports Pass-thru SQL BOOL16 bLogIn; // Requires explicit login BOOL16 bCreateDb; // Can reate a Database BOOL16 bDeleteDb; // Can drop database BOOL16 bCreateTable; // Can create a Table BOOL16 bDeleteTable; // Can delete a Table BOOL16 bMultiplePWs; // Multiple passwords UINT16 iDriverVersion; // Driver version 1..n BOOL16 bSQLRowid; // Supports SQL rowid UINT16 iUnUsed[15]; } DRVType; typedef DRVType far *pDRVType; typedef struct // Table Capabilities { UINT16 iId; // Id of Table Type DBINAME szName; // Symbolic name; eg "dBASE" DBINAME szText; // Descriptive text DBINAME szFormat; // Format; eg "HEAP" BOOL16 bReadWrite; // User can Read/Write BOOL16 bCreate; // Can create new tables BOOL16 bRestructure; // Can restructure this table BOOL16 bValChecks; // Val Checks can be specified BOOL16 bSecurity; // Can be protected BOOL16 bRefIntegrity; // Can participate in ref integrity BOOL16 bPrimaryKey; // Supports primary key concept BOOL16 bIndexing; // Can have other indexes UINT16 iFldTypes; // Number of Phy Field types supported UINT16 iMaxRecSize; // Max record size UINT16 iMaxFldsInTable; // Max fields in a table UINT16 iMaxFldNameLen; // Maximum field name length UINT16 iTblLevel; // Driver dependent table level (version) UINT16 iUnUsed[16]; } TBLType; typedef TBLType far *pTBLType; typedef struct { UINT16 iId; // Id of Index Type DBINAME szName; // Symbolic name DBINAME szText; // Descriptive text DBINAME szFormat; // Optional format(BTREE, HASH etc) BOOL16 bComposite; // Supports composite keys BOOL16 bPrimary; // True, if primary index BOOL16 bUnique; // True, No duplicates supported BOOL16 bKeyDescending; // If whole key can be descending BOOL16 bFldDescending; // Field level descending BOOL16 bMaintained; // Supports maintained option BOOL16 bSubset; // Supports Subset expression BOOL16 bKeyExpr; // If Key can be expres BOOL16 bCaseInsensitive; // Supports Caseinsensitive indexes UINT16 iUnUsed[16]; } IDXType; typedef IDXType far *pIDXType; typedef struct { UINT16 iId; // Id of Field Type DBINAME szName; // Symbolic name; eg "ALPHA" DBINAME szText; // Descriptive text UINT16 iPhyType; // Physical/Native type UINT16 iXltType; // Default xlated type UINT16 iXltSubType; // Default xlated sub type UINT16 iMaxUnits1; // Max units allowed (1) UINT16 iMaxUnits2; // Max units allowed (2) UINT16 iPhySize; // Physical size in bytes (per unit) BOOL16 bRequired; // Supports 'required' option BOOL16 bDefaultVal; // Supports user specified 'default' BOOL16 bMinVal; // Supports MIN Val constraint BOOL16 bMaxVal; // Supports MAX Val constraint BOOL16 bRefIntegrity; // Can participate in ref integrity BOOL16 bOtherChecks; // Supports other kinds of checks BOOL16 bKeyed; // The field type can be keyed BOOL16 bMultiplePerTable; // Table can have more than 1 of this type UINT16 iMinUnits1; // Min units required (1) UINT16 iMinUnits2; // Min units required (2) BOOL16 bCreateable; // Type can be created UINT16 iUnUsed[16]; } FLDType; typedef FLDType far *pFLDType; typedef enum // PROP Validity { epropINVALID = 0, // Property is INVALID (not supported) epropCANGET = 1, // You can GET value of the property epropCANSET = 2 // You can GET and SET value of the property } PROPValid; //=========================================================================== // Call Backs //=========================================================================== typedef enum // Call back type { cbGENERAL = 0, // General purpose cbRESERVED1 = 1, // cbRESERVED2 = 2, // cbINPUTREQ = 3, // Input requested cbRESERVED4 = 4, // cbRESERVED5 = 5, // cbBATCHRESULT = 6, // Batch processing rslts cbRESERVED7 = 7, // cbRESTRUCTURE = 8, // Restructure cbRESERVED9 = 9, // cbRESERVED10 = 10, // cbRESERVED11 = 11, // cbRESERVED12 = 12, // cbRESERVED13 = 13, // cbRESERVED14 = 14, // cbRESERVED15 = 15, // cbRESERVED16 = 16, // cbRESERVED17 = 17, // cbTABLECHANGED = 18, // Table changed notification cbRESERVED19 = 19, // cbRESERVED20 = 20, // cbRESERVED21 = 21, // cbRESERVED22 = 22, // cbGENPROGRESS = 23, // Generic Progress report. cbDBASELOGIN = 24, // dBASE Login cbNBROFCBS = 25 // Number of cbs } CBType; typedef CBType far *pCBType; typedef enum // Call-back return type { cbrUSEDEF = 0, // Take default action cbrCONTINUE = 1, // Continue cbrABORT = 2, // Abort the operation cbrCHKINPUT = 3, // Input given cbrYES = 4, // Take requested action cbrNO = 5, // Do not take requested action cbrPARTIALASSIST = 6 // Assist in completing the job } CBRType; typedef CBRType far *pCBRType; typedef CBRType (DBIFN * pfDBICallBack) // Call-back funtion pntr type ( CBType ecbType, // Callback type UINT32 iClientData, // Client callback data pVOID pCbInfo // Call back info/Client Input ); typedef pfDBICallBack far *ppfDBICallBack; // Progress callback structure typedef struct { INT16 iPercentDone; // Percentage done DBIMSG szMsg; // Message to display } CBPROGRESSDesc; typedef CBPROGRESSDesc far * pCBPROGRESSDesc; typedef enum // type of restructure object (restructure callback) { restrNONE = 0, restrNEWFLD = 1, restrOLDFLD = 2, restrNEWINDEX = 3, restrOLDINDEX = 4, restrNEWVCHK = 5, restrOLDVCHK = 6, restrNEWRINT = 7, restrOLDRINT = 8, restrNEWSEC = 9, restrOLDSEC = 10, restrNEWTABLE = 11 } RESTErrObjType; #if !defined(MIDL) typedef struct // restructure callback info { DBIResult iErrCode; UINT16 iTblNum; UINT16 iObjNum; // for old objects iObjNum is the sequence or field number, // for new objects it is the order in CRTblDesc RESTErrObjType eRestrObjType; union { FLDDesc fldDesc; IDXDesc idxDesc; VCHKDesc vchkDesc; RINTDesc rintDesc; SECDesc secDesc; } uObjDesc; } RESTCbDesc; #endif // !defined(MIDL) typedef struct { // Entries for input requested callback DBINAME szKeyWord; // Keyword to display DBIMSG szHelp; // Help String } CBEntry; #define MAXCBENTRIES 4 typedef enum // Id for input requested callback { cbiMDXMISSING = 1, // MDX file missing request cbiPDXLOOKUP = 2, // Lookup table missing cbiPDXBLOB = 3, // Blob file missing cbiDBTMISSING = 4 // DBT file missing request } CBInputId; // id's for input requests typedef struct { // Input requested callback structure CBInputId eCbInputId; // Id for this input request INT16 iCount; // Number of entries INT16 iSelection; // Selection 1..n (In/Out) BOOL16 bSave; // Save this option (In/Out) DBIMSG szMsg; // Message to display CBEntry acbEntry[MAXCBENTRIES]; // Entries } CBInputDesc; typedef struct // dBASE login callback structure { DBINAME szUserName; // Login name of user DBINAME szGroupName; // Group to log in to DBINAME szUserPassword; // User password } CBLoginDesc; typedef CBLoginDesc far * pCBLoginDesc; //============================================================================ // Basic Query Types //============================================================================ typedef enum DBIQryLang { qrylangUNKNOWN = 0, // UNKNOWN (Error) qrylangQBE = 1, // QBE qrylangSQL = 2 // SQL } DBIQryLang; //============================================================================ // Statement parameter information //============================================================================ typedef enum { indTRUNC = -2, // Value has been truncated indNULL = -1, // Value is NULL indVALUE = 1, // } eINDValues; #define INDLEN sizeof (INT16) typedef enum STMTParamType { paramUNKNOWN = 0, // UNKNOWN (Error) paramIN = 1, // Input parameter paramOUT = 2, // Output parameter paramINOUT = 3, // Input/Output parameter paramRET = 4 // Procedure (or function) return } STMTParamType; typedef enum STMTParamFormat { paramfmtUNKNOWN = 0, // UNKNOWN (Error) paramfmtNUMBER = 1, // Numbered parameter markers of the form ? or :n paramfmtNAME = 2 // Named parameters markers of the form :name } STMTParamFormat; //============================================================================ // Properties For DbiQPrepareExt //============================================================================ #define qprepNONE 0 // like DbiQPrepare #define qprepFORUPDATE 0x1 // do extra work, anticipating UPDATE WHERE CURRENT //============================================================================ // Date, Time, Number Formats //============================================================================ typedef struct // Date Format { CHAR cDecimalSeparator; // Default "." CHAR cThousandSeparator; // Default "," INT8 iDecimalDigits; // Default 2 INT8 bLeadingZero; // Default TRUE. } FMTNumber; typedef FMTNumber far *pFMTNumber; typedef struct { CHAR szDateSeparator[4]; // Default "/" INT8 iDateMode; // 0 = MDY (Def), 1 = DMY, 2 = YMD INT8 bFourDigitYear; // Write Year as 4 digits (FALSE) INT8 bYearBiased; // On input add 1900 to year (TRUE) INT8 bMonthLeadingZero; // Month with Leading Zero (TRUE) INT8 bDayLeadingZero; // Day with Leading Zero (TRUE) } FMTDate; typedef FMTDate far *pFMTDate; typedef struct { CHAR cTimeSeparator; // Default ":" INT8 bTwelveHour; // Represent as 12 Hour time (FALSE) CHAR szAmString[6]; // Default Null (Only for 12 Hr) CHAR szPmString[6]; // Default Null (Only for 12 Hr) INT8 bSeconds; // Show Seconds (TRUE) INT8 bMilSeconds; // Show Milli Seconds (FALSE) } FMTTime; typedef FMTTime far *pFMTTime; typedef struct { BYTE iPrecision; // 1..64 considered valid BYTE iSignSpecialPlaces; // sign:1, special:1, places:6 BYTE iFraction [32]; // bcd nibbles, 00..99 per byte, high nibble 1st } FMTBcd; typedef FMTBcd far * pFMTBcd; //============================================================================ // Error Info //============================================================================ typedef struct { // Error info DBIResult iError; // Last error code returned DBIMSG szErrCode; // Error Code DBIMSG szContext1; // Context dependent info DBIMSG szContext2; // More context DBIMSG szContext3; // Even more context DBIMSG szContext4; // Yet some more context } DBIErrInfo; typedef DBIErrInfo far *pDBIErrInfo; // Error contexts (To be used with DbiGetErrorContext) #define ecTOKEN 1 // Token (For QBE) #define ecTABLENAME 3 // Table name #define ecFIELDNAME 4 // Field Name #define ecIMAGEROW 5 // Image Row (For QBE) #define ecUSERNAME 6 // eg, In lock conflicts, user involved #define ecFILENAME 7 // File Name #define ecINDEXNAME 8 // Index Name #define ecDIRNAME 9 // Directory Name #define ecKEYNAME 10 // Key Name #define ecALIAS 11 // Alias #define ecDRIVENAME 12 // Drive name ('c:') #define ecNATIVECODE 13 // Native error code #define ecNATIVEMSG 14 // Native error message #define ecLINENUMBER 15 // Line Number #define ecCAPABILITY 16 // Capability #define ecINTERNALLIMIT 17 // Internal limit //============================================================================ // Schema info structures //============================================================================ // Database descriptor //============================================================================ // DbiOpenDbList typedef struct // A given Database Description { DBINAME szName; // Logical name (Or alias) DBINAME szText; // Descriptive text DBIPATH szPhyName; // Physical name/path DBINAME szDbType; // Database type } DBDesc; typedef DBDesc far *pDBDesc; //============================================================================ // User info descriptor //============================================================================ //DbiOpenUserList() typedef struct // User description { DBIUSERNAME szUserName; UINT16 iNetSession; // Net level session number UINT16 iProductClass; // Product class of user CHAR szSerialNum[22]; // Serial number } USERDesc; typedef USERDesc far *pUSERDesc; //============================================================================ // Table descriptor //============================================================================ // DbiOpenTableList() typedef struct // Table description (Base) { DBITBLNAME szName; // Table name(No extension or Dir) DBITBLNAME szFileName; // File name DBIEXT szExt; // File extension DBINAME szType; // Driver type DBIDATE dtDate; // Date on the table TIME tmTime; // Time on the table UINT32 iSize; // Size in bytes BOOL16 bView; // If this a view } TBLBaseDesc; typedef TBLBaseDesc far *pTBLBaseDesc; typedef struct // Table description (Extended part) { DBINAME szStruct; // Physical structure UINT16 iRestrVersion; // Version # UINT16 iRecSize; // Physical record size UINT16 iFields; // Number of fields UINT16 iIndexes; // Number Indexes UINT16 iValChecks; // Number of field validity checks UINT16 iRintChecks; // Number of ref. integrity checks UINT32 iRecords; // Number of records in table BOOL16 bProtected; // If the table is prot BOOL16 bValidInfo; // Info available for this table // FALSE, if all or part of the // extended data not available. } TBLExtDesc; typedef TBLExtDesc far *pTBLExtDesc; typedef struct // Table description (Base + Ext) { TBLBaseDesc tblBase; // Base description TBLExtDesc tblExt; // Extended description } TBLFullDesc; typedef TBLFullDesc far *pTBLFullDesc; //============================================================================ // File descriptor //============================================================================ // DbiOpenFileList() typedef struct // File description { DBIPATH szFileName; // File name (No Dir or ext) DBIEXT szExt; // Extension BOOL16 bDir; // True, if directory UINT32 iSize; // File size in bytes DBIDATE dtDate; // Date on the file TIME tmTime; // Time on the file } FILEDesc; typedef FILEDesc far *pFILEDesc; //====================================================================== // Stored Procedure and Stored Procedure Param descriptor //====================================================================== typedef struct { DBISPNAME szName; DBIDATE dtDate; TIME tmTime; } SPDesc; typedef SPDesc far *pSPDesc; typedef struct { UINT16 uParamNum; DBINAME szName; STMTParamType eParamType; UINT16 uFldType; UINT16 uSubType; INT16 iUnits1; INT16 iUnits2; UINT16 uOffset; UINT16 uLen; UINT16 uNullOffset; } SPParamDesc; typedef SPParamDesc far *pSPParamDesc; //============================================================================ // Configuration Info Descriptor //============================================================================ typedef enum { cfgPersistent = 0, // Persistent only cfgSession = 1, // Session relative only cfgAll = 2 // All (union) } CFGMode; // DbiOpenCfgInfoList() typedef struct // Config description { DBINAME szNodeName; // Node name CHAR szDescription[DBIMAXSCFLDLEN]; // Node description UINT16 iDataType; // Value type CHAR szValue[DBIMAXSCFLDLEN]; // Value BOOL16 bHasSubnodes; // True, if not leaf node } CFGDesc; typedef CFGDesc far *pCFGDesc; //============================================================================ // Family descriptor //============================================================================ typedef enum // Family member types { fmlUNKNOWN = 0, fmlTABLE = 1, fmlINDEX = 2, fmlFORM = 3, fmlREPORT = 4, fmlVALCHECK = 5, fmlSECINDEX = 6, fmlSECINDEX2 = 7, fmlBLOBFILE = 8 } FMLType; typedef FMLType far *pFMLType; // DbiOpenFamilyList() typedef struct { // Family record structure DBINAME szName; // Member name (documentary) UINT16 iId; // Id (if applicable) FMLType eType; // Member type DBIPATH szFileName; // File name of member } FMLDesc; typedef FMLDesc far *pFMLDesc; //============================================================================ // Language driver descriptor //============================================================================ #define DBIOEM_CP 1 // (dos) #define DBIANSI_CP 2 // (win) #define DBIOS2_CP 3 /* UNIX etc. */ #define DBISUNOS_CP 4 #define DBIVMS_CP 5 #define DBIHPUX_CP 6 #define DBIULTRIX_CP 7 #define DBIAIX_CP 8 #define DBIAUX_CP 9 #define DBIXENIX_CP 10 #define DBIMAC_CP 11 #define DBINEXT_CP 12 // DbiOpenLdList() typedef struct // Lang Driver description { DBINAME szName; // Driver symbolic name DBINAME szDesc; // Description UINT16 iCodePage; UINT16 PrimaryCpPlatform; UINT16 AlternateCpPlatform; } LDDesc; typedef LDDesc far *pLDDesc; //============================================================================ // Lock descriptor //============================================================================ // Lock types in LOCKDesc: #define lckRECLOCK 0 // Normal Record lock (Write) #define lckRRECLOCK 1 // Special Pdox Record lock (Read) #define lckGROUPLOCK 2 // Pdox Group lock #define lckIMGAREA 3 // Pdox Image area #define lckTABLEREG 4 // Table registration/Open (No lock) #define lckTABLEREAD 5 // Table Read lock #define lckTABLEWRITE 6 // Table Write lock #define lckTABLEEXCL 7 // Table Exclusive lock #define lckUNKNOWN 9 // Unknown lock // DbiOpenLockList() typedef struct // Lock Description { UINT16 iType; // Lock type (0 for rec lock) DBIUSERNAME szUserName; // Lock owner UINT16 iNetSession; // Net level Session number UINT16 iSession; // Idapi session#, if our lock UINT32 iRecNum; // If a record lock UINT16 iInfo; // Info for table locks } LOCKDesc; typedef LOCKDesc far *pLOCKDesc; //============================================================================ // Filter description //============================================================================ typedef enum { // Relational operators. canNOTDEFINED = 0, // (*) canISBLANK, // CANUnary; is operand blank. (*) canNOTBLANK, // CANUnary; is operand not blank. (*) canEQ, // CANBinary, CANCompare; equal. (*) canNE, // CANBinary; NOT equal. (*) canGT, // CANBinary; greater than. (*) canLT, // CANBinary; less than. (*) canGE, // CANBinary; greater or equal. (*) canLE, // CANBinary; less or equal. (*) // Logical operators. canNOT, // CANUnary; NOT (*) canAND, // CANBinary; AND (*) canOR, // CANBinary; OR (*) // Operators identifing leaf operands. canTUPLE, // CANUnary; Entire record is operand. canFIELD, // CANUnary; operand is field (*) canCONST, // CANUnary; operand is constant (*) // Arithmetic operators. canMINUS, // CANUnary; minus. canADD, // CANBinary; addition. canSUB, // CANBinary; subtraction. canMUL, // CANBinary; multiplication. canDIV, // CANBinary; division. canMOD, // CANBinary; modulo division. canREM, // CANBinary; remainder of division. // Aggregate type operators. canSUM, // CANBinary, accumulate sum of. canCOUNT, // CANBinary, accumulate count of. canMIN, // CANBinary, find minimum of. canMAX, // CANBinary, find maximum of. canAVG, // CANBinary, find average of. // Miscellaneous operators. canCONT, // CANBinary; provides a link between two // expression subtrees of a tree. canUDF, // CANBinary; invokes a User defined fn canCONTINUE, // CANUnary; Stops evaluating records // when operand evaluates to false (forward sequential access only) canLIKE // CANCompare, extended binary compare (*) } CANOp; typedef CANOp far *pCANOp; typedef enum { // Node Class nodeNULL = 0, // Null node (*) nodeUNARY, // Node is a unary (*) nodeBINARY, // Node is a binary (*) nodeCOMPARE, // Node is a compare (*) nodeFIELD, // Node is a field (*) nodeCONST, // Node is a constant (*) nodeTUPLE, // Node is a record nodeCONTINUE, // Node is a continue node (*) nodeUDF // Node is a UDF node } NODEClass; // NODE definitions including misc data structures //------------------------------------------------- typedef struct { // Header part common to all (*) NODEClass nodeClass; CANOp canOp; } CANHdr; typedef CANHdr far *pCANHdr; typedef struct { // Unary Node (*) NODEClass nodeClass; CANOp canOp; UINT16 iOperand1; // Byte offset of Operand node } CANUnary; typedef CANUnary far * pCANUnary; typedef struct { // Binary Node (*) NODEClass nodeClass; CANOp canOp; UINT16 iOperand1; // Byte offset of Op1 UINT16 iOperand2; // Byte offset of Op2 } CANBinary; typedef CANBinary far * pCANBinary; typedef struct { // Field NODEClass nodeClass; CANOp canOp; UINT16 iFieldNum; UINT16 iNameOffset; // Name offset in Literal pool } CANField; typedef CANField far * pCANField; typedef struct { // Constant NODEClass nodeClass; CANOp canOp; UINT16 iType; // Constant type. UINT16 iSize; // Constant size. (in bytes) UINT16 iOffset; // Offset in the literal pool. } CANConst; typedef CANConst far * pCANConst; typedef struct { // Tuple (record) NODEClass nodeClass; CANOp canOp; UINT16 iSize; // Record size. (in bytes) } CANTuple; typedef CANTuple far * pCANTuple; typedef struct { // Break Node (*) NODEClass nodeClass; CANOp canOp; UINT16 iContOperand; // Continue if operand is true. // else stop evaluating records. } CANContinue; typedef CANContinue far * pCANContinue; typedef struct { // Extended compare Node (text fields) (*) NODEClass nodeClass; CANOp canOp; // canLIKE, canEQ BOOL16 bCaseInsensitive; // 3 val: UNKNOWN = "fastest", "native" UINT16 iPartialLen; // Partial fieldlength (0 is full length) UINT16 iOperand1; // Byte offset of Op1 UINT16 iOperand2; // Byte offset of Op2 } CANCompare; typedef CANCompare far * pCANCompare; //This is the node to be used to pass User defined functions #define iLangSQL 0 // Common SQL dialect #define iDbaseExpr 2 // This is also the driver ID for dBASE typedef struct { // A user defined function NODEClass nodeClass; CANOp canOp; UINT16 iOffSzFuncName; // Offset in literal pool to Function Name string(0 terminated) UINT16 iOperands; // Byte offset of Operands (concatenated using canCONT) //The fields below are hints that specific drivers can make use of UINT16 iDrvDialect; // Driver Dialect ID for UDF string supplied UINT16 iOffSzUDF; // Offset in literal pool to UDF string (0 terminated) } CANUdf; typedef CANUdf far * pCANUdf; #if !defined(MIDL) typedef union { CANHdr canHdr; CANUnary canUnary; CANBinary canBinary; CANField canField; CANConst canConst; CANTuple canTuple; CANContinue canContinue; CANCompare canCompare; } CANNode; typedef CANNode far *pCANNode; #endif // !defined(MIDL) // Linear exression tree //---------------------- # define CANEXPRVERSION 2 typedef struct { // Expression Tree UINT16 iVer; // Version tag of expression. UINT16 iTotalSize; // Size of this structure UINT16 iNodes; // Number of nodes UINT16 iNodeStart; // Starting offet of Nodes in this UINT16 iLiteralStart; // Starting offset of Literals in this // Nodes and Literals are here } CANExpr; typedef CANExpr far * pCANExpr; typedef pCANExpr far *ppCANExpr; //pfGENFilter returns TRUE, FALSE or ABORT #define ABORT -2 #if !defined(MIDL) typedef INT16 (DBIFN * pfGENFilter) ( UINT32 ulClientData, pBYTE pRecBuf, UINT32 iPhyRecNum ) ; #endif // !defined(MIDL) typedef UINT32 hDBIFilter ; typedef hDBIFilter far *phDBIFilter ; #if !defined(MIDL) typedef struct { UINT16 iFilterId; // Id for filter hDBIFilter hFilter; // Filter handle UINT32 iClientData; // Client supplied data UINT16 iPriority; // 1..N with 1 being highest BOOL16 bCanAbort; // TRUE : pfFilter can return ABORT pfGENFilter pfFilter; // Client filter function pVOID pCanExpr; // Supplied expression BOOL16 bActive ; // TRUE : filter is active } FILTERInfo; typedef FILTERInfo far *pFILTERInfo; #endif // !defined(MIDL) #ifndef NODBIQBE //--------------------------------------------------------------------------- // DBI Query related types //--------------------------------------------------------------------------- #define MAXQBEEXPRSIZE 300 // size of one QBE expr typedef struct _DBIQryProp { DBINAME szQryName; // Name of query DBIQryLang eLang; // Language INT16 iQryPrice; // Query price 1..100 (1 = cheap, 100 = expensive) INT16 iNumTables; // Number of tables in join. 0 = unknown. BOOL16 bHasAnswer; BOOL16 bInsert; BOOL16 bDelete; BOOL16 bChange; } DBIQryProp, far *pDBIQryProp; #define DBIQBE_ANSWERBIT (0x1) // Answer table bit flag #define DBIQBE_INSERTEDBIT (0x2) // Inserted table bit flag #define DBIQBE_DELETEDBIT (0x4) // Deleted table bit flag #define DBIQBE_CHANGEDBIT (0x8) // Changed table bit flag #define DBIQBE_ERRORINSBIT (0x10) // Error inserted table bit flag #define DBIQBE_ERRORDELBIT (0x20) // Error deleted table bit flag #define DBIQBE_ERRORCHGBIT (0x40) // Error changed table bit flag // answer cursor properties: #define bAnsHasLiveFields 0x1 #define bAnsHasFilter 0x2 #define bAnsHasFieldMap 0x4 #define bAnsHasCalcField 0x8 #define bAnsHasLiveBlob 0x10 // answer field properties: #define bIsAnsFieldLive 0x1 typedef enum { dbiqryDEFAULT = 0, dbiqryDIRTY = 1, dbiqryCLEAN = 2, dbiqryRESTART = 3 } DBIQryType, far *pDBIQryType; //--------------------------------------------------------------------------- typedef struct { UINT16 stepsInQry; // Total steps in query. UINT16 stepsCompleted; // Steps completed out of total (steps may be skipped). UINT32 totElemInStep; // Total elements in current step. UINT32 elemCompleted; // Elements completed in current step. } DBIQryProgress, far *pDBIQryProgress; typedef enum { qryModeNONE = 0, // Reserved qryModeLOCAL = 1, qryModeSERVER = 2, qryModeEITHER = 3, qryModeNOWLOCAL = 4 // used only in call back, when failed on server } QryEvalMode; // values for client indicating live/canned preference about query execution typedef enum { wantDEFAULT = 0, // Default , same as wantCANNED wantLIVE = 1, // Want live data even if extra effort (no guarantee) wantCANNED = 2, // Want canned data even if extra effort (guaranteed) wantSPEED = 3 // Let query manager decide, find out afterwards } LIVENESS; typedef struct { INT16 length; // Length in bytes of this structure BOOL16 blankzeroes; // TRUE if blanks to be regarded as zeros FMTDate dateFormat; // Date format FMTNumber numberFormat; // Number format BOOL16 bNeedAuxTbls; // If FALSE, don't bother with DELETED/ERRDEL, etc. QryEvalMode qryMode; // qryModeSERVER, qryModeLOCAL or qryModeEITHER. BOOL16 perQrySqlMode; LIVENESS livenessDesired; } QueryLowProps, far *pQueryLowProps; #endif // NODBIQBE #endif // NODBITYPES #ifndef NODBISYMBOLS //======================================================================================= // DBI symbols //======================================================================================= # define DBIMOD_BEGIN (0x3F00U) # define DBIMOD_QBE (DBIMOD_BEGIN + 1) # define DBIMOD_SQLG (DBIMOD_BEGIN + 2) # define DBIMOD_LEGO (DBIMOD_BEGIN + 3) # define DBIMOD_LOCKMNGR (DBIMOD_BEGIN + 4) # define DBIMOD_SQLDRIVER (DBIMOD_BEGIN + 5) # define DBIMOD_OS (DBIMOD_BEGIN + 6) # define DBIMOD_DBASEDRV (DBIMOD_BEGIN + 7) # define DBIMOD_END (DBIMOD_BEGIN + 8) //--------------------------------------------------------------------------- # define DBISYM_BEGIN (DBIMOD_END + 1) # define DBISYM_TOKEN (DBISYM_BEGIN + ecTOKEN) # define DBISYM_TABLENAME (DBISYM_BEGIN + ecTABLENAME) # define DBISYM_FIELDNAME (DBISYM_BEGIN + ecFIELDNAME) # define DBISYM_IMAGEROW (DBISYM_BEGIN + ecIMAGEROW) # define DBISYM_USERNAME (DBISYM_BEGIN + ecUSERNAME) # define DBISYM_FILENAME (DBISYM_BEGIN + ecFILENAME) # define DBISYM_INDEXNAME (DBISYM_BEGIN + ecINDEXNAME) # define DBISYM_DIRNAME (DBISYM_BEGIN + ecDIRNAME) # define DBISYM_KEYNAME (DBISYM_BEGIN + ecKEYNAME) # define DBISYM_ALIAS (DBISYM_BEGIN + ecALIAS) # define DBISYM_DRIVENAME (DBISYM_BEGIN + ecDRIVENAME) # define DBISYM_NATIVECODE (DBISYM_BEGIN + ecNATIVECODE) # define DBISYM_NATIVEMSG (DBISYM_BEGIN + ecNATIVEMSG) # define DBISYM_LINENUMBER (DBISYM_BEGIN + ecLINENUMBER) # define DBISYM_CAPABILITY (DBISYM_BEGIN + ecCAPABILITY) # define DBISYM_INTERNALLIMIT (DBISYM_BEGIN + ecINTERNALLIMIT) # define DBISYM_BASEEND (DBISYM_BEGIN + 100) //----------------------------------------------------------------------------- # define DBISYM_MISC (DBISYM_BASEEND + 1) # define DBISYM_WORK (DBISYM_MISC + 1) # define DBISYM_PRIV (DBISYM_MISC + 2) # define DBISYM_COPY (DBISYM_MISC + 3) # define DBISYM_APPEND (DBISYM_MISC + 4) # define DBISYM_END (DBIMOD_BEGIN + 0x3FFF) //======================================================================================= // DBI Config symbols //======================================================================================= // Categories #define szCFGSYSTEM "SYSTEM" #define szCFGDRIVER "DRIVERS" #define szCFGDATABASE "DATABASES" //-------------------------------------------------------------------------- // System Fields //-------------------------------------------------------------------------- #define szCFGSYSVERSION "VERSION" #define szCFGSYSNETTYPE "NET TYPE" #define szCFGSYSNETDIR "NET DIR" #define szCFGSYSLOCALSHARE "LOCAL SHARE" #define szCFGSYSLANGDRV "LANGDRIVER" #define szCFGSYSLANGDRVDIR "LANGDRVDIR" #define szCFGSYSMINBUF "MINBUFSIZE" #define szCFGSYSMAXBUF "MAXBUFSIZE" #define szCFGSYSLOCKRETRY "LOCKRETRY" #define szCFGSYSFLAGS "SYSFLAGS" #define szCFGMAXFILEHANDLES "MAXFILEHANDLES" #define szCFGSQLQRYMODE "SQLQRYMODE" #define szCFGLOWMEMLIMIT "LOW MEMORY USAGE LIMIT" // Use this instead of NOLOWMEMBUF #define szCFGSYSODBCCFGIMPORT "AUTO ODBC" #define szCFGSYSDEFDRV "DEFAULT DRIVER" //-------------------------------------------------------------------------- // Driver Fields //-------------------------------------------------------------------------- #define szCFGDRVVERSION "VERSION" #define szCFGDRVTYPE "TYPE" #define szCFGDRVDLL "DLL" #define szCFGDRVDLL32 "DLL32" #define szCFGDRVFLAGS "DRIVER FLAGS" #define szCFGDRVLANGDRIVER "LANGDRIVER" #define szCFGDRVFILLFACTOR "FILL FACTOR" #define szCFGDRVBLOCKSIZE "BLOCK SIZE" #define szCFGDRVLOCKPROTOCOL "LOCKPROTOCOL" #define szCFGDRVLEVEL "LEVEL" #define szCFGDRVVENDINIT "VENDOR INIT" //-------------------------------------------------------------------------- // Dbase Driver fields //-------------------------------------------------------------------------- #define szCFGDRVMEMOBLOCKSIZE "MEMO FILE BLOCK SIZE" #define szCFGDRVMDXBLOCKSIZE "MDX BLOCK SIZE" //-------------------------------------------------------------------------- // Driver Nodes //-------------------------------------------------------------------------- #define szCFGDRVINIT "INIT" #define szCFGDBCREATE "DB CREATE" #define szCFGDBOPEN "DB OPEN" #define szCFGTBLCREATE "TABLE CREATE" #define szCFGTBLOPEN "TABLE OPEN" //-------------------------------------------------------------------------- // Database Nodes //-------------------------------------------------------------------------- #define szCFGDBINFO "DB INFO" //-------------------------------------------------------------------------- // Database fields //-------------------------------------------------------------------------- #define szCFGDBTYPE "TYPE" #define szCFGDBPATH "PATH" #define szCFGDBDEFAULTDRIVER "DEFAULT DRIVER" //-------------------------------------------------------------------------- // Others //-------------------------------------------------------------------------- #define szCFGINIT "INIT" #define szTYPE "TYPE" #define szCFGDBSTANDARD "STANDARD" #define szCFGTRUE "TRUE" #define szCFGFALSE "FALSE" #define szOPENMODE "OPEN MODE" #define szREADWRITE "READ/WRITE" #define szREADONLY "READ ONLY" #define szSHAREMODE "SHARE MODE" #define szEXCLUSIVE "EXCLUSIVE" #define szSHARED "SHARED" #define szUSERNAME "USER NAME" #define szSERVERNAME "SERVER NAME" #define szDATABASENAME "DATABASE NAME" #define szSCHEMASIZE "SCHEMA CACHE SIZE" #define szCFGSTRICTINTEGRITY "STRICTINTEGRTY" #define szSQLPASSMODE "SQLPASSTHRU MODE" #define szNOTSHARED "NOT SHARED" #define szSHAREDAUTOCOMMIT "SHARED AUTOCOMMIT" #define szSHAREDNOAUTOCOMMIT "SHARED NOAUTOCOMMIT" #define szSCHEMATIME "SCHEMA CACHE TIME" #define szMAXQUERYTIME "MAX QUERY TIME" //-------------------------------------------------------------------------- // SYSTEM DATE/TIME/NUMBER FORMATS // SYSTEM nodes: //-------------------------------------------------------------------------- #define szCFGFORMAT "FORMATS" //-------------------------------------------------------------------------- // Format nodes: //-------------------------------------------------------------------------- #define szCFGDATE "DATE" #define szCFGTIME "TIME" #define szCFGNUMBER "NUMBER" //-------------------------------------------------------------------------- // DATE and/or TIME fields: //-------------------------------------------------------------------------- #define szCFGSEPARATOR "SEPARATOR" #define szCFGMODE "MODE" #define szCFGFOURDIGITYEAR "FOURDIGITYEAR" #define szCFGYEARBIASED "YEARBIASED" #define szCFGLEADINGZEROM "LEADINGZEROM" #define szCFGLEADINGZEROD "LEADINGZEROD" #define szCFGTWELVEHOUR "TWELVEHOUR" #define szCFGAMSTRING "AMSTRING" #define szCFGPMSTRING "PMSTRING" #define szCFGSECONDS "SECONDS" #define szCFGMILSECONDS "MILSECONDS" //-------------------------------------------------------------------------- // Number fields: //-------------------------------------------------------------------------- #define szCFGDECIMALSEPARATOR "DECIMALSEPARATOR" #define szCFGTHOUSANDSEPARATOR "THOUSANDSEPARATOR" #define szCFGDECIMALDIGITS "DECIMALDIGITS" #define szCFGLEADINGZERON "LEADINGZERON" // String resoure id's for each string listed above #define DBICFG_BASE 0x3A00 //-------------------------------------------------------------------------- // Categories //-------------------------------------------------------------------------- #define iCFGSYSTEM (DBICFG_BASE + 1) #define iCFGDRIVER (DBICFG_BASE + 2) #define iCFGDATABASE (DBICFG_BASE + 3) //-------------------------------------------------------------------------- // System Fields //-------------------------------------------------------------------------- #define iCFGSYSVERSION (DBICFG_BASE + 5) #define iCFGSYSNETTYPE (DBICFG_BASE + 6) #define iCFGSYSNETDIR (DBICFG_BASE + 7) #define iCFGSYSLOCALSHARE (DBICFG_BASE + 8) #define iCFGSYSLANGDRV (DBICFG_BASE + 9) #define iCFGSYSLANGDRVDIR (DBICFG_BASE + 10) #define iCFGSYSMINBUF (DBICFG_BASE + 11) #define iCFGSYSMAXBUF (DBICFG_BASE + 12) #define iCFGSYSLOCKRETRY (DBICFG_BASE + 13) #define iCFGSYSFLAGS (DBICFG_BASE + 14) #define iCFGMAXFILEHANDLES (DBICFG_BASE + 15) #define iCFGSQLQRYMODE (DBICFG_BASE + 16) #define iCFGLOWMEMLIMIT (DBICFG_BASE + 17) #define iCFGSYSODBCCFGIMPORT (DBICFG_BASE + 18) #define iCFGSYSDEFDRV (DBICFG_BASE + 19) //-------------------------------------------------------------------------- // Driver Fields //-------------------------------------------------------------------------- #define iCFGDRVVERSION (DBICFG_BASE + 20) #define iCFGDRVTYPE (DBICFG_BASE + 21) #define iCFGDRVLANGDRIVER (DBICFG_BASE + 22) #define iCFGDRVFILLFACTOR (DBICFG_BASE + 23) #define iCFGDRVBLOCKSIZE (DBICFG_BASE + 24) #define iCFGDRVLOCKPROTOCOL (DBICFG_BASE + 25) #define iCFGDRVLEVEL (DBICFG_BASE + 26) #define iCFGDRVFLAGS (DBICFG_BASE + 27) //-------------------------------------------------------------------------- // Dbase Driver fields //-------------------------------------------------------------------------- #define iCFGDRVMEMOBLOCKSIZE (DBICFG_BASE + 30 ) #define iCFGDRVMDXBLOCKSIZE (DBICFG_BASE + 31 ) //-------------------------------------------------------------------------- // Driver Nodes //-------------------------------------------------------------------------- #define iCFGDRVINIT (DBICFG_BASE + 40 ) #define iCFGDBCREATE (DBICFG_BASE + 41 ) #define iCFGDBOPEN (DBICFG_BASE + 42 ) #define iCFGTBLCREATE (DBICFG_BASE + 43 ) #define iCFGTBLOPEN (DBICFG_BASE + 44 ) //-------------------------------------------------------------------------- // Database Nodes //-------------------------------------------------------------------------- #define iCFGDBINFO (DBICFG_BASE + 50 ) //-------------------------------------------------------------------------- // Database fields //-------------------------------------------------------------------------- #define iCFGDBTYPE (DBICFG_BASE + 60) #define iCFGDBPATH (DBICFG_BASE + 61) #define iCFGDBDEFAULTDRIVER (DBICFG_BASE + 62) //-------------------------------------------------------------------------- // Others //-------------------------------------------------------------------------- #define iCFGINIT (DBICFG_BASE + 70) #define iTYPE (DBICFG_BASE + 71) #define iCFGDBSTANDARD (DBICFG_BASE + 72) #define iCFGTRUE (DBICFG_BASE + 73) #define iCFGFALSE (DBICFG_BASE + 74) #define iOPENMODE (DBICFG_BASE + 75) #define iREADWRITE (DBICFG_BASE + 76) #define iREADONLY (DBICFG_BASE + 77) #define iSHAREMODE (DBICFG_BASE + 78) #define iEXCLUSIVE (DBICFG_BASE + 79) #define iSHARED (DBICFG_BASE + 80) #define iUSERNAME (DBICFG_BASE + 81) #define iSERVERNAME (DBICFG_BASE + 82) #define iDATABASENAME (DBICFG_BASE + 83) #define iSCHEMASIZE (DBICFG_BASE + 84) #define iCFGSTRICTINTEGRITY (DBICFG_BASE + 85) //-------------------------------------------------------------------------- // System node: //-------------------------------------------------------------------------- #define iCFGFORMAT (DBICFG_BASE + 130) //-------------------------------------------------------------------------- // Format nodes: //-------------------------------------------------------------------------- #define iCFGDATE (DBICFG_BASE + 131) #define iCFGTIME (DBICFG_BASE + 132) #define iCFGNUMBER (DBICFG_BASE + 133) //-------------------------------------------------------------------------- // DATE and/or TIME fields: //-------------------------------------------------------------------------- #define iCFGSEPARATOR (DBICFG_BASE + 140) #define iCFGMODE (DBICFG_BASE + 141) #define iCFGFOURDIGITYEAR (DBICFG_BASE + 142) #define iCFGYEARBIASED (DBICFG_BASE + 143) #define iCFGLEADINGZEROM (DBICFG_BASE + 144) #define iCFGLEADINGZEROD (DBICFG_BASE + 145) #define iCFGTWELVEHOUR (DBICFG_BASE + 146) #define iCFGAMSTRING (DBICFG_BASE + 147) #define iCFGPMSTRING (DBICFG_BASE + 148) #define iCFGSECONDS (DBICFG_BASE + 149) #define iCFGMILSECONDS (DBICFG_BASE + 150) //-------------------------------------------------------------------------- // Number fields: //-------------------------------------------------------------------------- #define iCFGDECIMALSEPARATOR (DBICFG_BASE + 160) #define iCFGTHOUSANDSEPARATOR (DBICFG_BASE + 161) #define iCFGDECIMALDIGITS (DBICFG_BASE + 162) #define iCFGLEADINGZERON (DBICFG_BASE + 163) #define iCFGDEFLANGDRV (DBICFG_BASE + 165) #define iCFGDBASEDEFLANGDRV (DBICFG_BASE + 166) //-------------------------------------------------------------------------- //Formats //-------------------------------------------------------------------------- #define iCFGDEFSEPARATOR (DBICFG_BASE + 170) #define iCFGDEFMODE (DBICFG_BASE + 171) #define iCFGDEFFOURDIGITYEAR (DBICFG_BASE + 172) #define iCFGDEFYEARBIASED (DBICFG_BASE + 173) #define iCFGDEFLEADINGZEROM (DBICFG_BASE + 174) #define iCFGDEFLEADINGZEROD (DBICFG_BASE + 175) #define iCFGDEFTWELVEHOUR (DBICFG_BASE + 176) #define iCFGDEFAMSTRING (DBICFG_BASE + 177) #define iCFGDEFPMSTRING (DBICFG_BASE + 178) #define iCFGDEFSECONDS (DBICFG_BASE + 179) #define iCFGDEFMILSECONDS (DBICFG_BASE + 180) #define iCFGDEFDECIMALSEPARATOR (DBICFG_BASE + 181) #define iCFGDEFTHOUSANDSEPARATOR (DBICFG_BASE + 182) #define iCFGDEFLEADINGZERO (DBICFG_BASE + 183) // Categories extern const char far SZCFGSYSTEM[]; extern const char far SZCFGDRIVER[]; extern const char far SZCFGDATABASE[]; // System Fields extern const char far SZCFGSYSVERSION[]; extern const char far SZCFGSYSNETTYPE[]; extern const char far SZCFGSYSNETDIR[]; extern const char far SZCFGSYSLOCALSHARE[]; extern const char far SZCFGSYSLANGDRV[]; extern const char far SZCFGSYSLANGDRVDIR[]; extern const char far SZCFGSYSMINBUF[]; extern const char far SZCFGSYSMAXBUF[]; extern const char far SZCFGSYSLOCKRETRY[]; extern const char far SZCFGSYSFLAGS[]; extern const char far SZCFGMAXFILEHANDLES[]; extern const char far SZCFGSQLQRYMODE[]; extern const char far SZCFGLOWMEMLIMIT[]; extern const char far SZCFGSYSODBCCFGIMPORT[]; // Driver Fields extern const char far SZCFGDRVVERSION[]; extern const char far SZCFGDRVTYPE[]; extern const char far SZCFGDRVDLL[]; extern const char far SZCFGDRVDLL32[]; extern const char far SZCFGDRVFLAGS[]; extern const char far SZCFGDRVLANGDRIVER[]; extern const char far SZCFGDRVFILLFACTOR[]; extern const char far SZCFGDRVBLOCKSIZE[]; extern const char far SZCFGDRVLOCKPROTOCOL[]; extern const char far SZCFGDRVLEVEL[]; // Dbase Driver fields extern const char far SZCFGDRVMEMOBLOCKSIZE[]; extern const char far SZCFGDRVMDXBLOCKSIZE[]; // Driver Nodes extern const char far SZCFGDRVINIT[]; extern const char far SZCFGDBCREATE[]; extern const char far SZCFGDBOPEN[]; extern const char far SZCFGTBLCREATE[]; extern const char far SZCFGTBLOPEN[]; // Database Nodes extern const char far SZCFGDBINFO[]; // Database fields extern const char far SZCFGDBTYPE[]; extern const char far SZCFGDBPATH[]; extern const char far SZCFGDBDEFAULTDRIVER[]; // Others extern const char far SZCFGINIT[]; extern const char far SZTYPE[]; extern const char far SZCFGDBSTANDARD[]; extern const char far SZCFGTRUE[]; extern const char far SZCFGFALSE[]; extern const char far SZOPENMODE[]; extern const char far SZREADWRITE[]; extern const char far SZREADONLY[]; extern const char far SZSHAREMODE[]; extern const char far SZEXCLUSIVE[]; extern const char far SZSHARED[]; extern const char far SZUSERNAME[]; extern const char far SZSERVERNAME[]; extern const char far SZDATABASENAME[]; extern const char far SZSCHEMASIZE[]; extern const char far SZCFGSTRICTINTEGRITY[]; // SYSTEM DATE/TIME/NUMBER FORMATS // SYSTEM nodes: extern const char far SZCFGFORMAT[]; // Format nodes: extern const char far SZCFGDATE[]; extern const char far SZCFGTIME[]; extern const char far SZCFGNUMBER[]; // DATE and/or TIME fields: extern const char far SZCFGSEPARATOR[]; extern const char far SZCFGMODE[]; extern const char far SZCFGFOURDIGITYEAR[]; extern const char far SZCFGYEARBIASED[]; extern const char far SZCFGLEADINGZEROM[]; extern const char far SZCFGLEADINGZEROD[]; extern const char far SZCFGTWELVEHOUR[]; extern const char far SZCFGAMSTRING[]; extern const char far SZCFGPMSTRING[]; extern const char far SZCFGSECONDS[]; extern const char far SZCFGMILSECONDS[]; // Number fields: extern const char far SZCFGDECIMALSEPARATOR[]; extern const char far SZCFGTHOUSANDSEPARATOR[]; extern const char far SZCFGDECIMALDIGITS[]; extern const char far SZCFGLEADINGZERON[]; extern const char far SZCFGDEFLANGDRV[]; extern const char far SZCFGDBASEDEFLANGDRV[]; extern const char far SZCFGDEFSEPARATOR[]; extern const char far SZCFGDEFMODE[]; extern const char far SZCFGDEFFOURDIGITYEAR[]; extern const char far SZCFGDEFYEARBIASED[]; extern const char far SZCFGDEFLEADINGZEROM[]; extern const char far SZCFGDEFLEADINGZEROD[]; extern const char far SZCFGDEFTWELVEHOUR[]; extern const char far SZCFGDEFAMSTRING[]; extern const char far SZCFGDEFPMSTRING[]; extern const char far SZCFGDEFSECONDS[]; extern const char far SZCFGDEFMILSECONDS[]; extern const char far SZCFGDEFDECIMALSEPARATOR[]; extern const char far SZCFGDEFTHOUSANDSEPARATOR[]; extern const char far SZCFGDEFLEADINGZERO[]; #endif // NODBISYMBOLS #ifndef NODBIERRS #define ErrCat(rslt) ((UINT16)(rslt) >> 8) #define ErrCode(rslt) ((UINT16)(rslt) & 0x00FF) //============================================================================ // Error Categories //============================================================================ #define ERRCAT_NONE 0 // 0 No error #define ERRCAT_SYSTEM 0x21 // 33 System related (Fatal Error) #define ERRCAT_NOTFOUND 0x22 // 34 Object of interest Not Found #define ERRCAT_DATACORRUPT 0x23 // 35 Physical Data Corruption #define ERRCAT_IO 0x24 // 36 I/O related error #define ERRCAT_LIMIT 0x25 // 37 Resource or Limit error #define ERRCAT_INTEGRITY 0x26 // 38 Integrity Violation #define ERRCAT_INVALIDREQ 0x27 // 39 Invalid Request #define ERRCAT_LOCKCONFLICT 0x28 // 40 Locking/Contention related #define ERRCAT_SECURITY 0x29 // 41 Access Violation - Security related #define ERRCAT_INVALIDCONTEXT 0x2A // 42 Invalid context #define ERRCAT_OS 0x2B // 43 Os Error not handled by Idapi #define ERRCAT_NETWORK 0x2C // 44 Network related #define ERRCAT_OPTPARAM 0x2D // 45 Optional parameter related #define ERRCAT_QUERY 0x2E // 46 Query related #define ERRCAT_VERSION 0x2F // 47 Version Mismatch Category #define ERRCAT_CAPABILITY 0x30 // 48 Capability not supported #define ERRCAT_CONFIG 0x31 // 49 System configuration error #define ERRCAT_WARNING 0x32 // 50 #define ERRCAT_OTHER 0x33 // 51 Miscellaneous #define ERRCAT_COMPATIBILITY 0x34 // 52 Compatibility related #define ERRCAT_DRIVER 0x3E // 62 Driver related #define ERRCAT_RC 0x3F // 63 Internal #define ERRBASE_NONE 0 // No error #define ERRBASE_SYSTEM 0x2100 // System related (Fatal Error) #define ERRBASE_NOTFOUND 0x2200 // Object of interest Not Found #define ERRBASE_DATACORRUPT 0x2300 // Physical Data Corruption #define ERRBASE_IO 0x2400 // I/O related error #define ERRBASE_LIMIT 0x2500 // Resource or Limit error #define ERRBASE_INTEGRITY 0x2600 // Integrity Violation #define ERRBASE_INVALIDREQ 0x2700 // Invalid Request #define ERRBASE_LOCKCONFLICT 0x2800 // Locking/Contention related #define ERRBASE_SEC 0x2900 // Access Violation - Security related #define ERRBASE_IC 0x2A00 // Invalid context #define ERRBASE_OS 0x2B00 // Os Error not handled by Idapi #define ERRBASE_NETWORK 0x2C00 // Network related #define ERRBASE_OPTPARAM 0x2D00 // Optional Parameter related #define ERRBASE_QUERY 0x2E00 // Query related #define ERRBASE_VERSION 0x2F00 // Version Mismatch Category #define ERRBASE_CAPABILITY 0x3000 // Capability not supported #define ERRBASE_CONFIG 0x3100 // System configuration error #define ERRBASE_WARNING 0x3200 // #define ERRBASE_OTHER 0x3300 // Miscellaneous #define ERRBASE_COMPATIBILITY 0x3400 // Compatibility related #define ERRBASE_DRIVER 0x3E00 // Driver related #define ERRBASE_RC 0x3F00 // Internal //============================================================================= // Error Codes By Category //============================================================================= // ERRCAT_NONE (0) // =========== #define ERRCODE_NONE 0 #define DBIERR_NONE (ERRBASE_NONE + ERRCODE_NONE) // ERRCAT_SYSTEM // ============= #define ERRCODE_SYSFILEOPEN 1 // Cannot open a system file #define ERRCODE_SYSFILEIO 2 // I/O error on a system file #define ERRCODE_SYSCORRUPT 3 // Data structure corruption #define ERRCODE_NOCONFIGFILE 4 // Cannot find config file #define ERRCODE_CFGCANNOTWRITE 5 // Cannot write config file (READONLY) #define ERRCODE_CFGMULTIFILE 6 // Initializing with different ini file #define ERRCODE_REENTERED 7 // System has been illegally re-entered #define ERRCODE_CANTFINDODAPI 8 // Cannot locate ODAPIxx.DLL #define ERRCODE_CANTLOADODAPI 9 // Cannot load ODAPIxx.DLL #define ERRCODE_CANTLOADLIBRARY 10 // Cannot load a service DLL #define DBIERR_SYSFILEOPEN (ERRBASE_SYSTEM + ERRCODE_SYSFILEOPEN) #define DBIERR_SYSFILEIO (ERRBASE_SYSTEM + ERRCODE_SYSFILEIO) #define DBIERR_SYSCORRUPT (ERRBASE_SYSTEM + ERRCODE_SYSCORRUPT) #define DBIERR_NOCONFIGFILE (ERRBASE_SYSTEM + ERRCODE_NOCONFIGFILE) #define DBIERR_CFGCANNOTWRITE (ERRBASE_SYSTEM + ERRCODE_CFGCANNOTWRITE) #define DBIERR_CFGMULTIFILE (ERRBASE_SYSTEM + ERRCODE_CFGMULTIFILE) #define DBIERR_REENTERED (ERRBASE_SYSTEM + ERRCODE_REENTERED) #define DBIERR_CANTFINDODAPI (ERRBASE_SYSTEM + ERRCODE_CANTFINDODAPI) #define DBIERR_CANTLOADODAPI (ERRBASE_SYSTEM + ERRCODE_CANTLOADODAPI) #define DBIERR_CANTLOADLIBRARY (ERRBASE_SYSTEM + ERRCODE_CANTLOADLIBRARY) // ERRCAT_NOTFOUND // =============== #define ERRCODE_BOF 1 // Beginning of Virtual table #define ERRCODE_EOF 2 // End of Virtual table #define ERRCODE_RECMOVED 3 // Fly-away #define ERRCODE_KEYORRECDELETED 4 // Record Deleted/Key Modified #define ERRCODE_NOCURRREC 5 // No current record #define ERRCODE_RECNOTFOUND 6 // Record was not found #define ERRCODE_ENDOFBLOB 7 // End of Blob reached #define ERRCODE_OBJNOTFOUND 8 // Generic Not found #define ERRCODE_FMLMEMBERNOTFOUND 9 // Family member not found #define ERRCODE_BLOBFILEMISSING 10 // 0x0a Blob file for table is missing #define ERRCODE_LDNOTFOUND 11 // 0x0b Language driver not found #define DBIERR_BOF (ERRBASE_NOTFOUND + ERRCODE_BOF) #define DBIERR_EOF (ERRBASE_NOTFOUND + ERRCODE_EOF) #define DBIERR_RECMOVED (ERRBASE_NOTFOUND + ERRCODE_RECMOVED) #define DBIERR_RECDELETED (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED) #define DBIERR_KEYORRECDELETED (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED) #define DBIERR_NOCURRREC (ERRBASE_NOTFOUND + ERRCODE_NOCURRREC) #define DBIERR_RECNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_RECNOTFOUND) #define DBIERR_ENDOFBLOB (ERRBASE_NOTFOUND + ERRCODE_ENDOFBLOB) #define DBIERR_OBJNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_OBJNOTFOUND) #define DBIERR_FMLMEMBERNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_FMLMEMBERNOTFOUND) #define DBIERR_BLOBFILEMISSING (ERRBASE_NOTFOUND + ERRCODE_BLOBFILEMISSING) #define DBIERR_LDNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_LDNOTFOUND) // ERRCAT_DATACORRUPT // ================== #define ERRCODE_HEADERCORRUPT 1 // Corrupt Header #define ERRCODE_FILECORRUPT 2 // File corrupt - other than header #define ERRCODE_MEMOCORRUPT 3 // Memo file corrupted #define ERRCODE_BMPCORRUPT 4 // BitMap is corrupt (Internal error) #define ERRCODE_INDEXCORRUPT 5 // Index is corrupt #define ERRCODE_CORRUPTLOCKFILE 6 // Corrupt lock file #define ERRCODE_FAMFILEINVALID 7 // Corrupt family file #define ERRCODE_VALFILECORRUPT 8 // Val file is missing or corrupt #define ERRCODE_FOREIGNINDEX 9 // Index is in a foreign format - import first #define DBIERR_HEADERCORRUPT (ERRBASE_DATACORRUPT + ERRCODE_HEADERCORRUPT) #define DBIERR_FILECORRUPT (ERRBASE_DATACORRUPT + ERRCODE_FILECORRUPT) #define DBIERR_MEMOCORRUPT (ERRBASE_DATACORRUPT + ERRCODE_MEMOCORRUPT) #define DBIERR_BMPCORRUPT (ERRBASE_DATACORRUPT + ERRCODE_BMPCORRUPT) #define DBIERR_INDEXCORRUPT (ERRBASE_DATACORRUPT + ERRCODE_INDEXCORRUPT) #define DBIERR_CORRUPTLOCKFILE (ERRBASE_DATACORRUPT + ERRCODE_CORRUPTLOCKFILE) #define DBIERR_FAMFILEINVALID (ERRBASE_DATACORRUPT + ERRCODE_FAMFILEINVALID) #define DBIERR_VALFILECORRUPT (ERRBASE_DATACORRUPT + ERRCODE_VALFILECORRUPT) #define DBIERR_FOREIGNINDEX (ERRBASE_DATACORRUPT + ERRCODE_FOREIGNINDEX) // ERRCAT_IO // ========= #define ERRCODE_READERR 1 // Read failure (not expected) #define ERRCODE_WRITEERR 2 // Write failure (not expected) #define ERRCODE_DIRNOACCESS 3 // No access to dir #define ERRCODE_FILEDELETEFAIL 4 // File delete failed #define ERRCODE_FILENOACCESS 5 // No access to file #define ERRCODE_ACCESSDISABLED 6 // Access to table disabled (previous error) #define DBIERR_READERR (ERRBASE_IO + ERRCODE_READERR) #define DBIERR_WRITEERR (ERRBASE_IO + ERRCODE_WRITEERR) #define DBIERR_DIRNOACCESS (ERRBASE_IO + ERRCODE_DIRNOACCESS) #define DBIERR_FILEDELETEFAIL (ERRBASE_IO + ERRCODE_FILEDELETEFAIL) #define DBIERR_FILENOACCESS (ERRBASE_IO + ERRCODE_FILENOACCESS) #define DBIERR_ACCESSDISABLED (ERRBASE_IO + ERRCODE_ACCESSDISABLED) // ERRCAT_LIMIT // ============ #define ERRCODE_NOMEMORY 1 // Not enough Memory for this op #define ERRCODE_NOFILEHANDLES 2 // Not enough File handles #define ERRCODE_NODISKSPACE 3 // Not enough Disk space #define ERRCODE_NOTEMPTBLSPACE 4 // Temporary Table resource limit #define ERRCODE_RECTOOBIG 5 // Too big a record size for table #define ERRCODE_CURSORLIMIT 6 // Too many open cursors #define ERRCODE_TABLEFULL 7 // Table is full #define ERRCODE_WSSESLIMIT 8 // Too many sessions from this WS #define ERRCODE_SERNUMLIMIT 9 // Serial number limit (paradox) #define ERRCODE_INTERNALLIMIT 10 // 0x0a Some internal limit (see context) #define ERRCODE_OPENTBLLIMIT 11 // 0x0b Too many open tables #define ERRCODE_TBLCURSORLIMIT 12 // 0x0c Too many cursors per table #define ERRCODE_RECLOCKLIMIT 13 // 0x0d Too many record locks on table #define ERRCODE_CLIENTSLIMIT 14 // 0x0e Too many clients #define ERRCODE_INDEXLIMIT 15 // 0x0f Too many indexes (also in Table Create) #define ERRCODE_SESSIONSLIMIT 16 // 0x10 Too many sessions #define ERRCODE_DBLIMIT 17 // 0x11 Too many databases #define ERRCODE_PASSWORDLIMIT 18 // 0x12 Too many passwords #define ERRCODE_DRIVERLIMIT 19 // 0x13 Too many active drivers #define ERRCODE_FLDLIMIT 20 // 0x14 Too many Fields in Table Create #define ERRCODE_TBLLOCKLIMIT 21 // 0x15 Too many table locks #define ERRCODE_OPENBLOBLIMIT 22 // 0x16 Too many open blobs #define ERRCODE_LOCKFILELIMIT 23 // 0x17 Lock file has grown too big #define ERRCODE_OPENQRYLIMIT 24 // 0x18 Too many open queries #define ERRCODE_THREADLIMIT 25 // 0x19 Too many threads for client #define ERRCODE_BLOBLIMIT 26 // 0x1a Too many blobs #define ERRCODE_PDX50NAMELIMIT 27 // 0x1b Pathname is too long for a Paradox 5.0 or less table #define DBIERR_NOMEMORY (ERRBASE_LIMIT + ERRCODE_NOMEMORY) #define DBIERR_NOFILEHANDLES (ERRBASE_LIMIT + ERRCODE_NOFILEHANDLES) #define DBIERR_NODISKSPACE (ERRBASE_LIMIT + ERRCODE_NODISKSPACE) #define DBIERR_NOTEMPTBLSPACE (ERRBASE_LIMIT + ERRCODE_NOTEMPTBLSPACE) #define DBIERR_RECTOOBIG (ERRBASE_LIMIT + ERRCODE_RECTOOBIG) #define DBIERR_CURSORLIMIT (ERRBASE_LIMIT + ERRCODE_CURSORLIMIT) #define DBIERR_TABLEFULL (ERRBASE_LIMIT + ERRCODE_TABLEFULL) #define DBIERR_WSSESLIMIT (ERRBASE_LIMIT + ERRCODE_WSSESLIMIT) #define DBIERR_SERNUMLIMIT (ERRBASE_LIMIT + ERRCODE_SERNUMLIMIT) #define DBIERR_INTERNALLIMIT (ERRBASE_LIMIT + ERRCODE_INTERNALLIMIT) #define DBIERR_OPENTBLLIMIT (ERRBASE_LIMIT + ERRCODE_OPENTBLLIMIT) #define DBIERR_TBLCURSORLIMIT (ERRBASE_LIMIT + ERRCODE_TBLCURSORLIMIT) #define DBIERR_RECLOCKLIMIT (ERRBASE_LIMIT + ERRCODE_RECLOCKLIMIT) #define DBIERR_CLIENTSLIMIT (ERRBASE_LIMIT + ERRCODE_CLIENTSLIMIT) #define DBIERR_INDEXLIMIT (ERRBASE_LIMIT + ERRCODE_INDEXLIMIT) #define DBIERR_SESSIONSLIMIT (ERRBASE_LIMIT + ERRCODE_SESSIONSLIMIT) #define DBIERR_DBLIMIT (ERRBASE_LIMIT + ERRCODE_DBLIMIT) #define DBIERR_PASSWORDLIMIT (ERRBASE_LIMIT + ERRCODE_PASSWORDLIMIT) #define DBIERR_DRIVERLIMIT (ERRBASE_LIMIT + ERRCODE_DRIVERLIMIT) #define DBIERR_FLDLIMIT (ERRBASE_LIMIT + ERRCODE_FLDLIMIT) #define DBIERR_TBLLOCKLIMIT (ERRBASE_LIMIT + ERRCODE_TBLLOCKLIMIT) #define DBIERR_OPENBLOBLIMIT (ERRBASE_LIMIT + ERRCODE_OPENBLOBLIMIT) #define DBIERR_LOCKFILELIMIT (ERRBASE_LIMIT + ERRCODE_LOCKFILELIMIT) #define DBIERR_OPENQRYLIMIT (ERRBASE_LIMIT + ERRCODE_OPENQRYLIMIT) #define DBIERR_THREADLIMIT (ERRBASE_LIMIT + ERRCODE_THREADLIMIT) #define DBIERR_BLOBLIMIT (ERRBASE_LIMIT + ERRCODE_BLOBLIMIT) #define DBIERR_PDX50NAMELIMIT (ERRBASE_LIMIT + ERRCODE_PDX50NAMELIMIT) // ERRCAT_INTEGRITY // ================ #define ERRCODE_KEYVIOL 1 // Key violation #define ERRCODE_MINVALERR 2 // Min val check failed #define ERRCODE_MAXVALERR 3 // Max val check failed #define ERRCODE_REQDERR 4 // Field value required #define ERRCODE_FORIEGNKEYERR 5 // Master record missing #define ERRCODE_DETAILRECORDSEXIST 6 // Cannot MODIFY or DELETE this Master record #define ERRCODE_MASTERTBLLEVEL 7 // Master Table Level is incorrect #define ERRCODE_LOOKUPTABLEERR 8 // Field value out of lookup tbl range #define ERRCODE_LOOKUPTBLOPENERR 9 // Lookup Table Open failed #define ERRCODE_DETAILTBLOPENERR 10 // 0x0a Detail Table Open failed #define ERRCODE_MASTERTBLOPENERR 11 // 0x0b Master Table Open failed #define ERRCODE_FIELDISBLANK 12 // 0x0c Field is blank #define ERRCODE_MASTEREXISTS 13 // 0x0d Master Table exists #define ERRCODE_MASTERTBLOPEN 14 // 0x0e Master Table is open #define ERRCODE_DETAILTABLESEXIST 15 // 0x0f Detail Tables exist ( cannot delete, rename ... ) #define ERRCODE_DETAILRECEXISTEMPTY 16 // 0x10 Cannot empty because details exist #define ERRCODE_MASTERREFERENCEERR 17 // 0x11 Cannot modify while adding self referencing Referential Integrity #define ERRCODE_DETAILTBLOPEN 18 // 0x12 Detail Table is opened #define ERRCODE_DEPENDENTSMUSTBEEMPTY 19 // 0x13 Cannot make a master a detail of another table if its details are not empty ! #define ERRCODE_RINTREQINDEX 20 // 0x14 Ref. integrity fields must be indexed #define ERRCODE_LINKEDTBLPROTECTED 21 // 0x15 Master Table is protected ( requires password to open) #define ERRCODE_FIELDMULTILINKED 22 // 0x16 Field has more than one master #define DBIERR_KEYVIOL (ERRBASE_INTEGRITY + ERRCODE_KEYVIOL) #define DBIERR_MINVALERR (ERRBASE_INTEGRITY + ERRCODE_MINVALERR) #define DBIERR_MAXVALERR (ERRBASE_INTEGRITY + ERRCODE_MAXVALERR) #define DBIERR_REQDERR (ERRBASE_INTEGRITY + ERRCODE_REQDERR) #define DBIERR_FORIEGNKEYERR (ERRBASE_INTEGRITY + ERRCODE_FORIEGNKEYERR) #define DBIERR_DETAILRECORDSEXIST (ERRBASE_INTEGRITY + ERRCODE_DETAILRECORDSEXIST) #define DBIERR_MASTERTBLLEVEL (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLLEVEL) #define DBIERR_LOOKUPTABLEERR (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTABLEERR) #define DBIERR_LOOKUPTBLOPENERR (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTBLOPENERR) #define DBIERR_DETAILTBLOPENERR (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPENERR) #define DBIERR_MASTERTBLOPENERR (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPENERR) #define DBIERR_FIELDISBLANK (ERRBASE_INTEGRITY + ERRCODE_FIELDISBLANK) #define DBIERR_MASTEREXISTS (ERRBASE_INTEGRITY + ERRCODE_MASTEREXISTS) #define DBIERR_MASTERTBLOPEN (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPEN) #define DBIERR_DETAILTABLESEXIST (ERRBASE_INTEGRITY + ERRCODE_DETAILTABLESEXIST) #define DBIERR_DETAILRECEXISTEMPTY (ERRBASE_INTEGRITY + ERRCODE_DETAILRECEXISTEMPTY) #define DBIERR_MASTERREFERENCEERR (ERRBASE_INTEGRITY + ERRCODE_MASTERREFERENCEERR) #define DBIERR_DETAILTBLOPEN (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPEN) #define DBIERR_DEPENDENTSMUSTBEEMPTY (ERRBASE_INTEGRITY + ERRCODE_DEPENDENTSMUSTBEEMPTY) #define DBIERR_RINTREQINDEX (ERRBASE_INTEGRITY + ERRCODE_RINTREQINDEX) #define DBIERR_LINKEDTBLPROTECTED (ERRBASE_INTEGRITY + ERRCODE_LINKEDTBLPROTECTED) #define DBIERR_FIELDMULTILINKED (ERRBASE_INTEGRITY + ERRCODE_FIELDMULTILINKED) // ERRCAT_INVALIDREQ // ================= #define ERRCODE_OUTOFRANGE 1 // Number out of range (e.g field no) #define ERRCODE_INVALIDPARAM 2 // Generic invalid parameter #define ERRCODE_INVALIDFILENAME 3 // Invalid file name #define ERRCODE_NOSUCHFILE 4 // No such file #define ERRCODE_INVALIDOPTION 5 // Invalid option for a parameter #define ERRCODE_INVALIDHNDL 6 // Invalid handle to the function #define ERRCODE_UNKNOWNTBLTYPE 7 // Table type given not known #define ERRCODE_UNKNOWNFILE 8 // Dont know how to open file #define ERRCODE_PRIMARYKEYREDEFINE 9 // Cannot redefine primary key #define ERRCODE_INVALIDRINTDESCNUM 10 // 0x0a Cannot change this RINTDesc #define ERRCODE_KEYFLDTYPEMISMATCH 11 // 0x0b Foreign & Primary Key Mismatch #define ERRCODE_INVALIDMODIFYREQUEST 12 // 0x0c Invalid modify request #define ERRCODE_NOSUCHINDEX 13 // 0x0d Index does not exist #define ERRCODE_INVALIDBLOBOFFSET 14 // 0x0e Invalid Offset into the Blob #define ERRCODE_INVALIDDESCNUM 15 // 0x0f Invalid descriptor number #define ERRCODE_INVALIDFLDTYPE 16 // 0x10 Invalid field type #define ERRCODE_INVALIDFLDDESC 17 // 0x11 Invalid field descriptor #define ERRCODE_INVALIDFLDXFORM 18 // 0x12 Invalid field transform #define ERRCODE_INVALIDRECSTRUCT 19 // 0x13 Invalid record structure #define ERRCODE_INVALIDDESC 20 // 0x14 Generic: invalid descriptor #define ERRCODE_INVALIDINDEXSTRUCT 21 // 0x15 Invalid array of indexes descriptors #define ERRCODE_INVALIDVCHKSTRUCT 22 // 0x16 Invalid array of val. check descriptors #define ERRCODE_INVALIDRINTSTRUCT 23 // 0x17 Invalid array of ref. integrity descriptors #define ERRCODE_INVALIDRESTRTBLORDER 24 // 0x18 Invalid ordering of tables during restructure #define ERRCODE_NAMENOTUNIQUE 25 // 0x19 Name not unique in this context #define ERRCODE_INDEXNAMEREQUIRED 26 // 0x1a Index name required #define ERRCODE_INVALIDSESHANDLE 27 // 0x1b Invalid ses handle #define ERRCODE_INVALIDRESTROP 28 // 0x1c Invalid restructure operation #define ERRCODE_UNKNOWNDRIVER 29 // 0x1d Driver not known to system #define ERRCODE_UNKNOWNDB 30 // 0x1e Unknown db #define ERRCODE_INVALIDPASSWORD 31 // 0x1f Invalid password given #define ERRCODE_NOCALLBACK 32 // 0x20 No callback function #define ERRCODE_INVALIDCALLBACKBUFLEN 33 // 0x21 Invalid callback buffer length #define ERRCODE_INVALIDDIR 34 // 0x22 Invalid directory #define ERRCODE_INVALIDXLATION 35 // 0x23 Translate Error - Translate DID NOT happen #define ERRCODE_DIFFERENTTABLES 36 // 0x24 Cannot Set Cursor of one Table to another #define ERRCODE_INVALIDBOOKMARK 37 // 0x25 Bookmarks does not match table, etc. #define ERRCODE_INVALIDINDEXNAME 38 // 0x26 Index/Tag Name is invalid #define ERRCODE_INVALIDIDXDESC 39 // 0x27 Invalid index descriptor #define ERRCODE_NOSUCHTABLE 40 // 0x28 No such table #define ERRCODE_USECOUNT 41 // 0x29 Table has too many users #define ERRCODE_INVALIDKEY 42 // 0x2a Key does not pass filter condition #define ERRCODE_INDEXEXISTS 43 // 0x2b Index already exists #define ERRCODE_INDEXOPEN 44 // 0x2c Index is open #define ERRCODE_INVALIDBLOBLEN 45 // 0x2d Invalid Blob Length #define ERRCODE_INVALIDBLOBHANDLE 46 // 0x2e Invalid Blob handle (in record buffer) #define ERRCODE_TABLEOPEN 47 // 0x2f Table is open #define ERRCODE_NEEDRESTRUCTURE 48 // 0x30 Need to do (hard) restructure #define ERRCODE_INVALIDMODE 49 // 0x31 Invalid mode #define ERRCODE_CANNOTCLOSE 50 // 0x32 Cannot close index #define ERRCODE_ACTIVEINDEX 51 // 0x33 Index is being used to order tbl #define ERRCODE_INVALIDUSRPASS 52 // 0x34 Bad user name or password #define ERRCODE_MULTILEVELCASCADE 53 // 0x35 Multi level Cascade not supported #define ERRCODE_INVALIDFIELDNAME 54 // 0x36 Invalid field name #define ERRCODE_INVALIDTABLENAME 55 // 0x37 Invalid table name #define ERRCODE_INVALIDLINKEXPR 56 // 0x38 Invalid linked cursor expression #define ERRCODE_NAMERESERVED 57 // 0x39 Name is reserved #define ERRCODE_INVALIDFILEEXTN 58 // 0x3a Invalid file extention #define ERRCODE_INVALIDLANGDRV 59 // 0x3b Invalid language driver #define ERRCODE_ALIASNOTOPEN 60 // 0x3c Requested alias in not open #define ERRCODE_INCOMPATRECSTRUCTS 61 // 0x3d Incompatible record structures #define ERRCODE_RESERVEDDOSNAME 62 // 0x3e Reserved dos name #define ERRCODE_DESTMUSTBEINDEXED 63 // 0x3f Destination must be indexed #define ERRCODE_INVALIDINDEXTYPE 64 // 0x40 Invalid index type #define ERRCODE_LANGDRVMISMATCH 65 // 0x41 Language driver of table and index do not match #define ERRCODE_NOSUCHFILTER 66 // 0x42 Filter handle is invalid #define ERRCODE_INVALIDFILTER 67 // 0x43 Invalid filter #define ERRCODE_INVALIDTABLECREATE 68 // 0x44 Bad table create request (exact prob unknown) #define ERRCODE_INVALIDTABLEDELETE 69 // 0x45 Bad table delete request (exact prob unknown) #define ERRCODE_INVALIDINDEXCREATE 70 // 0x46 Bad index create request (exact prob unknown) #define ERRCODE_INVALIDINDEXDELETE 71 // 0x47 Bad index delete request (exact prob unknown) #define ERRCODE_INVALIDTABLE 72 // 0x48 Invalid table name specified #define ERRCODE_MULTIRESULTS 73 // 0X49 Multi results #define ERRCODE_INVALIDTIME 74 // 0X4A Multi results #define ERRCODE_INVALIDDATE 75 // 0X4B Multi results #define ERRCODE_INVALIDTIMESTAMP 76 // 0X4C Multi results #define ERRCODE_DIFFERENTPATH 77 // 0X4d Tables in different paths #define ERRCODE_MISMATCHARGS 78 // 0x4e MisMatch in the # of arguments #define ERRCODE_FUNCTIONNOTFOUND 79 // 0x4f Loaderlib cant find a func in the DLL (bad version?) #define ERRCODE_MUSTUSEBASEORDER 80 // 0x50 Must use baseorder for this operation #define ERRCODE_INVALIDPROCEDURENAME 81 // 0x51 Invalid procedure name #define DBIERR_OUTOFRANGE (ERRBASE_INVALIDREQ + ERRCODE_OUTOFRANGE) #define DBIERR_INVALIDPARAM (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPARAM) #define DBIERR_INVALIDFILENAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILENAME) #define DBIERR_NOSUCHFILE (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILE) #define DBIERR_INVALIDOPTION (ERRBASE_INVALIDREQ + ERRCODE_INVALIDOPTION) #define DBIERR_INVALIDHNDL (ERRBASE_INVALIDREQ + ERRCODE_INVALIDHNDL) #define DBIERR_UNKNOWNTBLTYPE (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNTBLTYPE) #define DBIERR_UNKNOWNFILE (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNFILE) #define DBIERR_PRIMARYKEYREDEFINE (ERRBASE_INVALIDREQ + ERRCODE_PRIMARYKEYREDEFINE) #define DBIERR_INVALIDRINTDESCNUM (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTDESCNUM) #define DBIERR_KEYFLDTYPEMISMATCH (ERRBASE_INVALIDREQ + ERRCODE_KEYFLDTYPEMISMATCH) #define DBIERR_INVALIDMODIFYREQUEST (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODIFYREQUEST) #define DBIERR_NOSUCHINDEX (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHINDEX) #define DBIERR_INVALIDBLOBOFFSET (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBOFFSET) #define DBIERR_INVALIDDESCNUM (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESCNUM) #define DBIERR_INVALIDFLDTYPE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDTYPE) #define DBIERR_INVALIDFLDDESC (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDDESC) #define DBIERR_INVALIDFLDXFORM (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDXFORM) #define DBIERR_INVALIDRECSTRUCT (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRECSTRUCT) #define DBIERR_INVALIDDESC (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESC) #define DBIERR_INVALIDINDEXSTRUCT (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXSTRUCT) #define DBIERR_INVALIDVCHKSTRUCT (ERRBASE_INVALIDREQ + ERRCODE_INVALIDVCHKSTRUCT) #define DBIERR_INVALIDRINTSTRUCT (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTSTRUCT) #define DBIERR_INVALIDRESTRTBLORDER (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTRTBLORDER) #define DBIERR_NAMENOTUNIQUE (ERRBASE_INVALIDREQ + ERRCODE_NAMENOTUNIQUE) #define DBIERR_INDEXNAMEREQUIRED (ERRBASE_INVALIDREQ + ERRCODE_INDEXNAMEREQUIRED) #define DBIERR_INVALIDSESHANDLE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDSESHANDLE) #define DBIERR_INVALIDRESTROP (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTROP) #define DBIERR_UNKNOWNDRIVER (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDRIVER) #define DBIERR_UNKNOWNDB (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDB) #define DBIERR_INVALIDPASSWORD (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPASSWORD) #define DBIERR_NOCALLBACK (ERRBASE_INVALIDREQ + ERRCODE_NOCALLBACK) #define DBIERR_INVALIDCALLBACKBUFLEN \ (ERRBASE_INVALIDREQ + ERRCODE_INVALIDCALLBACKBUFLEN ) #define DBIERR_INVALIDDIR (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDIR) #define DBIERR_INVALIDXLATION (ERRBASE_INVALIDREQ + ERRCODE_INVALIDXLATION) #define DBIERR_DIFFERENTTABLES (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTTABLES) #define DBIERR_INVALIDBOOKMARK (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBOOKMARK) #define DBIERR_INVALIDINDEXNAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXNAME) #define DBIERR_INVALIDIDXDESC (ERRBASE_INVALIDREQ + ERRCODE_INVALIDIDXDESC) #define DBIERR_NOSUCHTABLE (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHTABLE) #define DBIERR_USECOUNT (ERRBASE_INVALIDREQ + ERRCODE_USECOUNT) #define DBIERR_INVALIDKEY (ERRBASE_INVALIDREQ + ERRCODE_INVALIDKEY) #define DBIERR_INDEXEXISTS (ERRBASE_INVALIDREQ + ERRCODE_INDEXEXISTS) #define DBIERR_INDEXOPEN (ERRBASE_INVALIDREQ + ERRCODE_INDEXOPEN) #define DBIERR_INVALIDBLOBLEN (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBLEN) #define DBIERR_INVALIDBLOBHANDLE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBHANDLE) #define DBIERR_TABLEOPEN (ERRBASE_INVALIDREQ + ERRCODE_TABLEOPEN) #define DBIERR_NEEDRESTRUCTURE (ERRBASE_INVALIDREQ + ERRCODE_NEEDRESTRUCTURE) #define DBIERR_INVALIDMODE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODE) #define DBIERR_CANNOTCLOSE (ERRBASE_INVALIDREQ + ERRCODE_CANNOTCLOSE) #define DBIERR_ACTIVEINDEX (ERRBASE_INVALIDREQ + ERRCODE_ACTIVEINDEX) #define DBIERR_INVALIDUSRPASS (ERRBASE_INVALIDREQ + ERRCODE_INVALIDUSRPASS) #define DBIERR_MULTILEVELCASCADE (ERRBASE_INVALIDREQ + ERRCODE_MULTILEVELCASCADE) #define DBIERR_INVALIDFIELDNAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFIELDNAME) #define DBIERR_INVALIDTABLENAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLENAME) #define DBIERR_INVALIDLINKEXPR (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLINKEXPR) #define DBIERR_NAMERESERVED (ERRBASE_INVALIDREQ + ERRCODE_NAMERESERVED) #define DBIERR_INVALIDFILEEXTN (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILEEXTN) #define DBIERR_INVALIDLANGDRV (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLANGDRV) #define DBIERR_ALIASNOTOPEN (ERRBASE_INVALIDREQ + ERRCODE_ALIASNOTOPEN) #define DBIERR_INCOMPATRECSTRUCTS (ERRBASE_INVALIDREQ + ERRCODE_INCOMPATRECSTRUCTS) #define DBIERR_RESERVEDOSNAME (ERRBASE_INVALIDREQ + ERRCODE_RESERVEDDOSNAME) #define DBIERR_DESTMUSTBEINDEXED (ERRBASE_INVALIDREQ + ERRCODE_DESTMUSTBEINDEXED) #define DBIERR_INVALIDINDEXTYPE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXTYPE) #define DBIERR_LANGDRVMISMATCH (ERRBASE_INVALIDREQ + ERRCODE_LANGDRVMISMATCH) #define DBIERR_NOSUCHFILTER (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILTER) #define DBIERR_INVALIDFILTER (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILTER) #define DBIERR_INVALIDTABLECREATE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLECREATE) #define DBIERR_INVALIDTABLEDELETE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLEDELETE) #define DBIERR_INVALIDINDEXCREATE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXCREATE) #define DBIERR_INVALIDINDEXDELETE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXDELETE) #define DBIERR_INVALIDTABLE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLE) #define DBIERR_MULTIRESULTS (ERRBASE_INVALIDREQ + ERRCODE_MULTIRESULTS) #define DBIERR_INVALIDTIME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIME) #define DBIERR_INVALIDDATE (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDATE) #define DBIERR_INVALIDTIMESTAMP (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIMESTAMP) #define DBIERR_DIFFERENTPATH (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTPATH) #define DBIERR_MISMATCHARGS (ERRBASE_INVALIDREQ + ERRCODE_MISMATCHARGS) #define DBIERR_FUNCTIONNOTFOUND (ERRBASE_INVALIDREQ + ERRCODE_FUNCTIONNOTFOUND) #define DBIERR_MUSTUSEBASEORDER (ERRBASE_INVALIDREQ + ERRCODE_MUSTUSEBASEORDER) #define DBIERR_INVALIDPROCEDURENAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPROCEDURENAME) // ERRCAT_LOCKCONFLICT // =================== #define ERRCODE_LOCKED 1 #define ERRCODE_UNLOCKFAILED 2 #define ERRCODE_FILEBUSY 3 #define ERRCODE_DIRBUSY 4 #define ERRCODE_FILELOCKED 5 #define ERRCODE_DIRLOCKED 6 #define ERRCODE_ALREADYLOCKED 7 #define ERRCODE_NOTLOCKED 8 #define ERRCODE_LOCKTIMEOUT 9 #define ERRCODE_GROUPLOCKED 10 // 0x0a #define ERRCODE_LOSTTBLLOCK 11 // 0x0b #define ERRCODE_LOSTEXCLACCESS 12 // 0x0c #define ERRCODE_NEEDEXCLACCESS 13 // 0x0d #define ERRCODE_RECGROUPCONFLICT 14 // 0x0e #define ERRCODE_DEADLOCK 15 #define ERRCODE_ACTIVETRAN 16 #define ERRCODE_NOACTIVETRAN 17 #define ERRCODE_RECLOCKFAILED 18 #define ERRCODE_OPTRECLOCKFAILED 19 #define ERRCODE_OPTRECLOCKRECDEL 20 #define ERRCODE_LOCKEDRECS 21 #define ERRCODE_NEEDWRITELOCK 22 #define DBIERR_LOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKED) #define DBIERR_UNLOCKFAILED (ERRBASE_LOCKCONFLICT + ERRCODE_UNLOCKFAILED) #define DBIERR_FILEBUSY (ERRBASE_LOCKCONFLICT + ERRCODE_FILEBUSY) #define DBIERR_DIRBUSY (ERRBASE_LOCKCONFLICT + ERRCODE_DIRBUSY) #define DBIERR_FILELOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_FILELOCKED) #define DBIERR_DIRLOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_DIRLOCKED) #define DBIERR_ALREADYLOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_ALREADYLOCKED) #define DBIERR_NOTLOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_NOTLOCKED) #define DBIERR_LOCKTIMEOUT (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKTIMEOUT) #define DBIERR_GROUPLOCKED (ERRBASE_LOCKCONFLICT + ERRCODE_GROUPLOCKED) #define DBIERR_LOSTTBLLOCK (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTTBLLOCK) #define DBIERR_LOSTEXCLACCESS (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTEXCLACCESS) #define DBIERR_NEEDEXCLACCESS (ERRBASE_LOCKCONFLICT + ERRCODE_NEEDEXCLACCESS) #define DBIERR_RECGROUPCONFLICT (ERRBASE_LOCKCONFLICT + ERRCODE_RECGROUPCONFLICT) #define DBIERR_DEADLOCK (ERRBASE_LOCKCONFLICT + ERRCODE_DEADLOCK) #define DBIERR_ACTIVETRAN (ERRBASE_LOCKCONFLICT + ERRCODE_ACTIVETRAN) #define DBIERR_NOACTIVETRAN (ERRBASE_LOCKCONFLICT + ERRCODE_NOACTIVETRAN) #define DBIERR_RECLOCKFAILED (ERRBASE_LOCKCONFLICT + ERRCODE_RECLOCKFAILED) #define DBIERR_OPTRECLOCKFAILED (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKFAILED) #define DBIERR_OPTRECLOCKRECDEL (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKRECDEL) // ERRCAT_SECURITY // =============== #define ERRCODE_NOTSUFFFIELDRIGHTS 1 // Not sufficient field rights for operation #define ERRCODE_NOTSUFFTABLERIGHTS 2 // Not sufficient table rights for operation #define ERRCODE_NOTSUFFFAMILYRIGHTS 3 // Not sufficient family rights for operation #define ERRCODE_READONLYDIR 4 // Is a read-only directory #define ERRCODE_READONLYDB 5 // Database is read-only #define ERRCODE_READONLYFLD 6 // Trying to modify read-only field #define ERRCODE_TBLENCRYPTED 7 // Table is encrypted (dBASE only) #define ERRCODE_NOTSUFFSQLRIGHTS 8 // Not sufficient sql rights for operation #define DBIERR_NOTSUFFFIELDRIGHTS (ERRBASE_SEC + ERRCODE_NOTSUFFFIELDRIGHTS) #define DBIERR_NOTSUFFTABLERIGHTS (ERRBASE_SEC + ERRCODE_NOTSUFFTABLERIGHTS) #define DBIERR_NOTSUFFFAMILYRIGHTS (ERRBASE_SEC + ERRCODE_NOTSUFFFAMILYRIGHTS) #define DBIERR_READONLYDIR (ERRBASE_SEC + ERRCODE_READONLYDIR) #define DBIERR_READONLYDB (ERRBASE_SEC + ERRCODE_READONLYDB) #define DBIERR_READONLYFLD (ERRBASE_SEC + ERRCODE_READONLYFLD) #define DBIERR_TBLENCRYPTED (ERRBASE_SEC + ERRCODE_TBLENCRYPTED) #define DBIERR_NOTSUFFSQLRIGHTS (ERRBASE_SEC + ERRCODE_NOTSUFFSQLRIGHTS) // ERRCAT_INVALIDCONTEXT // ===================== #define ERRCODE_NOTABLOB 1 // Field is not a blob #define ERRCODE_BLOBOPENED 2 // Blob already opened #define ERRCODE_BLOBNOTOPENED 3 // Blob not opened #define ERRCODE_NA 4 // Operation not applicable #define ERRCODE_NOTINDEXED 5 // Table is not indexed #define ERRCODE_NOTINITIALIZED 6 // Engine not initialized #define ERRCODE_MULTIPLEINIT 7 // Attempt to re-initialize engine #define ERRCODE_NOTSAMESESSION 8 // Attempt to mix objs from diff ses #define ERRCODE_PDXDRIVERNOTACTIVE 9 // Paradox driver not active #define ERRCODE_DRIVERNOTLOADED 10 // 0x0a Driver not loaded #define ERRCODE_TABLEREADONLY 11 // 0x0b Table is read only #define ERRCODE_NOASSOCINDEX 12 // 0x0c No index associated with the cursor #define ERRCODE_HASOPENCURSORS 13 // 0x0d Has open cursors #define ERRCODE_NOTABLESUPPORT 14 // 0x0e Op cannot be done on this table #define ERRCODE_INDEXREADONLY 15 // 0x0f Index is read only #define ERRCODE_NOUNIQUERECS 16 // 0x10 Records are not unique #define ERRCODE_NOTCURSESSION 17 // 0x11 Not the current/active session #define ERRCODE_INVALIDKEYWORD 18 // 0x12 Invalid use of keyword. #define ERRCODE_CONNECTINUSE 19 // 0x13 Connection in use #define ERRCODE_CONNECTNOTSHARED 20 // 0x14 Passthru SQL connection not share #define DBIERR_NOTABLOB (ERRBASE_IC + ERRCODE_NOTABLOB) #define DBIERR_BLOBOPENED (ERRBASE_IC + ERRCODE_BLOBOPENED) #define DBIERR_BLOBNOTOPENED (ERRBASE_IC + ERRCODE_BLOBNOTOPENED) #define DBIERR_NA (ERRBASE_IC + ERRCODE_NA) #define DBIERR_NOTINDEXED (ERRBASE_IC + ERRCODE_NOTINDEXED) #define DBIERR_NOTINITIALIZED (ERRBASE_IC + ERRCODE_NOTINITIALIZED) #define DBIERR_MULTIPLEINIT (ERRBASE_IC + ERRCODE_MULTIPLEINIT) #define DBIERR_NOTSAMESESSION (ERRBASE_IC + ERRCODE_NOTSAMESESSION) #define DBIERR_PDXDRIVERNOTACTIVE (ERRBASE_IC + ERRCODE_PDXDRIVERNOTACTIVE) #define DBIERR_DRIVERNOTLOADED (ERRBASE_IC + ERRCODE_DRIVERNOTLOADED) #define DBIERR_TABLEREADONLY (ERRBASE_IC + ERRCODE_TABLEREADONLY) #define DBIERR_NOASSOCINDEX (ERRBASE_IC + ERRCODE_NOASSOCINDEX) #define DBIERR_HASOPENCURSORS (ERRBASE_IC + ERRCODE_HASOPENCURSORS) #define DBIERR_NOTABLESUPPORT (ERRBASE_IC + ERRCODE_NOTABLESUPPORT) #define DBIERR_INDEXREADONLY (ERRBASE_IC + ERRCODE_INDEXREADONLY) #define DBIERR_NOUNIQUERECS (ERRBASE_IC + ERRCODE_NOUNIQUERECS) #define DBIERR_NOTCURSESSION (ERRBASE_IC + ERRCODE_NOTCURSESSION) #define DBIERR_INVALIDKEYWORD (ERRBASE_IC + ERRCODE_INVALIDKEYWORD) #define DBIERR_CONNECTINUSE (ERRBASE_IC + ERRCODE_CONNECTINUSE) #define DBIERR_CONNECTNOTSHARED (ERRBASE_IC + ERRCODE_CONNECTNOTSHARED) // ERRCAT_OS // ========= // DOS extended errors: #define ERRCODE_OSEINVFNC 1 // Invalid function number #define ERRCODE_OSENOENT 2 // No such file or directory #define ERRCODE_OSENOPATH 3 // Path not found #define ERRCODE_OSEMFILE 4 // Too many open files #define ERRCODE_OSEACCES 5 // Permission denied #define ERRCODE_OSEBADF 6 // Bad file number #define ERRCODE_OSECONTR 7 // Memory blocks destroyed #define ERRCODE_OSENOMEM 8 // Not enough core #define ERRCODE_OSEINVMEM 9 // Invalid memory block address #define ERRCODE_OSEINVENV 10 // 0x0a Invalid environment #define ERRCODE_OSEINVFMT 11 // 0x0b Invalid format #define ERRCODE_OSEINVACC 12 // 0x0c Invalid access code #define ERRCODE_OSEINVDAT 13 // 0x0d Invalid data #define ERRCODE_OSENODEV 15 // 0x0f No such device #define ERRCODE_OSECURDIR 16 // 0x10 Attempt to remove curdir #define ERRCODE_OSENOTSAM 17 // 0x11 Not same device #define ERRCODE_OSENMFILE 18 // 0x12 No more files #define ERRCODE_OSEINVAL 19 // 0x13 Invalid argument #define ERRCODE_OSE2BIG 20 // 0x14 Arg list too long #define ERRCODE_OSENOEXEC 21 // 0x15 Exec format error #define ERRCODE_OSEXDEV 22 // 0x16 Cross-device link #define ERRCODE_OSEDOM 33 // 0x21 Math argument #define ERRCODE_OSERANGE 34 // 0x22 Result to large #define ERRCODE_OSEEXIST 35 // 0x23 File already exists #define ERRCODE_OSUNKNOWN 39 // 0x27 Unkown | illegal error from rtl #define ERRCODE_OSSHAREVIOL 50 // 0x32 Share viol, ext. err 0x20 #define ERRCODE_OSLOCKVIOL 51 // 0x33 Lock viol, ext. err 0x21 #define ERRCODE_OSINT24FAIL 52 // 0x34 INT24 called #define ERRCODE_OSDRIVENOTREADY 53 // 0x35 Drive not ready // OTHER Os errors: // 1. odapi errors // 2. errors from non-dos systems ( i.e. NOVELL ) #define ERRCODE_NOTEXACT 100 // 0x64 Not exact read/write #define ERRCODE_OSNETERR 101 // 0x65 Generic network error #define ERRCODE_OSUNKNOWNSRVERR 102 // 0x66 Error from file server #define ERRCODE_SERVERNOMEMORY 103 // 0x67 Server out of memory #define ERRCODE_OSALREADYLOCKED 104 // 0x68 Record already locked (by you) #define ERRCODE_OSNOTLOCKED 105 // 0x69 Record not locked #define ERRCODE_NOSERVERSW 106 // 0x6a Server software not running the workstation/server #define DBIERR_OSEINVFNC ( ERRBASE_OS + ERRCODE_OSEINVFNC ) #define DBIERR_OSENOENT ( ERRBASE_OS + ERRCODE_OSENOENT ) #define DBIERR_OSENOPATH ( ERRBASE_OS + ERRCODE_OSENOPATH ) #define DBIERR_OSEMFILE ( ERRBASE_OS + ERRCODE_OSEMFILE ) #define DBIERR_OSEACCES ( ERRBASE_OS + ERRCODE_OSEACCES ) #define DBIERR_OSEBADF ( ERRBASE_OS + ERRCODE_OSEBADF ) #define DBIERR_OSECONTR ( ERRBASE_OS + ERRCODE_OSECONTR ) #define DBIERR_OSENOMEM ( ERRBASE_OS + ERRCODE_OSENOMEM ) #define DBIERR_OSEINVMEM ( ERRBASE_OS + ERRCODE_OSEINVMEM ) #define DBIERR_OSEINVENV ( ERRBASE_OS + ERRCODE_OSEINVENV ) #define DBIERR_OSEINVFMT ( ERRBASE_OS + ERRCODE_OSEINVFMT ) #define DBIERR_OSEINVACC ( ERRBASE_OS + ERRCODE_OSEINVACC ) #define DBIERR_OSEINVDAT ( ERRBASE_OS + ERRCODE_OSEINVDAT ) #define DBIERR_OSENODEV ( ERRBASE_OS + ERRCODE_OSENODEV ) #define DBIERR_OSECURDIR ( ERRBASE_OS + ERRCODE_OSECURDIR ) #define DBIERR_OSENOTSAM ( ERRBASE_OS + ERRCODE_OSENOTSAM ) #define DBIERR_OSENMFILE ( ERRBASE_OS + ERRCODE_OSENMFILE ) #define DBIERR_OSEINVAL ( ERRBASE_OS + ERRCODE_OSEINVAL ) #define DBIERR_OSE2BIG ( ERRBASE_OS + ERRCODE_OSE2BIG ) #define DBIERR_OSENOEXEC ( ERRBASE_OS + ERRCODE_OSENOEXEC ) #define DBIERR_OSEXDEV ( ERRBASE_OS + ERRCODE_OSEXDEV ) #define DBIERR_OSEDOM ( ERRBASE_OS + ERRCODE_OSEDOM ) #define DBIERR_OSERANGE ( ERRBASE_OS + ERRCODE_OSERANGE ) #define DBIERR_OSEEXIST ( ERRBASE_OS + ERRCODE_OSEEXIST ) #define DBIERR_OSUNKNOWN ( ERRBASE_OS + ERRCODE_OSUNKNOWN ) #define DBIERR_OSSHAREVIOL ( ERRBASE_OS + ERRCODE_OSSHAREVIOL ) #define DBIERR_OSLOCKVIOL ( ERRBASE_OS + ERRCODE_OSLOCKVIOL ) #define DBIERR_OSNETERR ( ERRBASE_OS + ERRCODE_OSNETERR ) #define DBIERR_OSINT24FAIL ( ERRBASE_OS + ERRCODE_OSINT24FAIL ) #define DBIERR_OSDRIVENOTREADY ( ERRBASE_OS + ERRCODE_OSDRIVENOTREADY ) #define DBIERR_NOTEXACT ( ERRBASE_OS + ERRCODE_NOTEXACT ) #define DBIERR_OSUNKNOWNSRVERR ( ERRBASE_OS + ERRCODE_OSUNKNOWNSRVERR ) #define DBIERR_SERVERNOMEMORY ( ERRBASE_OS + ERRCODE_SERVERNOMEMORY ) #define DBIERR_OSALREADYLOCKED ( ERRBASE_OS + ERRCODE_OSALREADYLOCKED ) #define DBIERR_OSNOTLOCKED ( ERRBASE_OS + ERRCODE_OSNOTLOCKED ) #define DBIERR_NOSERVERSW ( ERRBASE_OS + ERRCODE_NOSERVERSW) // ERRCAT_NETWORK // ============== #define ERRCODE_NETINITERR 1 // Net init failed #define ERRCODE_NETUSERLIMIT 2 // Net user limit exceeded #define ERRCODE_NETFILEVERSION 3 // Wrong net file version #define ERRCODE_NETFILELOCKED 4 // Not able to lock net file #define ERRCODE_DIRNOTPRIVATE 5 // #define ERRCODE_NETMULTIPLE 6 // Multiple net files in use #define ERRCODE_NETUNKNOWN 7 // Unknown net error #define ERRCODE_SHAREDFILE 8 // Cannot access a shared file #define ERRCODE_SHARENOTLOADED 9 // Share not loaded #define ERRCODE_NOTONANETWORK 10 // 0x0a Not an Network #define ERRCODE_SQLCOMMLOST 11 // 0x0b Lost Communication with SQL server #define ERRCODE_SERVERCOMMLOST 12 // 0x0c Lost Communication with IDAPI server #define ERRCODE_SQLSERVERNOTFOUND 13 // 0x0d SQL Server not found #define ERRCODE_SERVERNOTFOUND 14 // 0x0e SQL Server not found #define DBIERR_NETINITERR (ERRBASE_NETWORK + ERRCODE_NETINITERR) #define DBIERR_NETUSERLIMIT (ERRBASE_NETWORK + ERRCODE_NETUSERLIMIT) #define DBIERR_NETFILEVERSION (ERRBASE_NETWORK + ERRCODE_NETFILEVERSION) #define DBIERR_NETFILELOCKED (ERRBASE_NETWORK + ERRCODE_NETFILELOCKED) #define DBIERR_DIRNOTPRIVATE (ERRBASE_NETWORK + ERRCODE_DIRNOTPRIVATE) #define DBIERR_NETMULTIPLE (ERRBASE_NETWORK + ERRCODE_NETMULTIPLE) #define DBIERR_NETUNKNOWN (ERRBASE_NETWORK + ERRCODE_NETUNKNOWN) #define DBIERR_SHAREDFILE (ERRBASE_NETWORK + ERRCODE_SHAREDFILE) #define DBIERR_SHARENOTLOADED (ERRBASE_NETWORK + ERRCODE_SHARENOTLOADED) #define DBIERR_NOTONANETWORK (ERRBASE_NETWORK + ERRCODE_NOTONANETWORK) #define DBIERR_SQLCOMMLOST (ERRBASE_NETWORK + ERRCODE_SQLCOMMLOST) #define DBIERR_SERVERCOMMLOST (ERRBASE_NETWORK + ERRCODE_SERVERCOMMLOST) #define DBIERR_SQLSERVERNOTFOUND (ERRBASE_NETWORK + ERRCODE_SQLSERVERNOTFOUND) #define DBIERR_SERVERNOTFOUND (ERRBASE_NETWORK + ERRCODE_SERVERNOTFOUND) // ERRCAT_DRIVER // ============= #define ERRCODE_WRONGDRVNAME 1 // Wrong driver name #define ERRCODE_WRONGSYSVER 2 // Wrong system version #define ERRCODE_WRONGDRVVER 3 // Wrong driver version #define ERRCODE_WRONGDRVTYPE 4 // Wrong driver type #define ERRCODE_CANNOTLOADDRV 5 // Can not load driver #define ERRCODE_CANNOTLOADLDDRV 6 // Can not load language driver #define ERRCODE_VENDINITFAIL 7 // Vendor init failure #define DBIERR_WRONGDRVNAME (ERRBASE_DRIVER + ERRCODE_WRONGDRVNAME) #define DBIERR_WRONGSYSVER (ERRBASE_DRIVER + ERRCODE_WRONGSYSVER) #define DBIERR_WRONGDRVVER (ERRBASE_DRIVER + ERRCODE_WRONGDRVVER) #define DBIERR_WRONGDRVTYPE (ERRBASE_DRIVER + ERRCODE_WRONGDRVTYPE) #define DBIERR_CANNOTLOADDRV (ERRBASE_DRIVER + ERRCODE_CANNOTLOADDRV) #define DBIERR_CANNOTLOADLDDRV (ERRBASE_DRIVER + ERRCODE_CANNOTLOADLDDRV) #define DBIERR_VENDINITFAIL (ERRBASE_DRIVER + ERRCODE_VENDINITFAIL) // ERRCAT_QUERY // ============ #define DBICODE_AMBJOASY 1 // obsolete #define DBICODE_AMBJOSYM 2 // obsolete #define DBICODE_AMBOUTEX 3 #define DBICODE_AMBOUTPR 4 // obsolete #define DBICODE_AMBSYMAS 5 // obsolete #define DBICODE_ASETOPER 6 #define DBICODE_AVENUMDA 7 #define DBICODE_BADEXPR1 8 #define DBICODE_BADFLDOR 9 #define DBICODE_BADVNAME 10 // 0x0a #define DBICODE_BITMAPER 11 // 0x0b #define DBICODE_CALCBADR 12 // 0x0c #define DBICODE_CALCTYPE 13 // 0x0d #define DBICODE_CHGTO1TI 14 // 0x0e #define DBICODE_CHGTOCHG 15 // 0x0f #define DBICODE_CHGTOEXP 16 // 0x10 #define DBICODE_CHGTOINS 17 // 0x11 #define DBICODE_CHGTONEW 18 // 0x12 #define DBICODE_CHGTOVAL 19 // 0x13 #define DBICODE_CHKMRKFI 20 // 0x14 #define DBICODE_CHNAMBIG 21 // 0x15 #define DBICODE_CHUNKERR 22 // 0x16 #define DBICODE_COLUM255 23 // 0x17 #define DBICODE_CONAFTAS 24 // 0x18 #define DBICODE_DEL1TIME 25 // 0x19 #define DBICODE_DELAMBIG 26 // 0x1a #define DBICODE_DELFRDEL 27 // 0x1b #define DBICODE_EGFLDTYP 28 // 0x1c #define DBICODE_EXAMINOR 29 // 0x1d #define DBICODE_EXPRTYPS 30 // 0x1e #define DBICODE_EXTRACOM 31 // 0x1f #define DBICODE_EXTRAORO 32 // 0x20 #define DBICODE_EXTRAQRO 33 // 0x21 #define DBICODE_FIND1ATT 34 // 0x22 #define DBICODE_FINDANST 35 // 0x23 #define DBICODE_GRPNOSET 36 // 0x24 #define DBICODE_GRPSTROW 37 // 0x25 #define DBICODE_IDFINLCO 38 // 0x26 #define DBICODE_IDFPERLI 39 // 0x27 #define DBICODE_INANEXPR 40 // 0x28 #define DBICODE_INS1TIME 41 // 0x29 #define DBICODE_INSAMBIG 42 // 0x2a #define DBICODE_INSDELCH 43 // 0x2b #define DBICODE_INSEXPRR 44 // 0x2c #define DBICODE_INSTOINS 45 // 0x2d #define DBICODE_ISARRAY 46 // 0x2e #define DBICODE_LABELERR 47 // 0x2f #define DBICODE_LINKCALC 48 // 0x30 #define DBICODE_LNGVNAME 49 // 0x31 #define DBICODE_LONGQURY 50 // 0x32 #define DBICODE_MEMVPROC 51 // 0x33 #define DBICODE_MISNGCOM 52 // 0x34 #define DBICODE_MISNGRPA 53 // 0x35 #define DBICODE_MISSRTQU 54 // 0x36 #define DBICODE_NAMTWICE 55 // 0x37 #define DBICODE_NOCHKMAR 56 // 0x38 #define DBICODE_NODEFOCC 57 // 0x39 #define DBICODE_NOGROUPS 58 // 0x3a #define DBICODE_NONSENSE 59 // 0x3b #define DBICODE_NOPATTER 60 // 0x3c #define DBICODE_NOSUCHDA 61 // 0x3d #define DBICODE_NOVALUE 62 // 0x3e #define DBICODE_ONLYCONS 63 // 0x3f #define DBICODE_ONLYSETR 64 // 0x40 #define DBICODE_OUTSENS1 65 // 0x41 #define DBICODE_OUTTWIC1 66 // 0x42 #define DBICODE_PAROWCNT 67 // 0x43 #define DBICODE_PERSEPAR 68 // 0x44 #define DBICODE_PROCPLSW 69 // 0x45 #define DBICODE_PWINSRTS 70 // 0x46 #define DBICODE_PWMODRTS 71 // 0x47 #define DBICODE_QBEFLDFOUND 72 // 0x48 #define DBICODE_QBENOFENCE 73 // 0x49 #define DBICODE_QBENOFENCET 74 // 0x4a #define DBICODE_QBENOHEADERT 75 // 0x4b #define DBICODE_QBENOTAB 76 // 0x4c #define DBICODE_QBENUMCOLS 77 // 0x4d #define DBICODE_QBEOPENTAB 78 // 0x4e #define DBICODE_QBETWICE 79 // 0x4f #define DBICODE_QRYNOANSWER 80 // 0x50 #define DBICODE_QRYNOTPREP 81 // 0x51 #define DBICODE_QUAINDEL 82 // 0x52 #define DBICODE_QUAININS 83 // 0x53 #define DBICODE_RAGININS 84 // 0x54 #define DBICODE_RAGINSET 85 // 0x55 #define DBICODE_ROWUSERR 86 // 0x56 #define DBICODE_SETEXPEC 87 // 0x57 #define DBICODE_SETVAMB1 88 // 0x58 #define DBICODE_SETVBAD1 89 // 0x59 #define DBICODE_SETVDEF1 90 // 0x5a #define DBICODE_SUMNUMBE 91 // 0x5b #define DBICODE_TBLISWP3 92 // 0x5c #define DBICODE_TOKENNOT 93 // 0x5d #define DBICODE_TWOOUTR1 94 // 0x5e #define DBICODE_TYPEMISM 95 // 0x5f #define DBICODE_UNRELQ1 96 // 0x60 #define DBICODE_UNUSEDST 97 // 0x61 #define DBICODE_USEINSDE 98 // 0x62 #define DBICODE_USEOFCHG 99 // 0x63 #define DBICODE_VARMUSTF 100 // 0x64 #define DBICODE_REGISTER 101 // 0x65 #define DBICODE_LONGEXPR 102 // 0x66 #define DBICODE_REFRESH 103 // 0x67 #define DBICODE_CANCEXCEPT 104 // 0x68 #define DBICODE_DBEXCEPT 105 // 0x69 #define DBICODE_MEMEXCEPT 106 // 0x6a #define DBICODE_FATALEXCEPT 107 // 0x6b #define DBICODE_QRYNIY 108 // 0x6c #define DBICODE_BADFORMAT 109 // 0x6d #define DBICODE_QRYEMPTY 110 // 0x6e #define DBICODE_NOQRYTOPREP 111 // 0x6f #define DBICODE_BUFFTOOSMALL 112 // 0x70 #define DBICODE_QRYNOTPARSE 113 // 0x71 #define DBICODE_NOTHANDLE 114 // 0x72 #define DBICODE_QRYSYNTERR 115 // 0x73 #define DBICODE_QXFLDCOUNT 116 // 0x74 #define DBICODE_QXFLDSYMNOTFOUND 117 // 0x75 #define DBICODE_QXTBLSYMNOTFOUND 118 // 0x76 #define DBICODE_BLOBTERM 119 // 0x77 #define DBICODE_BLOBERR 120 // 0x78 #define DBICODE_RESTARTQRY 121 // 0x79 #define DBICODE_UNKNOWNANSTYPE 122 // 0x7a // Internal QBE use Only. #define DBICODE_SQLG_MDIST 123 // 0x7b #define DBICODE_SQLG_NOARI 124 // 0x7c #define DBICODE_SQLG_LIKEN 125 // 0x7d #define DBICODE_SQLG_ALPHO 126 // 0x7e #define DBICODE_SQLG_DATEO 127 // 0x7f #define DBICODE_SQLG_RELOP 128 // 0x80 #define DBICODE_SQLG_ONLYC 129 // 0x81 #define DBICODE_SQLG_CNTLN 130 // 0x82 #define DBICODE_SQLG_CHINI 131 // 0x83 #define DBICODE_SQLG_UNION 132 // 0x84 #define DBICODE_SQLG_SLFIN 133 // 0x85 #define DBICODE_SQLG_OTJVR 134 // 0x86 #define DBICODE_SQLG_STROW 135 // 0x87 #define DBICODE_SQLG_QUANT 136 // 0x88 #define DBICODE_SQLG_REGSO 137 // 0x89 #define DBICODE_SQLG_COUNT 138 // 0x8a #define DBICODE_SQLG_AVERA 139 // 0x8b #define DBICODE_SQLG_DATEA 140 // 0x8c #define DBICODE_SQLG_BADPT 141 // 0x8d #define DBICODE_SQLG_RELPA 142 // 0x8e #define DBICODE_SQLG_PATRN 143 // 0x8f #define DBICODE_SQLG_FNDSU 144 // 0x90 #define DBICODE_SQLG_IFDCS 145 // 0x91 #define DBICODE_SQLG_IDCCO 146 // 0x92 #define DBICODE_SQLG_ONLYI 147 // 0x93 #define DBICODE_SQLG_SQLDIALECT 148 // 0x94 #define DBICODE_SQLG_NOQUERY 149 // 0x95 // End of Internal. #define DBICODE_BLOBGROUP 150 // 0x96 #define DBICODE_QRYNOPROP 151 // 0x97 #define DBICODE_ANSTYPNOTSUP 152 // 0x98 #define DBICODE_ANSALIASNOTSUP 153 // 0x99 #define DBICODE_INSBLOBREQ 154 // 0x9a #define DBICODE_CHGUNIQUENDXREQ 155 // 0x9b #define DBICODE_DELUNIQUENDXREQ 156 // 0x9c #define DBICODE_SQLNOFULLUPDATE 157 // 0x9d #define DBICODE_CANTEXECREMOTE 158 // 0x9e #define DBICODE_UNEXPECTEDEOC 159 // 0x9f #define DBICODE_SQLPARAMNOTSET 160 // 0xA0 #define DBICODE_QUERYTOOLONG 161 // 0xA1 #define DBIERR_AMBJOASY (ERRBASE_QUERY+DBICODE_AMBJOASY) #define DBIERR_AMBJOSYM (ERRBASE_QUERY+DBICODE_AMBJOSYM) #define DBIERR_AMBOUTEX (ERRBASE_QUERY+DBICODE_AMBOUTEX) #define DBIERR_AMBOUTPR (ERRBASE_QUERY+DBICODE_AMBOUTPR) #define DBIERR_AMBSYMAS (ERRBASE_QUERY+DBICODE_AMBSYMAS) #define DBIERR_ASETOPER (ERRBASE_QUERY+DBICODE_ASETOPER) #define DBIERR_AVENUMDA (ERRBASE_QUERY+DBICODE_AVENUMDA) #define DBIERR_BADEXPR1 (ERRBASE_QUERY+DBICODE_BADEXPR1) #define DBIERR_BADFLDOR (ERRBASE_QUERY+DBICODE_BADFLDOR) #define DBIERR_BADVNAME (ERRBASE_QUERY+DBICODE_BADVNAME) #define DBIERR_BITMAPER (ERRBASE_QUERY+DBICODE_BITMAPER) #define DBIERR_CALCBADR (ERRBASE_QUERY+DBICODE_CALCBADR) #define DBIERR_CALCTYPE (ERRBASE_QUERY+DBICODE_CALCTYPE) #define DBIERR_CHGTO1TI (ERRBASE_QUERY+DBICODE_CHGTO1TI) #define DBIERR_CHGTOCHG (ERRBASE_QUERY+DBICODE_CHGTOCHG) #define DBIERR_CHGTOEXP (ERRBASE_QUERY+DBICODE_CHGTOEXP) #define DBIERR_CHGTOINS (ERRBASE_QUERY+DBICODE_CHGTOINS) #define DBIERR_CHGTONEW (ERRBASE_QUERY+DBICODE_CHGTONEW) #define DBIERR_CHGTOVAL (ERRBASE_QUERY+DBICODE_CHGTOVAL) #define DBIERR_CHKMRKFI (ERRBASE_QUERY+DBICODE_CHKMRKFI) #define DBIERR_CHNAMBIG (ERRBASE_QUERY+DBICODE_CHNAMBIG) #define DBIERR_CHUNKERR (ERRBASE_QUERY+DBICODE_CHUNKERR) #define DBIERR_COLUM255 (ERRBASE_QUERY+DBICODE_COLUM255) #define DBIERR_CONAFTAS (ERRBASE_QUERY+DBICODE_CONAFTAS) #define DBIERR_DEL1TIME (ERRBASE_QUERY+DBICODE_DEL1TIME) #define DBIERR_DELAMBIG (ERRBASE_QUERY+DBICODE_DELAMBIG) #define DBIERR_DELFRDEL (ERRBASE_QUERY+DBICODE_DELFRDEL) #define DBIERR_EGFLDTYP (ERRBASE_QUERY+DBICODE_EGFLDTYP) #define DBIERR_EXAMINOR (ERRBASE_QUERY+DBICODE_EXAMINOR) #define DBIERR_EXPRTYPS (ERRBASE_QUERY+DBICODE_EXPRTYPS) #define DBIERR_EXTRACOM (ERRBASE_QUERY+DBICODE_EXTRACOM) #define DBIERR_EXTRAORO (ERRBASE_QUERY+DBICODE_EXTRAORO) #define DBIERR_EXTRAQRO (ERRBASE_QUERY+DBICODE_EXTRAQRO) #define DBIERR_FIND1ATT (ERRBASE_QUERY+DBICODE_FIND1ATT) #define DBIERR_FINDANST (ERRBASE_QUERY+DBICODE_FINDANST) #define DBIERR_GRPNOSET (ERRBASE_QUERY+DBICODE_GRPNOSET) #define DBIERR_GRPSTROW (ERRBASE_QUERY+DBICODE_GRPSTROW) #define DBIERR_IDFINLCO (ERRBASE_QUERY+DBICODE_IDFINLCO) #define DBIERR_IDFPERLI (ERRBASE_QUERY+DBICODE_IDFPERLI) #define DBIERR_INANEXPR (ERRBASE_QUERY+DBICODE_INANEXPR) #define DBIERR_INS1TIME (ERRBASE_QUERY+DBICODE_INS1TIME) #define DBIERR_INSAMBIG (ERRBASE_QUERY+DBICODE_INSAMBIG) #define DBIERR_INSDELCH (ERRBASE_QUERY+DBICODE_INSDELCH) #define DBIERR_INSEXPRR (ERRBASE_QUERY+DBICODE_INSEXPRR) #define DBIERR_INSTOINS (ERRBASE_QUERY+DBICODE_INSTOINS) #define DBIERR_ISARRAY (ERRBASE_QUERY+DBICODE_ISARRAY) #define DBIERR_LABELERR (ERRBASE_QUERY+DBICODE_LABELERR) #define DBIERR_LINKCALC (ERRBASE_QUERY+DBICODE_LINKCALC) #define DBIERR_LNGVNAME (ERRBASE_QUERY+DBICODE_LNGVNAME) #define DBIERR_LONGQURY (ERRBASE_QUERY+DBICODE_LONGQURY) #define DBIERR_MEMVPROC (ERRBASE_QUERY+DBICODE_MEMVPROC) #define DBIERR_MISNGCOM (ERRBASE_QUERY+DBICODE_MISNGCOM) #define DBIERR_MISNGRPA (ERRBASE_QUERY+DBICODE_MISNGRPA) #define DBIERR_MISSRTQU (ERRBASE_QUERY+DBICODE_MISSRTQU) #define DBIERR_NAMTWICE (ERRBASE_QUERY+DBICODE_NAMTWICE) #define DBIERR_NOCHKMAR (ERRBASE_QUERY+DBICODE_NOCHKMAR) #define DBIERR_NODEFOCC (ERRBASE_QUERY+DBICODE_NODEFOCC) #define DBIERR_NOGROUPS (ERRBASE_QUERY+DBICODE_NOGROUPS) #define DBIERR_NONSENSE (ERRBASE_QUERY+DBICODE_NONSENSE) #define DBIERR_NOPATTER (ERRBASE_QUERY+DBICODE_NOPATTER) #define DBIERR_NOSUCHDA (ERRBASE_QUERY+DBICODE_NOSUCHDA) #define DBIERR_NOVALUE (ERRBASE_QUERY+DBICODE_NOVALUE) #define DBIERR_ONLYCONS (ERRBASE_QUERY+DBICODE_ONLYCONS) #define DBIERR_ONLYSETR (ERRBASE_QUERY+DBICODE_ONLYSETR) #define DBIERR_OUTSENS1 (ERRBASE_QUERY+DBICODE_OUTSENS1) #define DBIERR_OUTTWIC1 (ERRBASE_QUERY+DBICODE_OUTTWIC1) #define DBIERR_PAROWCNT (ERRBASE_QUERY+DBICODE_PAROWCNT) #define DBIERR_PERSEPAR (ERRBASE_QUERY+DBICODE_PERSEPAR) #define DBIERR_PROCPLSW (ERRBASE_QUERY+DBICODE_PROCPLSW) #define DBIERR_PWINSRTS (ERRBASE_QUERY+DBICODE_PWINSRTS) #define DBIERR_PWMODRTS (ERRBASE_QUERY+DBICODE_PWMODRTS) #define DBIERR_QBEFLDFOUND (ERRBASE_QUERY+DBICODE_QBEFLDFOUND) #define DBIERR_QBENOFENCE (ERRBASE_QUERY+DBICODE_QBENOFENCE) #define DBIERR_QBENOFENCET (ERRBASE_QUERY+DBICODE_QBENOFENCET) #define DBIERR_QBENOHEADERT (ERRBASE_QUERY+DBICODE_QBENOHEADERT) #define DBIERR_QBENOTAB (ERRBASE_QUERY+DBICODE_QBENOTAB) #define DBIERR_QBENUMCOLS (ERRBASE_QUERY+DBICODE_QBENUMCOLS) #define DBIERR_QBEOPENTAB (ERRBASE_QUERY+DBICODE_QBEOPENTAB) #define DBIERR_QBETWICE (ERRBASE_QUERY+DBICODE_QBETWICE) #define DBIERR_QRYNOANSWER (ERRBASE_QUERY+DBICODE_QRYNOANSWER) #define DBIERR_QRYNOTPREP (ERRBASE_QUERY+DBICODE_QRYNOTPREP) #define DBIERR_QUAINDEL (ERRBASE_QUERY+DBICODE_QUAINDEL) #define DBIERR_QUAININS (ERRBASE_QUERY+DBICODE_QUAININS) #define DBIERR_RAGININS (ERRBASE_QUERY+DBICODE_RAGININS) #define DBIERR_RAGINSET (ERRBASE_QUERY+DBICODE_RAGINSET) #define DBIERR_ROWUSERR (ERRBASE_QUERY+DBICODE_ROWUSERR) #define DBIERR_SETEXPEC (ERRBASE_QUERY+DBICODE_SETEXPEC) #define DBIERR_SETVAMB1 (ERRBASE_QUERY+DBICODE_SETVAMB1) #define DBIERR_SETVBAD1 (ERRBASE_QUERY+DBICODE_SETVBAD1) #define DBIERR_SETVDEF1 (ERRBASE_QUERY+DBICODE_SETVDEF1) #define DBIERR_SUMNUMBE (ERRBASE_QUERY+DBICODE_SUMNUMBE) #define DBIERR_TBLISWP3 (ERRBASE_QUERY+DBICODE_TBLISWP3) #define DBIERR_TOKENNOT (ERRBASE_QUERY+DBICODE_TOKENNOT) #define DBIERR_TWOOUTR1 (ERRBASE_QUERY+DBICODE_TWOOUTR1) #define DBIERR_TYPEMISM (ERRBASE_QUERY+DBICODE_TYPEMISM) #define DBIERR_UNRELQ1 (ERRBASE_QUERY+DBICODE_UNRELQ1) #define DBIERR_UNUSEDST (ERRBASE_QUERY+DBICODE_UNUSEDST) #define DBIERR_USEINSDE (ERRBASE_QUERY+DBICODE_USEINSDE) #define DBIERR_USEOFCHG (ERRBASE_QUERY+DBICODE_USEOFCHG) #define DBIERR_VARMUSTF (ERRBASE_QUERY+DBICODE_VARMUSTF) #define DBIERR_REGISTER (ERRBASE_QUERY+DBICODE_REGISTER) #define DBIERR_LONGEXPR (ERRBASE_QUERY+DBICODE_LONGEXPR) #define DBIERR_REFRESH (ERRBASE_QUERY+DBICODE_REFRESH) #define DBIERR_CANCEXCEPT (ERRBASE_QUERY+DBICODE_CANCEXCEPT) #define DBIERR_DBEXCEPT (ERRBASE_QUERY+DBICODE_DBEXCEPT) #define DBIERR_MEMEXCEPT (ERRBASE_QUERY+DBICODE_MEMEXCEPT) #define DBIERR_FATALEXCEPT (ERRBASE_QUERY+DBICODE_FATALEXCEPT) #define DBIERR_QRYNIY (ERRBASE_QUERY+ DBICODE_QRYNIY) #define DBIERR_BADFORMAT (ERRBASE_QUERY+ DBICODE_BADFORMAT) #define DBIERR_QRYEMPTY (ERRBASE_QUERY+ DBICODE_QRYEMPTY) #define DBIERR_NOQRYTOPREP (ERRBASE_QUERY+ DBICODE_NOQRYTOPREP) #define DBIERR_BUFFTOOSMALL (ERRBASE_QUERY+ DBICODE_BUFFTOOSMALL) #define DBIERR_QRYNOTPARSE (ERRBASE_QUERY+ DBICODE_QRYNOTPARSE) #define DBIERR_NOTHANDLE (ERRBASE_QUERY+ DBICODE_NOTHANDLE) #define DBIERR_QRYSYNTERR (ERRBASE_QUERY+ DBICODE_QRYSYNTERR) #define DBIERR_QXFLDCOUNT (ERRBASE_QUERY+ DBICODE_QXFLDCOUNT) #define DBIERR_QXFLDSYMNOTFOUND (ERRBASE_QUERY+ DBICODE_QXFLDSYMNOTFOUND) #define DBIERR_QXTBLSYMNOTFOUND (ERRBASE_QUERY+ DBICODE_QXTBLSYMNOTFOUND) #define DBIERR_BLOBTERM (ERRBASE_QUERY+ DBICODE_BLOBTERM) #define DBIERR_BLOBERR (ERRBASE_QUERY+ DBICODE_BLOBERR) #define DBIERR_RESTARTQRY (ERRBASE_QUERY+ DBICODE_RESTARTQRY) #define DBIERR_UNKNOWNANSTYPE (ERRBASE_QUERY+ DBICODE_UNKNOWNANSTYPE) #define DBIERR_SQLG_MDIST (ERRBASE_QUERY+ DBICODE_SQLG_MDIST) #define DBIERR_SQLG_NOARI (ERRBASE_QUERY+ DBICODE_SQLG_NOARI) #define DBIERR_SQLG_LIKEN (ERRBASE_QUERY+ DBICODE_SQLG_LIKEN) #define DBIERR_SQLG_ALPHO (ERRBASE_QUERY+ DBICODE_SQLG_ALPHO) #define DBIERR_SQLG_DATEO (ERRBASE_QUERY+ DBICODE_SQLG_DATEO) #define DBIERR_SQLG_RELOP (ERRBASE_QUERY+ DBICODE_SQLG_RELOP) #define DBIERR_SQLG_ONLYC (ERRBASE_QUERY+ DBICODE_SQLG_ONLYC) #define DBIERR_SQLG_CNTLN (ERRBASE_QUERY+ DBICODE_SQLG_CNTLN) #define DBIERR_SQLG_CHINI (ERRBASE_QUERY+ DBICODE_SQLG_CHINI) #define DBIERR_SQLG_UNION (ERRBASE_QUERY+ DBICODE_SQLG_UNION) #define DBIERR_SQLG_SLFIN (ERRBASE_QUERY+ DBICODE_SQLG_SLFIN) #define DBIERR_SQLG_OTJVR (ERRBASE_QUERY+ DBICODE_SQLG_OTJVR) #define DBIERR_SQLG_STROW (ERRBASE_QUERY+ DBICODE_SQLG_STROW) #define DBIERR_SQLG_QUANT (ERRBASE_QUERY+ DBICODE_SQLG_QUANT) #define DBIERR_SQLG_REGSO (ERRBASE_QUERY+ DBICODE_SQLG_REGSO) #define DBIERR_SQLG_COUNT (ERRBASE_QUERY+ DBICODE_SQLG_COUNT) #define DBIERR_SQLG_AVERA (ERRBASE_QUERY+ DBICODE_SQLG_AVERA) #define DBIERR_SQLG_DATEA (ERRBASE_QUERY+ DBICODE_SQLG_DATEA) #define DBIERR_SQLG_BADPT (ERRBASE_QUERY+ DBICODE_SQLG_BADPT) #define DBIERR_SQLG_RELPA (ERRBASE_QUERY+ DBICODE_SQLG_RELPA) #define DBIERR_SQLG_PATRN (ERRBASE_QUERY+ DBICODE_SQLG_PATRN) #define DBIERR_SQLG_FNDSU (ERRBASE_QUERY+ DBICODE_SQLG_FNDSU) #define DBIERR_SQLG_IFDCS (ERRBASE_QUERY+ DBICODE_SQLG_IFDCS) #define DBIERR_SQLG_IDCCO (ERRBASE_QUERY+ DBICODE_SQLG_IDCCO) #define DBIERR_SQLG_ONLYI (ERRBASE_QUERY+ DBICODE_SQLG_ONLYI) #define DBIERR_SQLG_SQLDIALECT (ERRBASE_QUERY+ DBICODE_SQLG_SQLDIALECT) #define DBIERR_SQLG_NOQUERY (ERRBASE_QUERY+ DBICODE_SQLG_NOQUERY) #define DBIERR_BLOBGROUP (ERRBASE_QUERY+ DBICODE_BLOBGROUP) #define DBIERR_QRYNOPROP (ERRBASE_QUERY+DBICODE_QRYNOPROP) #define DBIERR_ANSTYPNOTSUP (ERRBASE_QUERY+DBICODE_ANSTYPNOTSUP) #define DBIERR_ANSALIASNOTSUP (ERRBASE_QUERY+DBICODE_ANSALIASNOTSUP) #define DBIERR_INSBLOBREQ (ERRBASE_QUERY+DBICODE_INSBLOBREQ ) // 0x9a #define DBIERR_CHGUNIQUENDXREQ (ERRBASE_QUERY+DBICODE_CHGUNIQUENDXREQ) // 0x9b #define DBIERR_DELUNIQUENDXREQ (ERRBASE_QUERY+DBICODE_DELUNIQUENDXREQ) // 0x9c #define DBIERR_SQLNOFULLUPDATE (ERRBASE_QUERY+DBICODE_SQLNOFULLUPDATE) // 0x9d #define DBIERR_CANTEXECREMOTE (ERRBASE_QUERY+DBICODE_CANTEXECREMOTE) // 0x9e #define DBIERR_UNEXPECTEDEOC (ERRBASE_QUERY+DBICODE_UNEXPECTEDEOC) #define DBIERR_SQLPARAMNOTSET (ERRBASE_QUERY+DBICODE_SQLPARAMNOTSET) #define DBIERR_QUERYTOOLONG (ERRBASE_QUERY+DBICODE_QUERYTOOLONG) // END_OF_QUERY_MESSAGES // ERRCAT_VERSION // =============== #define ERRCODE_INTERFACEVER 1 // Interface mismatch #define ERRCODE_INDEXOUTOFDATE 2 // Index is out of date #define ERRCODE_OLDVERSION 3 // Older version (see context) #define ERRCODE_VALFILEINVALID 4 // Val. file is out of date #define ERRCODE_BLOBVERSION 5 // Old Blob file version #define ERRCODE_ENGQRYMISMATCH 6 // Query and ODAPI are mismatched #define ERRCODE_SERVERVERSION 7 // Server is incompatible version #define DBIERR_INTERFACEVER (ERRBASE_VERSION + ERRCODE_INTERFACEVER) #define DBIERR_INDEXOUTOFDATE (ERRBASE_VERSION + ERRCODE_INDEXOUTOFDATE) #define DBIERR_OLDVERSION (ERRBASE_VERSION + ERRCODE_OLDVERSION) #define DBIERR_VALFILEINVALID (ERRBASE_VERSION + ERRCODE_VALFILEINVALID) #define DBIERR_BLOBVERSION (ERRBASE_VERSION + ERRCODE_BLOBVERSION) #define DBIERR_ENGQRYMISMATCH (ERRBASE_VERSION + ERRCODE_ENGQRYMISMATCH) #define DBIERR_SERVERVERSION (ERRBASE_VERSION + ERRCODE_SERVERVERSION) // ERRCAT_CAPABILITY // ================= #define ERRCODE_NOTSUPPORTED 1 // Capability not supported #define ERRCODE_NIY 2 // Not Implemented Yet #define ERRCODE_TABLESQL 3 // Cannot access SQL replica #define ERRCODE_SEARCHCOLREQD 4 // Searchable (Non-blob column) required #define ERRCODE_NOMULTCONNECT 5 // Multiple connections not supported #define ERRCODE_NODBASEEXPR 6 // Full dBASE Expressions not supported #define DBIERR_NOTSUPPORTED (ERRBASE_CAPABILITY + ERRCODE_NOTSUPPORTED) #define DBIERR_NIY (ERRBASE_CAPABILITY + ERRCODE_NIY) #define DBIERR_TABLESQL (ERRBASE_CAPABILITY + ERRCODE_TABLESQL) #define DBIERR_SEARCHCOLREQD (ERRBASE_CAPABILITY + ERRCODE_SEARCHCOLREQD) #define DBIERR_NOMULTCONNECT (ERRBASE_CAPABILITY + ERRCODE_NOMULTCONNECT) #define DBIERR_NODBASEEXPR (ERRBASE_CAPABILITY + ERRCODE_NODBASEEXPR) // ERRCAT_CONFIG // ============= #define ERRCODE_INVALIDDBSPEC 1 #define ERRCODE_UNKNOWNDBTYPE 2 #define ERRCODE_INVALIDSYSDATA 3 #define ERRCODE_UNKNOWNNETTYPE 4 #define ERRCODE_NOTONTHATNET 5 #define ERRCODE_INVALIDCFGPARAM 6 // Generic invalid config param #define DBIERR_INVALIDDBSPEC (ERRBASE_CONFIG + ERRCODE_INVALIDDBSPEC) #define DBIERR_UNKNOWNDBTYPE (ERRBASE_CONFIG + ERRCODE_UNKNOWNDBTYPE) #define DBIERR_INVALIDSYSDATA (ERRBASE_CONFIG + ERRCODE_INVALIDSYSDATA) #define DBIERR_UNKNOWNNETTYPE (ERRBASE_CONFIG + ERRCODE_UNKNOWNNETTYPE) #define DBIERR_NOTONTHATNET (ERRBASE_CONFIG + ERRCODE_NOTONTHATNET) #define DBIERR_INVALIDCFGPARAM (ERRBASE_CONFIG + ERRCODE_INVALIDCFGPARAM) // ERRCAT_WARNING non-fatal warnings: // warn user of action, or ask for optional behavior // ============== #define ERRCODE_OBJIMPLICITLYDROPPED 1 #define ERRCODE_OBJMAYBETRUNCATED 2 #define ERRCODE_OBJIMPLICITLYMODIFIED 3 #define ERRCODE_VALIDATEDATA 4 #define ERRCODE_VALFIELDMODIFIED 5 #define ERRCODE_TABLELEVELCHANGED 6 #define ERRCODE_COPYLINKEDTABLES 7 #define ERRCODE_OTHERSERVERLOADED 8 #define ERRCODE_OBJIMPLICITLYTRUNCATED 9 #define ERRCODE_VCHKMAYNOTBEENFORCED 10 #define ERRCODE_MULTIPLEUNIQRECS 11 #define ERRCODE_FIELDMUSTBETRIMMED 12 #define DBIERR_OBJIMPLICITLYDROPPED \ ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYDROPPED) #define DBIERR_OBJMAYBETRUNCATED (ERRBASE_WARNING + ERRCODE_OBJMAYBETRUNCATED) #define DBIERR_OBJIMPLICITLYMODIFIED \ ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYMODIFIED) #define DBIERR_VALIDATEDATA \ ( ERRBASE_WARNING + ERRCODE_VALIDATEDATA) #define DBIERR_VALFIELDMODIFIED \ ( ERRBASE_WARNING + ERRCODE_VALFIELDMODIFIED) #define DBIERR_TABLELEVELCHANGED \ ( ERRBASE_WARNING + ERRCODE_TABLELEVELCHANGED) #define DBIERR_COPYLINKEDTABLES \ ( ERRBASE_WARNING + ERRCODE_COPYLINKEDTABLES) #define DBIERR_OTHERSERVERLOADED \ ( ERRBASE_WARNING + ERRCODE_OTHERSERVERLOADED) #define DBIERR_OBJIMPLICITLYTRUNCATED \ ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYTRUNCATED) #define DBIERR_VCHKMAYNOTBEENFORCED \ ( ERRBASE_WARNING + ERRCODE_VCHKMAYNOTBEENFORCED ) #define DBIERR_MULTIPLEUNIQRECS \ ( ERRBASE_WARNING + ERRCODE_MULTIPLEUNIQRECS ) #define DBIERR_FIELDMUSTBETRIMMED \ ( ERRBASE_WARNING + ERRCODE_FIELDMUSTBETRIMMED ) // ERRCAT_OTHER // ============ #define ERRCODE_FILEEXISTS 1 // File already exsits #define ERRCODE_BLOBMODIFIED 2 // Another user modified Blob #define ERRCODE_UNKNOWNSQL 3 // Unknown SQL error #define ERRCODE_TABLEEXISTS 4 // Table already exsits #define ERRCODE_PDX10TABLE 5 // Paradox 1.0 tables not supported #define DBIERR_FILEEXISTS (ERRBASE_OTHER + ERRCODE_FILEEXISTS) #define DBIERR_BLOBMODIFIED (ERRBASE_OTHER + ERRCODE_BLOBMODIFIED) #define DBIERR_UNKNOWNSQL (ERRBASE_OTHER + ERRCODE_UNKNOWNSQL) #define DBIERR_TABLEEXISTS (ERRBASE_OTHER + ERRCODE_TABLEEXISTS) #define DBIERR_PDX10TABLE (ERRBASE_OTHER + ERRCODE_PDX10TABLE) // // ERRCAT_COMPATIBILITY // ===================== #define ERRCODE_DIFFSORTORDER 1 // Sortorders not compatible #define ERRCODE_DIRINUSEBYOLDVER 2 // Directory in use by old version #define ERRCODE_PDX35LDDRIVER 3 // Needs Pdox 3.5 compatible language driver #define DBIERR_DIFFSORTORDER (ERRBASE_COMPATIBILITY + ERRCODE_DIFFSORTORDER) #define DBIERR_DIRINUSEBYOLDVER (ERRBASE_COMPATIBILITY + ERRCODE_DIRINUSEBYOLDVER) #define DBIERR_PDX35LDDRIVER (ERRBASE_COMPATIBILITY + ERRCODE_PDX35LDDRIVER) // ERRCAT_OPTPARAM // =============== #define ERRCODE_REQOPTPARAM 1 // Required optional parameter missing #define ERRCODE_INVALIDOPTPARAM 2 // Optional param out-of-range or bad #define DBIERR_REQOPTPARAM (ERRBASE_OPTPARAM + ERRCODE_REQOPTPARAM) #define DBIERR_INVALIDOPTPARAM (ERRBASE_OPTPARAM + ERRCODE_INVALIDOPTPARAM) #endif // NODBIERRS #ifndef NODBIPROTOTYPES //============================================================================ // DBI prototypes //============================================================================ // Environmental //---------------------------------------------------------------------------- DBIResult DBIFN DbiInitFn ( // Initialize the Engine UINT16 iVer, // Interface Version pDBIEnv pEnv // Environment Structure/NULL ); // DO NOT CALL THIS DIRECTLY. Use the 'DbiInit' define below. // Initializes the engine environment. Default settings can be overwritten // by supplying the appropriate settings. Defaults are read from the system // configuration file. pEnv can be NULLP to get the system defautls. #define DbiInit(pEnv) DbiInitFn(DBIINTFVER, pEnv) DBIResult DBIFN DbiExit(VOID); // Exit engine //============================================================================ // System Level Info //============================================================================ DBIResult DBIFN DbiGetSysVersion ( // Get system version info pSYSVersion psysVersion ); DBIResult DBIFN DbiGetSysConfig ( // System configuration pSYSConfig psysConfig ); DBIResult DBIFN DbiGetClientInfo ( // Get Client info pCLIENTInfo pclientInfo ); DBIResult DBIFN DbiGetSysInfo ( // Get system status/info pSYSInfo psysInfo ); DBIResult DBIFN DbiLoadDriver ( // Load a given driver pCHAR pszDriverType // Driver name ); //============================================================================ // Sessions //============================================================================ DBIResult DBIFN DbiStartSession ( // Start a new session pCHAR pszName, // Name (Optional) phDBISes phSes , // Session pCHAR pNetDir // Netfile directory for session (opt) ); DBIResult DBIFN DbiGetCurrSession ( // Get the current session phDBISes phSes // Session ); DBIResult DBIFN DbiSetCurrSession ( // Set the current session hDBISes hSes // Session/NULL ); DBIResult DBIFN DbiCloseSession ( // Close the current session hDBISes hSes // Session ); DBIResult DBIFN DbiGetSesInfo ( // Get current session info pSESInfo psesInfo ); DBIResult DBIFN DbiSetPrivateDir ( // Set Private Directory for session pCHAR pszDir // Directory name/NULL ); //============================================================================ // Datababase, Schema and File inquiry //============================================================================ DBIResult DBIFN DbiOpenDatabase ( // Open a database pCHAR pszDbName, // Database name pCHAR pszDbType, // Database type (NULL: Universal) DBIOpenMode eOpenMode, // Open type DBIShareMode eShareMode, // Share type pCHAR pszPassword, // Password UINT16 iOptFlds, // Number of optional Params pFLDDesc pOptFldDesc, // Optional Field Descriptors pBYTE pOptParams, // Optional Params phDBIDb phDb // Returnd database handle ); DBIResult DBIFN DbiSetDirectory ( // Set the current directory hDBIDb hDb, // Universal database handle pCHAR pszDir // Directory/NULL ); DBIResult DBIFN DbiGetDirectory ( // Get the current/default directory hDBIDb hDb, // Universal database handle BOOL bDefault, // True for default pCHAR pszDir // Returned directory ); DBIResult DBIFN DbiOpenTableList ( // Open a cursor on "Tables" hDBIDb hDb, // Database handle BOOL bExtended, // True for extended info BOOL bSystem, // True to include system tables pCHAR pszWild, // Wild card name phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiOpenFileList ( // Open a cursor on "Files" hDBIDb hDb, // Universal database handle pCHAR pszWild, // Wild card name phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiOpenIndexList ( // Return "Indexes" for a table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type phDBICur phCur); // Returned cursor on "Indexes" DBIResult DBIFN DbiOpenFieldList ( // Return "Fields" for a table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type BOOL bPhyTypes, // True, for physical types phDBICur phCur); // Returned cursor on "Fields" DBIResult DBIFN DbiOpenVchkList ( // Return "Checks" for a table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver Type phDBICur phChkCur); // Returned cursor on "Checks" DBIResult DBIFN DbiOpenRintList ( // Return Integrity checks hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type phDBICur phChkCur); // Returned cursor on "Ref Int". DBIResult DBIFN DbiOpenSecurityList ( // Return security descriptions hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type phDBICur phSecCur // Returned cursor on sec list ); DBIResult DBIFN DbiOpenFamilyList ( // Return family members hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type phDBICur phFmlCur // Returned cursor on "Family" ); DBIResult DBIFN DbiOpenSPList( // Open a cursor on "Stored Procedures" hDBIDb hDb, // Universal database handle BOOL bExtended, // True for extended info (N/A) BOOL bSystem, // True to include system procedures pCHAR pszQual, // Qualifier (N/A) phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiOpenSPParamList ( // Return "Parameters" for a stored procedure hDBIDb hDb, // Database handle pCHAR pszSPName, // Stored procedure name BOOL bPhyTypes, // True, for physical types UINT16 uOverload, // Overload number phDBICur phCur // Returned cursor on "Parameters" ); DBIResult DBIFN DbiCloseDatabase ( // Close a database phDBIDb phDb // Pointer to database handle ); //============================================================================ // Capabilities //============================================================================ DBIResult DBIFN DbiOpenDriverList ( // Get a list of driver names phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiGetDriverDesc ( // Get description for a given type pCHAR pszDriverType, // Symbolic name for driver type pDRVType pdrvType // Driver type description ); DBIResult DBIFN DbiOpenDatabaseList ( // Get a list of registered databases phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiGetDatabaseDesc ( // Get a description of a logical db pCHAR pszName, // Name of logical database pDBDesc pdbDesc // Database description ); DBIResult DBIFN DbiOpenTableTypesList ( // Get a list of table types pCHAR pszDriverType, // Driver type phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiGetTableTypeDesc ( // Get Table capabilities pCHAR pszDriverType, // Driver type pCHAR pszTableType, // Table type pTBLType ptblType // Table Capabilities ); DBIResult DBIFN DbiOpenFieldTypesList ( // Get a list of field types pCHAR pszDriverType, // Driver type pCHAR pszTblType, // Table type (Optional) phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiGetFieldTypeDesc ( // Get list of field types pCHAR pszDriverType, // Driver type pCHAR pszTableType, // Table type pCHAR pszFieldType, // Field type (Physical only) pFLDType pfldType // Field type description ); DBIResult DBIFN DbiOpenIndexTypesList ( // Get list of index types pCHAR pszDriverType, // Driver type phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiGetIndexTypeDesc ( // Get description of given idx type pCHAR pszDriverType, // Driver type pCHAR pszIndexType, // Index type pIDXType pidxType // Index description ); DBIResult DBIFN DbiOpenLdList ( // Get a list of Lang Drivers phDBICur phCur // Returned cursor ); //=========================================================================== // Table Open, Properties & Structure //=========================================================================== DBIResult DBIFN DbiOpenTable ( // Open a table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name or file name pCHAR pszDriverType, // Driver type /NULL pCHAR pszIndexName, // Index to be used for access /NULL pCHAR pszIndexTagName, // Index tag name /NULL UINT16 iIndexId, // Index number /0 DBIOpenMode eOpenMode, // Read or RW DBIShareMode eShareMode, // Excl or Share XLTMode exltMode, // Xlate mode BOOL bUniDirectional, // Uni or Bi directional pBYTE pOptParams, // Optional params /NULL phDBICur phCursor // Returns Cursor handle ); DBIResult DBIFN DbiGetCursorProps ( // Get Cursor properties hDBICur hCursor, // Cursor handle pCURProps pcurProps // Cursor properties ); DBIResult DBIFN DbiGetObjFromName ( // Get object from name DBIOBJType eObjType , // Object handle pCHAR pszObjName , // Name of object /NULL phDBIObj phObj // Returned object handle ); DBIResult DBIFN DbiGetObjFromObj ( // Get associated object hDBIObj hObj , // Object handle DBIOBJType eObjType , // Type of associated object phDBIObj phObj // Returns object of eObjType ); DBIResult DBIFN DbiGetProp ( // Get property hDBIObj hObj , // Object handle UINT32 iProp , // Property to retrieve pVOID pPropValue, // == NULL, validate iProp for getting UINT16 iMaxLen, // Length of buffer pPropValue pUINT16 piLen // Returns required length ); DBIResult DBIFN DbiSetProp ( // Set property hDBIObj hObj , // Object handle UINT32 iProp , // Property to set UINT32 iPropValue // Property value ); DBIResult DBIFN DbiValidateProp ( // Validate a property hDBIObj hObj, // Object handle UINT32 iProp, // property to validate BOOL bSetting // TRUE:setting, FALSE:getting ); DBIResult DBIFN DbiGetFieldDescs ( // Get field descriptions hDBICur hCursor, // Cursor handle pFLDDesc pfldDesc // Array of field descriptors ); DBIResult DBIFN DbiGetCursorForTable (// Find cursor for a given table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type / NULL phDBICur phCursor // Returned cursor ); DBIResult DBIFN DbiCloneCursor ( // Return a duplicate cursor hDBICur hCurSrc, // Source cursor BOOL bReadOnly, // If TRUE, read only mode BOOL bUniDirectional, // If TRUE, Uni directional phDBICur phCurNew // Destination cursor address ); DBIResult DBIFN DbiCloseCursor ( // Closes cursor phDBICur phCursor // Pntr to Cursor handle ); //============================================================================ // Index Manipulation & Usage //============================================================================ DBIResult DBIFN DbiOpenIndex ( // Open an index hDBICur hCursor, // Cursor handle pCHAR pszIndexName, // Index Name UINT16 iIndexId // Index number (if applicable) ); DBIResult DBIFN DbiCloseIndex ( // Close an index hDBICur hCursor, // Cursor handle pCHAR pszIndexName, // Index Name UINT16 iIndexId // Index number ); DBIResult DBIFN DbiSwitchToIndex ( // Change index order of access phDBICur phCursor, // Cursor handle (In/Out) pCHAR pszIndexName, // Index name pCHAR pszTagName, // Tag name (if applicable) UINT16 iIndexId, // Index number BOOL bCurrRec // Position at current rec ); DBIResult DBIFN DbiGetIndexDesc ( // Get index properties hDBICur hCursor, // Cursor handle UINT16 iIndexSeqNo, // Index number pIDXDesc pidxDesc // Returned index description ); DBIResult DBIFN DbiGetIndexDescs ( // Get index properties hDBICur hCursor, // Cursor handle pIDXDesc pidxDesc // Returned index descriptors ); DBIResult DBIFN DbiGetIndexForField ( // Get index desc for given field hDBICur hCursor, // Cursor handle UINT16 iFld, // Field Number (1..N) BOOL bProdTagOnly, // If TRUE, only xBASE prod tags will be returned pIDXDesc pidxDesc // (Optional) ); DBIResult DBIFN DbiGetIndexSeqNo( // Get index sequence number hDBICur hCursor, // Cursor handle pCHAR pszIndexName, // Index name pCHAR pszTagName, // Tag name (if applicable) UINT16 iIndexId, // Index number pUINT16 piIndexSeqNo // Index number ); DBIResult DBIFN DbiSetToKey ( // Set key condition hDBICur hCursor, // Cursor handle DBISearchCond eSearchCond, // Search condition (default is =) BOOL bDirectKey, // Key is supplied directly UINT16 iFields, // No of full fields to match UINT16 iLen, // Partial key len of last field pBYTE pBuff // Either Record buffer or Key itself ); DBIResult DBIFN DbiExtractKey ( // Get the key value of current record hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record buffer (optional) pBYTE pKeyBuf // Returned. Key bytes. ); DBIResult DBIFN DbiSetRange ( // Set cursor to a range hDBICur hCursor, // Cursor BOOL bKeyItself, // Whether Key or Record buffer UINT16 iFields1, // Key fields to be mathced in full UINT16 iLen1, // Key length to compare pBYTE pKey1, // Top/Left key in Range BOOL bKey1Incl, // If Inclusive of Key1 UINT16 iFields2, // Key fields to be mathced in full UINT16 iLen2, // Key length to compare pBYTE pKey2, // Bottom/Right key in Range BOOL bKey2Incl // If Inclusive of Key2 ); DBIResult DBIFN DbiResetRange ( // Reset range hDBICur hCursor // cursor handle ); DBIResult DBIFN DbiCompareKeys ( // Compare two keys hDBICur hCursor, // Cursor handle pBYTE pKey1, // Key buffer 1 to compare pBYTE pKey2, // Key buffer 2 (Or NULL) UINT16 iFields, // Fields to compare in full UINT16 iLen, // Partial key to compare pINT16 piResult // Compare result ); DBIResult DBIFN DbiGetRecordForKey ( // Find a record matching key hDBICur hCursor, // Cursor handle BOOL bDirectKey, // Key is supplied directly UINT16 iFields, // No of full fields to match UINT16 iLen, // Partial key len of last field pBYTE pKey, // Either Record buffer or Key itself pBYTE pRecBuff // (Optional) Record buffer ); //============================================================================= // Validity check and referential integrity //============================================================================= DBIResult DBIFN DbiGetVchkDesc ( // Get valcheck descriptor hDBICur hCursor, // Cursor handle UINT16 iValSeqNo, // Valcheck sequence number pVCHKDesc pvalDesc // Returned valcheck description ); DBIResult DBIFN DbiGetRintDesc ( // Get referential integrity descriptor hDBICur hCursor, // Cursor handle UINT16 iRintSeqNo, // Rint sequence number pRINTDesc printDesc // Returned rint description ); //============================================================================= // Cursor Maintenance //============================================================================= DBIResult DBIFN DbiSetToBegin ( // Reset cursor to beginning hDBICur hCursor // Cursor handle ); DBIResult DBIFN DbiSetToEnd ( // Reset cursor to ending hDBICur hCursor // Cursor handle ); DBIResult DBIFN DbiSetToCursor ( // Set cursor to another cursor position hDBICur hDest, // Destination cursor hDBICur hSrc // Source cursor ); DBIResult DBIFN DbiGetBookMark ( // Get a book-mark hDBICur hCur, // Cursor pBYTE pBookMark // Pointer to Book-Mark ); DBIResult DBIFN DbiSetToBookMark ( // Position to a Book-Mark hDBICur hCur, // Cursor pBYTE pBookMark // Pointer to Book-Mark ); DBIResult DBIFN DbiCompareBookMarks ( // Compare two Book-marks hDBICur hCur, // Cursor pBYTE pBookMark1, // Book mark 1 pBYTE pBookMark2, // Book mark 2 pCMPBkMkRslt pCmpBkmkResult // Compare result ); //============================================================================ // Data Access: Logical Record Level //============================================================================ DBIResult DBIFN DbiGetNextRecord ( // Find/Get the next record hDBICur hCursor, // Cursor handle DBILockType eLock, // Optional lock request pBYTE pRecBuff, // Record buffer(client) pRECProps precProps // Optional record properties ); DBIResult DBIFN DbiGetPriorRecord ( // Find/Get the prior record hDBICur hCursor, // Cursor handle DBILockType eLock, // Optional lock request pBYTE pRecBuff, // Record buffer (client) pRECProps precProps // Optional record properties ); DBIResult DBIFN DbiGetRecord ( // Gets the current record hDBICur hCursor, // Cursor handle DBILockType eLock, // Optional lock request pBYTE pRecBuff, // Record buffer(client) pRECProps precProps // Optional record properties ); DBIResult DBIFN DbiGetRelativeRecord (// Find/Get a record by record number hDBICur hCursor, // Cursor handle INT32 iPosOffset, // offset from current position DBILockType eLock, // Optional lock request pBYTE pRecBuff, // Record buffer(client) pRECProps precProps // Optional record properties ); DBIResult DBIFN DbiInitRecord ( // Initialize record area hDBICur hCursor, // Cursor handle pBYTE pRecBuff // Record buffer ); DBIResult DBIFN DbiInsertRecord ( // Inserts a new record hDBICur hCursor, // Cursor handle DBILockType eLock, // Optional lock on this rec pBYTE pRecBuff // New Record (client) ); DBIResult DBIFN DbiModifyRecord ( // Updates the current record hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Modified record BOOL bFreeLock // Free record lock ); DBIResult DBIFN DbiDeleteRecord ( // Deletes the current record hDBICur hCursor, // Cursor handle pBYTE pRecBuf // Copy of deleted record ); DBIResult DBIFN DbiReadBlock ( // Read a block of records hDBICur hCursor, // Cursor handle pUINT32 piRecords, // Number of records to read pBYTE pBuf // Buffer ); DBIResult DBIFN DbiWriteBlock ( // Write a block of records hDBICur hCursor, // Cursor handle pUINT32 piRecords, // Number of records to write/written pBYTE pBuf // Buffer ); DBIResult DBIFN DbiAppendRecord ( // Inserts a new record hDBICur hCursor, // Cursor handle pBYTE pRecBuff // New Record (client) ); DBIResult DBIFN DbiUndeleteRecord ( // Undeletes the current record hDBICur hCursor // Cursor handle ); DBIResult DBIFN DbiGetSeqNo ( // Get logical record number hDBICur hCursor, // Cursor handle pUINT32 piSeqNo // Pointer to sequence number ); DBIResult DBIFN DbiSetToSeqNo ( // Position to a logical record number hDBICur hCursor, // Cursor handle UINT32 iSeqNo // Sequence number ); DBIResult DBIFN DbiGetRecordCount ( // Get the current number of records hDBICur hCursor, // Cursor handle pUINT32 piRecCount // Number of records ); DBIResult DBIFN DbiSetToRecordNo ( // Position to Physical Rec# hDBICur hCursor, // Cursor handle UINT32 iRecNo // Physical record number ); DBIResult DBIFN DbiSaveChanges ( // Flush all buffered changes hDBICur hCursor // Cursor handle ); DBIResult DBIFN DbiForceReread ( // Force Reread of buffers from Disk hDBICur hCursor // Cursor ); DBIResult DBIFN DbiCheckRefresh (VOID); // Check refresh for session DBIResult DBIFN DbiMakePermanent ( // Make temporary table permanent hDBICur hCursor, // Cursor handle pCHAR pszName, // Rename temporary table BOOL bOverWrite // Overwrite existing file ); //============================================================================ // Field Level Access //============================================================================ DBIResult DBIFN DbiGetField( // Get Field value hDBICur hCursor, // Cursor UINT16 iField, // Field # (1..n) pBYTE pRecBuff, // Record buffer pBYTE pDest, // Destination field buffer pBOOL pbBlank // Returned : is field blank ); DBIResult DBIFN DbiPutField( // Put a value in the record buffer hDBICur hCursor, // Cursor UINT16 iField, // Field # (1..n) pBYTE pRecBuff, // Record buffer pBYTE pSrc // Source field buffer ); DBIResult DBIFN DbiVerifyField( // Verifies the field value hDBICur hCursor, // Cursor UINT16 iField, // Field # (1..n) pBYTE pSrc, // Field Value pBOOL pbBlank // Field is Blank (Returned) ); DBIResult DBIFN DbiOpenBlob ( // Open a blob for access hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField, // Field number (1..n) DBIOpenMode eOpenMode // Open for Read or RW ); DBIResult DBIFN DbiGetBlobSize ( // Gets the size of a blob hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField, // Field number of blob (1..n) pUINT32 piSize // Blob size in bytes ); DBIResult DBIFN DbiGetBlob ( // Read bytes from blob hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField, // Field number of blob (1..n) UINT32 iOffSet, // Starting position UINT32 iLen, // No of bytes to be read pBYTE pDest, // Destination pUINT32 piRead // Actual no of bytes read ); DBIResult DBIFN DbiPutBlob ( // Write bytes to blob hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField, // Field number of blob (1..n) UINT32 iOffSet, // Starting position UINT32 iLen, // No of bytes to put pBYTE pSrc // pntr to Source ); DBIResult DBIFN DbiTruncateBlob ( // Reduces the blob size hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField, // Field number of blob (1..n) UINT32 iLen // New blob length ); DBIResult DBIFN DbiFreeBlob ( // Closes the blob hDBICur hCursor, // Cursor handle pBYTE pRecBuf, // Record Buffer UINT16 iField // Field number of blob (0..n) ); DBIResult DBIFN DbiGetBlobHeading ( // Get Blob Heading hDBICur hCursor, // Cursor handle UINT16 iField, // Field number of blob (1..n) pBYTE pRecBuf, // Record buffer of owner record pBYTE pDest // Destination buffer ); DBIResult DBIFN DbiSetFieldMap( // Set a fieldmap hDBICur hCur, // Cursor handle UINT16 iFields, // Number of fields pFLDDesc pFldDesc // Array of field descriptions ); //============================================================================= // TRANSACTIONS //============================================================================= DBIResult DBIFN DbiBeginTran ( // Begin a transaction hDBIDb hDb, // Database handle eXILType eXIL, // Transaction isolation level phDBIXact phXact // Returned Xact handle ); DBIResult DBIFN DbiEndTran ( // End a transaction hDBIDb hDb, // Database handle hDBIXact hXact, // Xact handle eXEnd eEnd // Xact end type ); DBIResult DBIFN DbiGetTranInfo ( // Get transaction info hDBIDb hDb, // Database handle hDBIXact hXact, // Xact handle pXInfo pxInfo // Xact info ); //============================================================================= // LOCKING //============================================================================= DBIResult DBIFN DbiAcqTableLock ( // Lock a table hDBICur hCursor, // Cursor handle DBILockType eLockType // Lock type ); DBIResult DBIFN DbiAcqPersistTableLock (// Get a persistent lock hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType // Driver type / NULL ); DBIResult DBIFN DbiRelPersistTableLock (// Releases a persistent lock hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType // Driver type / NULL ); DBIResult DBIFN DbiRelTableLock ( // Unlocks Table level locks hDBICur hCursor, // Cursor handle BOOL bAll, // True for all table level locks DBILockType eLockType // Specific lock type ); DBIResult DBIFN DbiRelRecordLock ( // Releases record level locks hDBICur hCursor, // Cursor handle BOOL bAll // True for all. Default Current. ); DBIResult DBIFN DbiIsRecordLocked ( // Check if current record is locked hDBICur hCursor, // Cursor handle pBOOL pbLocked // Rec lock status ); DBIResult DBIFN DbiIsTableLocked ( // Verify if Table is locked hDBICur hCursor, // Cursor handle DBILockType epdxLock, // Lock type to verify pUINT16 piLocks // Nbr of locks of the given type ); DBIResult DBIFN DbiIsTableShared ( // Verify if this is a shared table hDBICur hCursor, // Cursor handle pBOOL pbShared // Shared status ); DBIResult DBIFN DbiOpenLockList ( // Get a list of locks hDBICur hCursor, // Cursor handle BOOL bAllUsers, // True, for all Users locks BOOL bAllLockTypes, // True, for all lock types phDBICur phLocks // Returned cursor on Lock list ); DBIResult DBIFN DbiOpenUserList ( // Get a list of users loggedin phDBICur phUsers // Returned cursor on user list ); DBIResult DBIFN DbiSetLockRetry ( // Set Lock wait time INT16 iWait // Time in seconds ); //============================================================================ // Batch Operations //============================================================================ DBIResult DBIFN DbiBatchMove ( // Copy records to destination table pBATTblDesc pSrcTblDesc, // Source table identification, hDBICur hSrcCur, // OR source cursor ( one must be NULL ) pBATTblDesc pDstTblDesc , // Destination table identification, hDBICur hDstCur, // OR destination cursor ( one must be NULL ) eBATMode ebatMode, // Batch mode UINT16 iFldCount, // Size of field maps pUINT16 pSrcFldMap, // Array of source field numbers pCHAR pszIndexName, // If update mode, used to match records pCHAR pszIndexTagName, // Index tag name UINT16 iIndexId, // Index id pCHAR pszKeyviolName, // Keyviol table name (optional) pCHAR pszProblemsName, // Problems table name (optional) pCHAR pszChangedName, // Changed table name (optional) pUINT32 plProbRecs, // Number of records to read from source pUINT32 plKeyvRecs, // Number of records to read from source pUINT32 plChangedRecs, // Number of records to read from source BOOL bAbortOnFirstProb, // If TRUE, abort on first problem rec BOOL bAbortOnFirstKeyviol, // If TRUE, abort on first keyviol rec pUINT32 plRecsToMove, // Number of records to read from source // Returns number actually read BOOL bTransliterate // If TRUE, transliterate character data // in fields between src&dst char sets ); DBIResult DBIFN DbiCopyTable ( // Copy one table to another hDBIDb hDb, // Database handle BOOL bOverWrite, // True, to overwrite existing file pCHAR pszSrcTableName, // Source table name pCHAR pszSrcDriverType, // Source driver type pCHAR pszDestTableName // Destination table name ); DBIResult DBIFN DbiEmptyTable ( // Deletes all records hDBIDb hDb, // Database handle hDBICur hCursor, // Cursor (OR) pCHAR pszTableName, // Table name pCHAR pszDriverType // Driver type /NULL ); DBIResult DBIFN DbiPackTable ( // Pack a table hDBIDb hDb, // Database handle hDBICur hCursor, // Cursor (OR) pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type /NULL BOOL bRegenIdxs // Regenerate indexes ); DBIResult DBIFN DbiRegenIndex ( // Regenerate an index hDBIDb hDb, // Database handle hDBICur hCursor, // Cursor (OR) pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type /NULL pCHAR pszIndexName, // Index name pCHAR pszIndexTagName, // Index tagname (xbase MDX) UINT16 iIndexId // Index number ); DBIResult DBIFN DbiRegenIndexes ( // Regenerate all indexes hDBICur hCursor // Cursor ); DBIResult DBIFN DbiSortTable ( // Sort table hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name of source pCHAR pszDriverType, // Driver type /NULL hDBICur hSrcCur, // OR cursor of table to sort pCHAR pszSortedName, // Destination table (NULL if sort to self) phDBICur phSortedCur, // If non-null, return cursor on destination hDBICur hDstCur, // OR cursor of destination UINT16 iSortFields, // Number of sort fields pUINT16 piFieldNum, // Array of field numbers pBOOL pbCaseInsensitive, // Which fields should sort c-i (Opt) pSORTOrder pSortOrder, // Array of Sort orders (Opt) pfSORTCompFn *ppfSortFn, // Array of compare fn pntrs (Opt) BOOL bRemoveDups, // TRUE : Remove duplicates hDBICur hDuplicatesCur, // Cursor to duplicates table (Opt) pUINT32 plRecsSort // In/out param. - sort this number // of records from current position, return // number actually output to dest. (Opt) ); //============================================================================ // Create & Restructure //============================================================================ DBIResult DBIFN DbiCreateTable ( // Create a new table hDBIDb hDb, // Database handle BOOL bOverWrite, // True, to overwrite existing file. pCRTblDesc pcrTblDsc // Table description ); DBIResult DBIFN DbiCreateInMemTable ( // Create a temporary table (Logical) hDBIDb hDb, // Database handle pCHAR pszName, // Logical Name UINT16 iFields, // No of fields pFLDDesc pfldDesc, // Array of field descriptors phDBICur phCursor // Returned cursor handle ); DBIResult DBIFN DbiCreateTempTable ( // Create temporary table (Physical) hDBIDb hDb, // Database handle pCRTblDesc pcrTblDsc, // Table description phDBICur phCursor // Returned cursor on table ); DBIResult DBIFN DbiDoRestructure ( // Restructure a table hDBIDb hDb, // Database handle UINT16 iTblDescCount, // Number of table descriptors (1) pCRTblDesc pTblDesc, // Array of table descs pCHAR pszSaveAs, // Restructure to this table pCHAR pszKeyviolName, // Keyviol table name (optional) pCHAR pszProblemsName, // Problems table name (optional) BOOL bAnalyzeOnly // Analyze restructure ); DBIResult DBIFN DbiRenameTable ( // Rename table & family hDBIDb hDb, // Database handle pCHAR pszOldName, // Old name pCHAR pszDriverType, // Driver type /NULL pCHAR pszNewName // New name ); DBIResult DBIFN DbiDeleteTable ( // Delete a table hDBIDb hDb, // Database handle pCHAR pszTableName, // Name including any path pCHAR pszDriverType // Driver type /NULL ); DBIResult DBIFN DbiAddIndex ( // Add a new index hDBIDb hDb, // Database handle hDBICur hCursor, // Cursor (OR) pCHAR pszTableName, // Table name including any path pCHAR pszDriverType, // Driver type /NULL pIDXDesc pIdxDesc , // Description of the index pCHAR pszKeyviolName // Keyviol table name (optional) ); DBIResult DBIFN DbiDeleteIndex ( // Delete index hDBIDb hDb, // Database handle hDBICur hCursor, // Cursor (OR) pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type /NULL pCHAR pszIndexName, // Index name pCHAR pszIndexTagName, // Index tagname (xbase MDX) UINT16 iIndexId // Index number ); //=========================================================================== // Error Info //=========================================================================== DBIResult DBIFN DbiGetErrorEntry ( // Get error entry UINT16 uEntry, // Error stack entry pUINT32 pulNativeError, // Returned. Native error code, if any pCHAR pszError // Returned. Error string, if any ); DBIResult DBIFN DbiGetErrorInfo ( // Return info on last error BOOL bFull, // If Full details pDBIErrInfo pErrInfo // Error Info ); DBIResult DBIFN DbiGetErrorString ( // Get message for error code DBIResult rslt, // Engine error code pCHAR pszError // Error string for the error ); DBIResult DBIFN DbiGetErrorContext ( // Get specific Context if available INT16 eContext, // Context type pCHAR pszContext // Context string (MAXMSGLEN +1) ); //============================================================================ // Dbi Services //============================================================================ DBIResult DBIFN DbiDateEncode ( // Encode Date components into Date UINT16 iMon, // Month (1..12) UINT16 iDay, // Day (1..31) INT16 iYear, // Year (0..2**16-1) pDBIDATE pdateD // Encoded date ); DBIResult DBIFN DbiDateDecode ( // Decode Date into components DBIDATE dateD, // Encoded Date pUINT16 piMon, // Month pUINT16 piDay, // Day pINT16 piYear // Year ); DBIResult DBIFN DbiTimeEncode ( // Encode Time components into TIME UINT16 iHour, // Hours (0..23) UINT16 iMin, // Minutes (0..59) UINT16 iMilSec, // Milli Seconds (0..59999) pTIME ptimeT // Encoded Time ); DBIResult DBIFN DbiTimeDecode ( // Decode TIME into components TIME timeT, // Encoded Time pUINT16 piHour, // Hours (0..23) pUINT16 piMin, // Minutes (0..59) pUINT16 piMilSec // Milli Seconds (0..59999) ); DBIResult DBIFN DbiTimeStampEncode ( // Encode Date & TIme into Date+Time DBIDATE dateD, // Encoded Date TIME timeT, // Encoded Time pTIMESTAMP ptsTS // Encoded Date+Time ); DBIResult DBIFN DbiTimeStampDecode ( // Decode Date & Time from Date+Time TIMESTAMP tsTS, // Encoded Date+Time pDBIDATE pdateD, // Encoded Date pTIME ptimeT // Encoded Time ); DBIResult DBIFN DbiBcdFromFloat( // Converts FLOAT number into FMTBcd format pDFLOAT piVal , // Float to convert UINT16 iPrecision, // Precision of BCD UINT16 iPlaces , // Number of decimals pFMTBcd pBcd // returns Bcd number (length = iPrecision +2) ); DBIResult DBIFN DbiBcdToFloat( // Converts FMTBcd number to FLOAT pFMTBcd pBcd, // Bcd number to convert pDFLOAT piVal // Returns converted float ); //=========================================================================== // CallBacks //=========================================================================== DBIResult DBIFN DbiRegisterCallBack ( // Register a call back fn hDBICur hCursor, // Cursor (Optional) CBType ecbType, // Type of call back UINT32 iClientData, // Pass-thru client data UINT16 iCbBufLen, // Callback buffer len pVOID pCbBuf, // Pointer to callback buffer pfDBICallBack pfCb // Call back fn being registered ); DBIResult DBIFN DbiGetCallBack ( // Register a call back fn hDBICur hCursor, // Cursor (Optional) CBType ecbType, // Type of call back pUINT32 piClientData, // Pass-thru client data pUINT16 piCbBufLen, // Callback buffer len ppVOID ppCbBuf, // Pointer to callback buffer ppfDBICallBack ppfCb // Call back fn being registered ); //============================================================================ // Date, time formats //============================================================================ DBIResult DBIFN DbiGetDateFormat ( // Get current date format pFMTDate pfmtDate ); DBIResult DBIFN DbiSetDateFormat ( // Set current date format pFMTDate pfmtDate ); DBIResult DBIFN DbiGetTimeFormat ( // Get current time format pFMTTime pfmtTime ); DBIResult DBIFN DbiSetTimeFormat ( // Set current time format pFMTTime pfmtTime ); DBIResult DBIFN DbiGetNumberFormat ( // Get current number format pFMTNumber pfmtNumber ); DBIResult DBIFN DbiSetNumberFormat ( // Set current number format pFMTNumber pfmtNumber ); //============================================================================ // Conversions //============================================================================ DBIResult DBIFN DbiNativeToAnsi( // Convert from native to Ansi pVOID pLdObj , // Language driver pCHAR pAnsiStr, // Destination buffer (opt) pCHAR pNativeStr , // Source buffer UINT16 iLen , // Length of buffer (opt) pBOOL pbDataLoss // Returns TRUE if conversion will loose data (opt) ); DBIResult DBIFN DbiAnsiToNative( // Convert from Ansi to native pVOID pLdObj , // Language driver pCHAR pNativeStr , // Destination buffer (opt) pCHAR pAnsiStr, // Source buffer UINT16 iLen , // Length of buffer (opt) pBOOL pbDataLoss // Returns TRUE if conversion will loose data (opt) ); //============================================================================ // Filters //============================================================================ #if !defined(MIDL) DBIResult DBIFN DbiAddFilter( // Add a filter to the cursor hDBICur hCursor, // Cursor handle UINT32 iClientData, // Client supplied data (opt) UINT16 iPriority, // 1..N with 1 being highest (opt) BOOL bCanAbort, // TRUE if pfFiltercan return ABORT (opt) pCANExpr pcanExpr, // Expression tree (opt) pfGENFilter pfFilter, // ptr to filter function (opt) phDBIFilter phFilter // Returns filter handle ); #endif // !defined(MIDL) DBIResult DBIFN DbiDropFilter( // Drop a filter hDBICur hCursor, // Cursor handle hDBIFilter hFilter // Filter handle ); DBIResult DBIFN DbiActivateFilter( // Activate a Filter hDBICur hCursor, // Cursor handle hDBIFilter hFilter // Filter handle ); DBIResult DBIFN DbiDeactivateFilter( // Deactivate Filter hDBICur hCursor, // Cursor handle hDBIFilter hFilter // Filter handle ); #if !defined(MIDL) DBIResult DBIFN DbiGetFilterInfo( // Get filter information hDBICur hCur , // Cursor handle hDBIFilter hFilter , // Filter handle /NULL UINT16 iFilterId, // Filter id /0 UINT16 iFilterSeqNo, // Filter sequence number /0 pFILTERInfo pFilterinfo // Returns filter info ); #endif // !defined(MIDL) //============================================================================ // Linked Cursors //============================================================================ DBIResult DBIFN DbiBeginLinkMode( // Convert cursor to a link cursor phDBICur phCursor // In/Out : returns new cursor ); DBIResult DBIFN DbiEndLinkMode ( // Convert cursor back to normal cursor phDBICur phCursor // In/Out : returns original cursor ); DBIResult DBIFN DbiLinkDetail( // Link detail to master hDBICur hMstrCursor, // Master cursor hDBICur hDetlCursor, // Detail cursor UINT16 iLnkFields, // Number of link fields pUINT16 piMstrFields, // Array of fields in master pUINT16 piDetlFields // Array of fields in detail ); DBIResult DBIFN DbiLinkDetailToExp( // Link detail to a master using exp hDBICur hCursorMstr, // Master cursor hDBICur hCursorDetl, // Detail cursor UINT16 iKeyLen, // Key length to match pCHAR pszMstrExp // Expression string ); DBIResult DBIFN DbiUnlinkDetail ( // Unlink detail from master hDBICur hDetlCursor // Detail cursor to unlink ); DBIResult DBIFN DbiGetLinkStatus( // Query linkage info for table hDBICur hCursor, // Cursor handle phDBICur phCursorMstr, // Returns master cursor, if any (opt) phDBICur phCursorDet, // Returns first detail cursor, if any (opt) phDBICur phCursorSib // Returns next sibling detail cursor, if any (opt) ); //=========================================================================== // Translation //=========================================================================== DBIResult DBIFN DbiTranslateRecordStructure ( // Translate a record pCHAR pszSrcDriverType, // Source driver type UINT16 iFlds, // Number of fields pFLDDesc pfldsSrc, // Array of source fields: logical or physical types pCHAR pszDstDriverType, // Destination driver type pCHAR pszLangDriver, // Language driver for destination pFLDDesc pfldsDst // Array of dest. fields returned ); DBIResult DBIFN DbiOpenFieldXlt ( // Open translation object pCHAR pszSrcTblType, // NULL for Logical pCHAR pszSrcLangDrv, // NULL if no tranliteration pFLDDesc pfldSrc, // source field descriptor pCHAR pszDestTblType, // NULL for Logical pCHAR pszDstLangDrv, // NULL if no tranliteration pFLDDesc pfldDest, // Source field descriptor pBOOL pbDataLoss, // Set to TRUE, for data loss phDBIXlt phXlt // Returned translate handle ); DBIResult DBIFN DbiTranslateField ( // Translate a field hDBIXlt hXlt, // Translation handle pBYTE pSrc, // Source field pBYTE pDest // Destination field ); DBIResult DBIFN DbiCloseFieldXlt ( // Close translation object hDBIXlt hXlt // Translation handle ); //=========================================================================== // MISC. //=========================================================================== DBIResult DBIFN DbiGetTableOpenCount ( // Get local cursor count hDBIDb hDb, // Database pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type /NULL pUINT16 piOpenCount // returned number of cursors ); DBIResult DBIFN DbiUseIdleTime ( // Use Idle time VOID ); DBIResult DBIFN DbiGetLdObj ( // Get language driver hDBICur hCursor, // Cursor handle pVOID *ppLdObj // Returned language driver object ); DBIResult DBIFN DbiGetLdName ( // Get language driver name from table pCHAR pszDriver, // Driver name pCHAR pObjName, // Name of object, i.e. table name pCHAR pLdName // Returned language driver name ); DBIResult DBIFN DbiFormFullName ( // Form Full Name hDBIDb hDb, // Database handle pCHAR pszTableName, // Table name pCHAR pszDriverType, // Driver type /NULL pCHAR pszFullName // Returns full name ); DBIResult DBIFN DbiAddPassword ( // Add a password to current session pCHAR pszPassword // Password ); DBIResult DBIFN DbiDropPassword ( // Drop a password from current session pCHAR pszPassword // password/NULL ); DBIResult DBIFN DbiGetNetUserName ( // Get network username pCHAR pszNetUserName // Returns username ); DBIResult DBIFN DbiDebugLayerOptions (// Get SDK debug layer options UINT16 iOption, // Option pCHAR pDebugFile // ); DBIResult DBIFN DbiOpenCfgInfoList ( // Open a cursor on "Config" hDBICfg hCfg, // NULL DBIOpenMode eOpenMode, // ReadWrite or readonly CFGMode eConfigMode, // Config mode pCHAR pszCfgPath, // Path phDBICur phCur // Returned cursor ); DBIResult DBIFN DbiAddAlias ( // Add a new alias hDBICfg hCfg, // NULL pCHAR pszAliasName, // Alias name pCHAR pszDriverType, // Driver type for alias pCHAR pszParams, // Optional parameters BOOL bPersist // Persistent or session relative ); DBIResult DBIFN DbiDeleteAlias ( // Add a new alias hDBICfg hCfg, // NULL pCHAR pszAliasName // Alias name ); #ifndef NODBIQBE //=========================================================================== // Query Management //=========================================================================== DBIResult DBIFN DbiQExecDirect ( // Execute query hDBIDb hDb, // Database handle DBIQryLang eQryLang, // Query language pCHAR pszQuery, // Query phDBICur phCur // Returned cursor on result set ); DBIResult DBIFN DbiQPrepare ( // Prepare a query hDBIDb hDb, // Database handle DBIQryLang eQryLang, // Query language pCHAR pszQuery, // Query phDBIStmt phStmt // Returned statment handle ); DBIResult DBIFN DbiQPrepareExt ( // Prepare a query hDBIDb hDb, // Database handle DBIQryLang eQryLang, // Query language pCHAR pszQuery, // Query UINT16 propBits, // properties for Prepare, e.g. qprepFORUPDATE phDBIStmt phStmt // Returned statment handle ); DBIResult DBIFN DbiQExec ( // Execute prepared query hDBIStmt hStmt, // Statement handle phDBICur phCur // Returned handle on result set ); DBIResult DBIFN DbiQFree ( // Free statement handle phDBIStmt phStmt // Statement handle ); DBIResult DBIFN DbiQSetParams ( // Set query options hDBIStmt hStmt, // Statement handle UINT16 uFldDescs, // Number of parameter field descriptors pFLDDesc paFldDescs, // Array of parameter field descriptors pBYTE pRecBuff // Record buffer ); DBIResult DBIFN DbiQInstantiateAnswer ( // Create answer table hDBIStmt hStmt, // Statement Handle hDBICur hCur, // Cursor Handle pCHAR pszAnswerName, // Answer Table Name/NULL pCHAR pszAnswerType, // Answer Table Type/NULL BOOL bOverWrite, // Overwrite Flag phDBICur phCur // cursor to instantiated table (output)(optional) ); DBIResult DBIFN DbiQExecProcDirect ( // Direct execution of stored procedure hDBIDb hDb, // Database handle pCHAR pszProc, // Stored procedure name UINT16 uParamDescs, // Number of parameter descriptors pSPParamDesc paParamDescs, // Array of parameter descriptors pBYTE pRecBuff, // Record buffer phDBICur phCur // Returned handle on result set ); DBIResult DBIFN DbiQPrepareProc ( // Prepare a stored procedure hDBIDb hDb, // Database handle pCHAR pszProc, // Stored procedure name UINT16 uParamDescs, // Number of parameter descriptors pSPParamDesc paParamDescs, // Array of parameter descriptors pBYTE pRecBuff, // Record buffer phDBIStmt phStmt // Returned statment handle ); DBIResult DBIFN DbiQSetProcParams ( // Set procedure params hDBIStmt hStmt, // Statement handle UINT16 uParamDescs, // Number of parameter descriptors pSPParamDesc paParamDescs, // Array of parameter descriptors pBYTE pRecBuff // Record buffer ); #endif // NODBIQBE #endif // NODBIPROTOTYPES #ifdef __cplusplus } #endif // __cplusplus #if ! (defined(lint) || defined(_lint)) # if ( _MSC_VER >= 800 ) || (defined(__BORLANDC__) && defined(__FLAT__)) # pragma warning(disable:4103) # if !(defined( MIDL_PASS )) || defined( __midl ) # pragma pack(pop) # else # pragma pack() # endif # elif defined(__BORLANDC__) && !defined(__FLAT__) # pragma option -a. # else # pragma pack() # endif #endif // ! (defined(lint) || defined(_lint)) #endif