BDE.int
Upload User: wangqy1229
Upload Date: 2007-01-22
Package Size: 13966k
Code Size: 284k
Category:

E-Books

Development Platform:

Delphi

  1.     esType: SQLType;                     { value 2 for Column type. }
  2.     szColName: packed array[0..NAMELENGTH] of Char;{ Column Name. }
  3.     bColQuote: Bool;                      { TRUE = Column Name quoted. }
  4.     szColAlias: packed array[0..NAMELENGTH] of Char;{ Column Alias, if exists. }
  5.     bColAlQuote: Bool;                    { TRUE = Alias Name quoted. }
  6.     szColRelation: packed array[0..NAMELENGTH] of Char;{ Relation associated by alias. }
  7.     szColOwner: packed array[0..NAMELENGTH] of Char;{ Owner of table. }
  8.     eCheck: CHECKType;                   { Check Mark. }
  9.     paiRowCheck: PWord;                  { Array of rows which have checks. }
  10.     iColAggr: Smallint;                  { Column Projected Aggregate. }
  11.     iColExmpl: Integer;                  { Column Example Element. }
  12.     plCell: pLIST;                       { List of Cells for each column. }
  13.   end;
  14.   pSQLConstant = ^SQLConstant;
  15.   SQLConstant = packed record        { Constant structure. }
  16.     esType: SQLType;                    { value 3 for Constant type. }
  17.     szConstValue: packed array[0..NAMELENGTH] of Char;{ Constant Value. }
  18.   end;
  19.   SQLOp = (opUNKNOWNOP, opEQUAL, opNOTEQ, opLESSEQUAL, opGREQUAL, opLESS,
  20.     opGREATER, opLIKE, opNOT, opPLUSX, opMINUSX, opTIMESX, opDIVX, opAND, opOR,
  21.     opBLANK, opAS, opOUTERJOIN, opNOTLIKE, opCHANGETO, opUPPER, opLOWER, opTRIM,
  22.     opSUBSTRING, opPAND, opPOR, opPNOT, opEXTRACT, opFULLOTRJOIN);
  23.   pSQLExpr = ^SQLExpr;
  24.   SQLExpr = packed record            { Expression structure. }
  25.     esType: SQLType;                    { value 4 for Expression type. }
  26.     eOp: SQLOp;                         { Operator for the Objects. }
  27.     plOperands: pLIST;                  { Operands, Objects. }
  28.   end;
  29.   pSQLAggr = ^SQLAggr;
  30.   SQLAggr = packed record            { Aggregate structure. }
  31.     esType: SQLType;                    { value 5 for Aggr. }
  32.     pcolAggr: pSQLColumn;               { Column where aggr occurs. }
  33.     iAggr: Smallint;                    { Type of Aggr. }
  34.     bProjAggr: Bool;                    { Is a Projection Aggr.? }
  35.     pAggrName: pSQLConstant;            { New Aggr's field name. }
  36.   end;
  37.   pSQLCell = ^SQLCell;
  38.   SQLCell = packed record            { Cell structure. }
  39.     esType: SQLType;                    { Value 6 for Cell type. }
  40.     szCellValue: packed array[0..NAMELENGTH] of Char;{ Cell Value. }
  41.     iRow: Integer;                      { Row number of cell value, 0 based. }
  42.   end;
  43.   SQLObject = packed record
  44.     case Integer of
  45.      0: (esType: SQLType);
  46.      1: (pRel: SQLRelation);   {  RELTYPE   (1)  Relation Information. }
  47.      2: (pCol: SQLColumn);     {  COLTYPE   (2)  Column Information. }
  48.      3: (pConst: SQLConstant); {  CONSTYPE  (3)  Constant Information. }
  49.      4: (pExpr: SQLExpr);      {  EXPRTYPE  (4)  Expression Information. }
  50.      5: (pAggr: SQLAggr);      {  AGGRTYPE  (5)  Aggregate Information. }
  51.      6: (pCell: SQLCell);      {  CELLTYPE  (6)  Cell Information. }
  52.   end;
  53. const
  54.   REQVERSION         = 3;                { Version of request structure. }
  55. type
  56.   PSQLRequest = ^TSQLRequest;
  57.   TSQLRequest = packed record           { SQL request. }
  58.     iVersion        : Word;             { Version of request. }
  59.     iMemMark        : Integer;          { Memory Mark to free request. }
  60.     hQry            : hDBIQry;          { Query handle for memory mark. }
  61.     erType          : REQType;          { Request type. }
  62.     hDb             : hDBIDb;           { Database handle. }
  63.     hStmt           : hDBIStmt;         { Statement handle used for parameter binding. }
  64.     iParams         : Integer;          { # of parameters found in SQL statement. }
  65.     iOptions        : Integer;          { Used for determining which options to set. }
  66.     iDistinct       : Integer;          { Has "DISTINCT" been specified. }
  67.     plRelation      : pLIST;            { List of SQLRelation. }
  68.     plProject       : pLIST;            { List of SQLColumn. }
  69.     plWhere         : pLIST;            { List of SQLExpr. }
  70.     plOrder         : pLIST;            { List of SQLColumn. }
  71.     plGroupBy       : pLIST;            { List of SQLColumn. }
  72.     plHaving        : pLIST;            { List of SQLObjects. }
  73.     plAlias         : pLIST;            { List of SQLConstant to represent aliases used. }
  74.    end;
  75. {============================================================================}
  76. {                      DBI Config symbols                                    }
  77. {============================================================================}
  78. { Categories }
  79. const
  80.   szCFGSYSTEM        = 'SYSTEM';
  81.   szCFGDRIVER        = 'DRIVERS';
  82.   szCFGDATABASE      = 'DATABASES';
  83.   szCFGREPOSITORY    = 'REPOSITORIES';
  84. {----------------------------------------------------------------------------}
  85. { System Fields                                                              }
  86. {----------------------------------------------------------------------------}
  87.   szCFGSYSVERSION    = 'VERSION';
  88.   szCFGSYSNETTYPE    = 'NET TYPE';
  89.   szCFGSYSNETDIR     = 'NET DIR';
  90.   szCFGSYSLOCALSHARE = 'LOCAL SHARE';
  91.   szCFGSYSLANGDRV    = 'LANGDRIVER';
  92.   szCFGSYSLANGDRVDIR = 'LANGDRVDIR';
  93.   szCFGSYSMINBUF     = 'MINBUFSIZE';
  94.   szCFGSYSMAXBUF     = 'MAXBUFSIZE';
  95.   szCFGSYSLOCKRETRY  = 'LOCKRETRY';
  96.   szCFGSYSFLAGS      = 'SYSFLAGS';
  97.   szCFGMAXFILEHANDLES = 'MAXFILEHANDLES';
  98.   szCFGSQLQRYMODE    = 'SQLQRYMODE';
  99.   szCFGLOWMEMLIMIT   = 'LOW MEMORY USAGE LIMIT'; { Use this instead of NOLOWMEMBUF }
  100.   szCFGSYSODBCCFGIMPORT = 'AUTO ODBC';
  101.   szCFGAUTOODBC      = 'AUTO ODBC';
  102.   szCFGDEFDRV        = 'DEFAULT DRIVER';
  103.   szCFGSYSLOCALREPOSITORY = 'DATA REPOSITORY';
  104.   szCFGSYSMEMSIZE    = 'MEMSIZE';
  105.   szCFGSYSSHAREDMEMSIZE = 'SHAREDMEMSIZE';
  106.   szCFGSYSSHAREDMEMLOCATION = 'SHAREDMEMLOCATION';
  107.   szCFGSYSMTSPOOLING = 'MTS POOLING';
  108. {----------------------------------------------------------------------------}
  109. { Driver Fields                                                              }
  110. {----------------------------------------------------------------------------}
  111.   szCFGDRVVERSION    = 'VERSION';
  112.   szCFGDRVTYPE       = 'TYPE';
  113.   szCFGDRVDLL        = 'DLL';
  114.   szCFGDRVDLL32      = 'DLL32';
  115.   szCFGDRVFLAGS      = 'DRIVER FLAGS';
  116.   szCFGDRVLANGDRIVER = 'LANGDRIVER';
  117.   szCFGDRVFILLFACTOR = 'FILL FACTOR';
  118.   szCFGDRVBLOCKSIZE  = 'BLOCK SIZE';
  119.   szCFGDRVLOCKPROTOCOL = 'LOCKPROTOCOL';
  120.   szCFGDRVLEVEL      = 'LEVEL';
  121.   szCFGDRVVENDINIT   = 'VENDOR INIT';
  122.   szCFGDRVTRACEMODE  = 'TRACE MODE';
  123. {----------------------------------------------------------------------------}
  124. { Dbase Driver fields                                                        }
  125. {----------------------------------------------------------------------------}
  126.   szCFGDRVMEMOBLOCKSIZE = 'MEMO FILE BLOCK SIZE';
  127.   szCFGDRVMDXBLOCKSIZE = 'MDX BLOCK SIZE';
  128. {----------------------------------------------------------------------------}
  129. { Driver Nodes                                                               }
  130. {----------------------------------------------------------------------------}
  131.   szCFGDRVINIT       = 'INIT';
  132.   szCFGDBCREATE      = 'DB CREATE';
  133.   szCFGDBOPEN        = 'DB OPEN';
  134.   szCFGTBLCREATE     = 'TABLE CREATE';
  135.   szCFGTBLOPEN       = 'TABLE OPEN';
  136. {----------------------------------------------------------------------------}
  137. { Database Nodes                                                             }
  138. {----------------------------------------------------------------------------}
  139.   szCFGDBINFO        = 'DB INFO';
  140. {----------------------------------------------------------------------------}
  141. { Database fields                                                            }
  142. {----------------------------------------------------------------------------}
  143.   szCFGDBTYPE        = 'TYPE';
  144.   szCFGDBPATH        = 'PATH';
  145.   szCFGDBDEFAULTDRIVER = 'DEFAULT DRIVER';
  146.   szCFGDBENABLEBCD   = 'ENABLE BCD';
  147. {----------------------------------------------------------------------------}
  148. { Others                                                                     }
  149. {----------------------------------------------------------------------------}
  150.   szCFGINIT          = 'INIT';
  151.   szTYPe             = 'TYPE';  { Changed from szTYPE to avoid urlmon.h conflict }
  152.   szCFGDBSTANDARD    = 'STANDARD';
  153.   szCFGTRUE          = 'TRUE';
  154.   szCFGFALSE         = 'FALSE';
  155.   szOPENMODE         = 'OPEN MODE';
  156.   szREADWRITE        = 'READ/WRITE';
  157.   szREADONLy         = 'READ ONLY';  { Changed from szREADONLY to avoid DSIntf.hpp conflict }
  158.   szSHAREMODE        = 'SHARE MODE';
  159.   szEXCLUSIVE        = 'EXCLUSIVE';
  160.   szSHARED           = 'SHARED';
  161.   szUSERNAME         = 'USER NAME';
  162.   szPASSWORD         = 'PASSWORD';
  163.   szSERVERNAME       = 'SERVER NAME';
  164.   szDATABASENAME     = 'DATABASE NAME';
  165.   szSCHEMASIZE       = 'SCHEMA CACHE SIZE';
  166.   szCFGSTRICTINTEGRITY = 'STRICTINTEGRTY';
  167.   szSQLPASSMODE      = 'SQLPASSTHRU MODE';
  168.   szNOTSHARED        = 'NOT SHARED';
  169.   szSHAREDAUTOCOMMIT = 'SHARED AUTOCOMMIT';
  170.   szSHAREDNOAUTOCOMMIT = 'SHARED NOAUTOCOMMIT';
  171.   szSCHEMATIME       = 'SCHEMA CACHE TIME';
  172.   szMAXQUERYTIME     = 'MAX QUERY TIME';
  173.   szMAXROWS          = 'MAX ROWS';
  174.   szLISTSYNONYMS     = 'LIST SYNONYMS';
  175.   szSYNNONE          = 'NONE';
  176.   szSYNALL           = 'ALL';
  177.   szSYNPRIVATE       = 'PRIVATE';
  178.   szBATCHCOUNT       = 'BATCH COUNT';
  179.   szBLOBCOUNT        = 'BLOBS TO CACHE'; 
  180.   szBLOBSIZE         = 'BLOB SIZE';
  181.   szOBJECTMODE       = 'OBJECT MODE';
  182.   szENABLESCHEMACACHE= 'ENABLE SCHEMA CACHE';
  183.   szSCHEMACACHEDIR   = 'SCHEMA CACHE DIR';
  184.   szSYBLHOST         = 'HOST NAME';
  185.   szSYBLAPP          = 'APPLICATION NAME';
  186.   szSYBLNATLANG      = 'NATIONAL LANG NAME';
  187.   szTDSPACKETSIZE    = 'TDS PACKET SIZE';
  188.   szORAINTEGER       = 'ENABLE INTEGERS';
  189.   szDBNLS            = 'DBNLS';
  190.   szCOLLCHAR         = 'COLLCHAR';
  191.   szROWSETSIZE       = 'ROWSET SIZE';
  192.   szCFG30            = '5.0';
  193.   szCFGSERVER        = 'SERVER';
  194.   szCFGIDODBC01      = 'IDODBC01.DLL';
  195.   szCFGIDODBC32      = 'IDODBC32.DLL';
  196.   szCFGODBCDRIVER    = 'ODBC DRIVER';
  197.   szCFGNULL          = '';
  198.   szCFGZERO          = '0';
  199.   szCFG20            = '20';
  200.   szCFG64            = '64';
  201.   szCFG32            = '32';
  202.   szCFGODBCDSN       = 'ODBC DSN';
  203.   szCFGTWOHUNDRED    = '200';
  204.   szCFGNEGONE        = '-1';
  205.   szCFGEIGHT         = '8';
  206.   szCLSID            = 'CLSID';
  207.   szCFGSYSTEMDB      = 'SYSTEM DATABASE';
  208.   szCFGOLEDBPROVIDER = 'OLE DB PROVIDER';
  209.   szCFGPERSISTFILE   = 'DATA SOURCE FILE';
  210.   szCFGOBJECTMODE    = 'OBJECT MODE';
  211. {----------------------------------------------------------------------------}
  212. { Repository fields                                                          }
  213. {----------------------------------------------------------------------------}
  214.   szCFGDRDBNAME      = 'DATABASE NAME';
  215.   szCFGDRTBLNAME     = 'TABLE NAME';
  216.   szCFGDRLANGDRIVER  = 'LANGUAGE DRIVER';
  217.   szCFGDRDESC        = 'DESCRIPTION';
  218. {----------------------------------------------------------------------------}
  219. { SYSTEM DATE/TIME/NUMBER FORMATS                                            }
  220. { SYSTEM nodes:                                                              }
  221. {----------------------------------------------------------------------------}
  222.   szCFGFORMAT        = 'FORMATS';
  223. {----------------------------------------------------------------------------}
  224. { Format nodes:                                                              }
  225. {----------------------------------------------------------------------------}
  226.   szCFGDATE          = 'DATE';
  227.   szCFGTIME          = 'TIME';
  228.   szCFGNUMBER        = 'NUMBER';
  229. {----------------------------------------------------------------------------}
  230. { DATE and/or TIME fields:                                                   }
  231. {----------------------------------------------------------------------------}
  232.   szCFGSEPARATOR     = 'SEPARATOR';
  233.   szCFGMODE          = 'MODE';
  234.   szCFGFOURDIGITYEAR = 'FOURDIGITYEAR';
  235.   szCFGYEARBIASED    = 'YEARBIASED';
  236.   szCFGLEADINGZEROM  = 'LEADINGZEROM';
  237.   szCFGLEADINGZEROD  = 'LEADINGZEROD';
  238.   szCFGTWELVEHOUR    = 'TWELVEHOUR';
  239.   szCFGAMSTRING      = 'AMSTRING';
  240.   szCFGPMSTRING      = 'PMSTRING';
  241.   szCFGSECONDS       = 'SECONDS';
  242.   szCFGMILSECONDS    = 'MILSECONDS';
  243. {----------------------------------------------------------------------------}
  244. { Number fields:                                                             }
  245. {----------------------------------------------------------------------------}
  246.   szCFGDECIMALSEPARATOR = 'DECIMALSEPARATOR';
  247.   szCFGTHOUSANDSEPARATOR = 'THOUSANDSEPARATOR';
  248.   szCFGDECIMALDIGITS = 'DECIMALDIGITS';
  249.   szCFGLEADINGZERON  = 'LEADINGZERON';
  250. { String resoure id's for each string listed above }
  251.   DBICFG_BASE        = $3A00;
  252. {----------------------------------------------------------------------------}
  253. { Categories                                                                 }
  254. {----------------------------------------------------------------------------}
  255.   iCFGSYSTEM         = (DBICFG_BASE + 1);
  256.   iCFGDRIVER         = (DBICFG_BASE + 2);
  257.   iCFGDATABASE       = (DBICFG_BASE + 3);
  258.   iCFGREPOSITORY     = (DBICFG_BASE + 210);
  259. {----------------------------------------------------------------------------}
  260. { System Fields                                                              }
  261. {----------------------------------------------------------------------------}
  262.   iCFGSYSVERSION     = (DBICFG_BASE + 5);
  263.   iCFGSYSNETTYPE     = (DBICFG_BASE + 6);
  264.   iCFGSYSNETDIR      = (DBICFG_BASE + 7);
  265.   iCFGSYSLOCALSHARE  = (DBICFG_BASE + 8);
  266.   iCFGSYSLANGDRV     = (DBICFG_BASE + 9);
  267.   iCFGSYSLANGDRVDIR  = (DBICFG_BASE + 10);
  268.   iCFGSYSMINBUF      = (DBICFG_BASE + 11);
  269.   iCFGSYSMAXBUF      = (DBICFG_BASE + 12);
  270.   iCFGSYSLOCKRETRY   = (DBICFG_BASE + 13);
  271.   iCFGSYSFLAGS       = (DBICFG_BASE + 14);
  272.   iCFGMAXFILEHANDLES = (DBICFG_BASE + 15);
  273.   iCFGSQLQRYMODE     = (DBICFG_BASE + 16);
  274.   iCFGLOWMEMLIMIT    = (DBICFG_BASE + 17);
  275.   iCFGSYSODBCCFGIMPORT = (DBICFG_BASE + 18);
  276.   iCFGSYSLOCALREPOSITORY = (DBICFG_BASE + 211);
  277.   iCFGSYSSHAREDMEMSIZE = (DBICFG_BASE + 250);
  278.   iCFGSYSSHAREDMEMLOCATION = (DBICFG_BASE + 251);
  279.   iCFGSYSMEMSIZE     = DBICFG_BASE + 125;
  280. {----------------------------------------------------------------------------}
  281. { Driver Fields                                                              }
  282. {----------------------------------------------------------------------------}
  283.   iCFGDRVVERSION     = (DBICFG_BASE + 20);
  284.   iCFGDRVTYPE        = (DBICFG_BASE + 21);
  285.   iCFGDRVLANGDRIVER  = (DBICFG_BASE + 22);
  286.   iCFGDRVFILLFACTOR  = (DBICFG_BASE + 23);
  287.   iCFGDRVBLOCKSIZE   = (DBICFG_BASE + 24);
  288.   iCFGDRVLOCKPROTOCOL = (DBICFG_BASE + 25);
  289.   iCFGDRVLEVEL       = (DBICFG_BASE + 26);
  290.   iCFGDRVFLAGS       = (DBICFG_BASE + 27);
  291.   iCFGDRVTRACEMODE   = (DBICFG_BASE + 28);
  292.   iCFGDRVDLL32       = (DBICFG_BASE + 29);
  293. {----------------------------------------------------------------------------}
  294. { Dbase Driver fields                                                        }
  295. {----------------------------------------------------------------------------}
  296.   iCFGDRVMEMOBLOCKSIZE = (DBICFG_BASE + 30 );
  297.   iCFGDRVMDXBLOCKSIZE = (DBICFG_BASE + 31 );
  298. {----------------------------------------------------------------------------}
  299. { Driver Nodes                                                               }
  300. {----------------------------------------------------------------------------}
  301.   iCFGDRVINIT        = (DBICFG_BASE + 40 );
  302.   iCFGDBCREATE       = (DBICFG_BASE + 41 );
  303.   iCFGDBOPEN         = (DBICFG_BASE + 42 );
  304.   iCFGTBLCREATE      = (DBICFG_BASE + 43 );
  305.   iCFGTBLOPEN        = (DBICFG_BASE + 44 );
  306. {----------------------------------------------------------------------------}
  307. { Database Nodes                                                             }
  308. {----------------------------------------------------------------------------}
  309.   iCFGDBINFO         = (DBICFG_BASE + 50 );
  310. {----------------------------------------------------------------------------}
  311. { Database fields                                                            }
  312. {----------------------------------------------------------------------------}
  313.   iCFGDBTYPE         = (DBICFG_BASE + 60);
  314.   iCFGDBPATH         = (DBICFG_BASE + 61);
  315.   iCFGDBDEFAULTDRIVER = (DBICFG_BASE + 62);
  316.   iCFGDBENABLEBCD    = (DBICFG_BASE + 63);
  317. {----------------------------------------------------------------------------}
  318. { Others                                                                     }
  319. {----------------------------------------------------------------------------}
  320.   iCFGINIT           = (DBICFG_BASE + 70);
  321.   iTYPE              = (DBICFG_BASE + 71);
  322.   iCFGDBSTANDARD     = (DBICFG_BASE + 72);
  323.   iCFGTRUE           = (DBICFG_BASE + 73);
  324.   iCFGFALSE          = (DBICFG_BASE + 74);
  325.   iOPENMODE          = (DBICFG_BASE + 75);
  326.   iREADWRITE         = (DBICFG_BASE + 76);
  327.   iREADONLY          = (DBICFG_BASE + 77);
  328.   iSHAREMODE         = (DBICFG_BASE + 78);
  329.   iEXCLUSIVE         = (DBICFG_BASE + 79);
  330.   iSHARED            = (DBICFG_BASE + 80);
  331.   iUSERNAME          = (DBICFG_BASE + 81);
  332.   iSERVERNAME        = (DBICFG_BASE + 82);
  333.   iDATABASENAME      = (DBICFG_BASE + 83);
  334.   iSCHEMASIZE        = (DBICFG_BASE + 84);
  335.   iCFGSTRICTINTEGRITY = (DBICFG_BASE + 85);
  336.   iTDSPACKETSIZE     = (DBICFG_BASE + 86);
  337.   iORAINTEGER        = (DBICFG_BASE + 87);
  338.   iDBNLS             = (DBICFG_BASE + 88);
  339.   iCOLLCHAR          = (DBICFG_BASE + 89);
  340.   { numbers 90-122 used in dbiext.h }
  341.   iROWSETSIZE        = (DBICFG_BASE + 134);
  342.   iCFGOBJECTMODE     = DBICFG_BASE + 135; 
  343. {----------------------------------------------------------------------------}
  344. { Repository Nodes                                                           }
  345. {----------------------------------------------------------------------------}
  346.   iCFGDRDBNAME       = (DBICFG_BASE + 213);
  347.   iCFGDRTBLNAME      = (DBICFG_BASE + 214);
  348.   iCFGDRDESC         = (DBICFG_BASE + 215);
  349.   iCFGDRLANGDRIVER   = (DBICFG_BASE + 212);
  350. {----------------------------------------------------------------------------}
  351. { System node:                                                               }
  352. {----------------------------------------------------------------------------}
  353.   iCFGFORMAT         = (DBICFG_BASE + 130);
  354. {----------------------------------------------------------------------------}
  355. { Format nodes:                                                              }
  356. {----------------------------------------------------------------------------}
  357.   iCFGDATE           = (DBICFG_BASE + 131);
  358.   iCFGTIME           = (DBICFG_BASE + 132);
  359.   iCFGNUMBER         = (DBICFG_BASE + 133);
  360. {----------------------------------------------------------------------------}
  361. { DATE and/or TIME fields:                                                   }
  362. {----------------------------------------------------------------------------}
  363.   iCFGSEPARATOR      = (DBICFG_BASE + 140);
  364.   iCFGMODE           = (DBICFG_BASE + 141);
  365.   iCFGFOURDIGITYEAR  = (DBICFG_BASE + 142);
  366.   iCFGYEARBIASED     = (DBICFG_BASE + 143);
  367.   iCFGLEADINGZEROM   = (DBICFG_BASE + 144);
  368.   iCFGLEADINGZEROD   = (DBICFG_BASE + 145);
  369.   iCFGTWELVEHOUR     = (DBICFG_BASE + 146);
  370.   iCFGAMSTRING       = (DBICFG_BASE + 147);
  371.   iCFGPMSTRING       = (DBICFG_BASE + 148);
  372.   iCFGSECONDS        = (DBICFG_BASE + 149);
  373.   iCFGMILSECONDS     = (DBICFG_BASE + 150);
  374. {----------------------------------------------------------------------------}
  375. { Number fields:                                                             }
  376. {----------------------------------------------------------------------------}
  377.   iCFGDECIMALSEPARATOR  = (DBICFG_BASE + 160);
  378.   iCFGTHOUSANDSEPARATOR = (DBICFG_BASE + 161);
  379.   iCFGDECIMALDIGITS     = (DBICFG_BASE + 162);
  380.   iCFGLEADINGZERON      = (DBICFG_BASE + 163);
  381.   iCFGDEFLANGDRV        = (DBICFG_BASE + 165);
  382.   iCFGDBASEDEFLANGDRV   = (DBICFG_BASE + 166);
  383. {----------------------------------------------------------------------------}
  384. { Formats                                                                    }
  385. {----------------------------------------------------------------------------}
  386.   iCFGDEFSEPARATOR          = (DBICFG_BASE + 170);
  387.   iCFGDEFMODE               = (DBICFG_BASE + 171);
  388.   iCFGDEFFOURDIGITYEAR      = (DBICFG_BASE + 172);
  389.   iCFGDEFYEARBIASED         = (DBICFG_BASE + 173);
  390.   iCFGDEFLEADINGZEROM       = (DBICFG_BASE + 174);
  391.   iCFGDEFLEADINGZEROD       = (DBICFG_BASE + 175);
  392.   iCFGDEFTWELVEHOUR         = (DBICFG_BASE + 176);
  393.   iCFGDEFAMSTRING           = (DBICFG_BASE + 177);
  394.   iCFGDEFPMSTRING           = (DBICFG_BASE + 178);
  395.   iCFGDEFSECONDS            = (DBICFG_BASE + 179);
  396.   iCFGDEFMILSECONDS         = (DBICFG_BASE + 180);
  397.   iCFGDEFDECIMALSEPARATOR   = (DBICFG_BASE + 181);
  398.   iCFGDEFTHOUSANDSEPARATOR  = (DBICFG_BASE + 182);
  399.   iCFGDEFLEADINGZERO        = (DBICFG_BASE + 183);
  400.   iCFGDEFVERSION            = (DBICFG_BASE + 184);
  401.   iCFGDEFLOCALSHARE         = (DBICFG_BASE + 185);
  402.   iCFGDEFMINBUFSIZE         = (DBICFG_BASE + 186);
  403.   iCFGDEFMAXBUFSIZE         = (DBICFG_BASE + 187);
  404.   iCFGDEFMAXFILEHANDLES     = (DBICFG_BASE + 188);
  405.   iCFGDEFSYSFLAGS           = (DBICFG_BASE + 189);
  406.   iCFGDEFLOWMEM             = (DBICFG_BASE + 190);
  407.   iCFGDEFAUTOODBC           = (DBICFG_BASE + 191);
  408.   iCFGDEFDEFDRV             = (DBICFG_BASE + 192);
  409.   iCFGDEFDECIMALDIGITS      = (DBICFG_BASE + 193);
  410.   iCFGDEFLEADINGZERON       = (DBICFG_BASE + 194);
  411.   iCFGDEFPDXTYPE            = (DBICFG_BASE + 195);
  412.   iCFGDEFPDXNETDIR          = (DBICFG_BASE + 196);
  413.   iCFGDEFPDXLANGDRV         = (DBICFG_BASE + 197);
  414.   iCFGDEFPDXLEVEL           = (DBICFG_BASE + 198);
  415.   iCFGDEFPDXBLOCKSIZE       = (DBICFG_BASE + 199);
  416.   iCFGDEFPDXFILLFACTOR      = (DBICFG_BASE + 200);
  417.   iCFGDEFPDXSTRICTINTEGRTY  = (DBICFG_BASE + 201);
  418.   iCFGDEFDBASETYPE          = (DBICFG_BASE + 202);
  419.   iCFGDEFDBASELANGDRV       = (DBICFG_BASE + 203);
  420.   iCFGDEFDBASELEVEL         = (DBICFG_BASE + 204);
  421.   iCFGDEFDBASEMDXBLOCKSIZE  = (DBICFG_BASE + 205);
  422.   iCFGDEFDBASEMEMOBLOCKSIZE = (DBICFG_BASE + 206);
  423.   iCFGAUTOODBC              = (DBICFG_BASE + 207);
  424.   iCFGDEFDRV                = (DBICFG_BASE + 208);
  425.   iCFGENABLEBCD             = (DBICFG_BASE + 209);
  426.   iCFGDEFSHAREDMEMSIZE      = (DBICFG_BASE + 252);
  427.   iCFGDEFSHAREDMEMLOCATION  = (DBICFG_BASE + 253);
  428.   iCFGDEFREPOSITORY         = (DBICFG_BASE + 254);
  429.   iCFGDEFSQLQRYMODE         = (DBICFG_BASE + 255);
  430.   iCFGDEFMEMSIZE            = (DBICFG_BASE + 126); 
  431. { MSACCESS default driver field values }
  432.   iCFGDEFMSACCESSVER        = (DBICFG_BASE + 220);
  433.   iCFGDEFMSACCESSTYPE       = (DBICFG_BASE + 221);
  434.   iCFGDEFMSACCESSDLL32      = (DBICFG_BASE + 222);
  435.   iCFGDEFMSACCESSLANGDRV    = (DBICFG_BASE + 223);
  436.   iCFGDEFDATABASENAME       = (DBICFG_BASE + 224);
  437.   iCFGDEFUSERNAME           = (DBICFG_BASE + 225);
  438.   iCFGDEFTRACEMODE          = (DBICFG_BASE + 226);
  439.   iCFGDEFDRVFLAGS           = (DBICFG_BASE + 227);
  440.   iCFGCFGSYSTEMDB           = (DBICFG_BASE + 231);
  441. { FOXPRO default driver field values }
  442.   iCFGDEFFOXPROTYPE         = (DBICFG_BASE + 228);
  443.   iCFGDEFFOXPROLANGDRV      = (DBICFG_BASE + 229);
  444.   iCFGDEFFOXPROLEVEL        = (DBICFG_BASE + 230);
  445.   CFGHLP_BASE               = $3B00;
  446.   iCFGHLP_SYSNODE           = (CFGHLP_BASE +1);
  447.   iCFGHLP_SYSINITNODE       = (CFGHLP_BASE +2);
  448.   iCFGHLP_SYSVERSION        = (CFGHLP_BASE +3);
  449.   iCFGHLP_SYSLOCALSHARE     = (CFGHLP_BASE +4);
  450.   iCFGHLP_SYSMINBUFSIZE     = (CFGHLP_BASE +5);
  451.   iCFGHLP_SYSMAXBUFSIZE     = (CFGHLP_BASE +6);
  452.   iCFGHLP_SYSLANGDRIVER     = (CFGHLP_BASE +7);
  453.   iCFGHLP_SYSNETTYPE        = (CFGHLP_BASE +8);
  454.   iCFGHLP_SYSFLAGS          = (CFGHLP_BASE +9);
  455.   iCFGHLP_SYSMAXFILE        = (CFGHLP_BASE +10);
  456.   iCFGHLP_SYSLOWMEM         = (CFGHLP_BASE +11);
  457.   iCFGHLP_SYSAUTOODBC       = (CFGHLP_BASE +12);
  458.   iCFGHLP_SYSDEFDRV         = (CFGHLP_BASE +13);
  459.   iCFGHLP_SYSSQLQRYMODE     = (CFGHLP_BASE +14);
  460.   iCFGHLP_SYSSQLPASSTHRU    = (CFGHLP_BASE +15);
  461.   iCFGHLP_SYSFORMATNODE     = (CFGHLP_BASE +16);
  462.   iCFGHLP_DATENODE          = (CFGHLP_BASE +17);
  463.   iCFGHLP_DATESEPARATOR     = (CFGHLP_BASE +18);
  464.   iCFGHLP_DATEMODE          = (CFGHLP_BASE +19);
  465.   iCFGHLP_DATEFOURDIGIT     = (CFGHLP_BASE +20);
  466.   iCFGHLP_DATEYEARBIASED    = (CFGHLP_BASE +21);
  467.   iCFGHLP_DATEZEROM         = (CFGHLP_BASE +22);
  468.   iCFGHLP_DATEZEROD         = (CFGHLP_BASE +23);
  469.   iCFGHLP_TIMENODE          = (CFGHLP_BASE +24);
  470.   iCFGHLP_TIMETWELVEHOUR    = (CFGHLP_BASE +25);
  471.   iCFGHLP_TIMEAMSTRING      = (CFGHLP_BASE +26);
  472.   iCFGHLP_TIMEPMSTRING      = (CFGHLP_BASE +27);
  473.   iCFGHLP_TIMESECONDS       = (CFGHLP_BASE +28);
  474.   iCFGHLP_TIMEMILSEC        = (CFGHLP_BASE +29);
  475.   iCFGHLP_NUMNODE           = (CFGHLP_BASE +30);
  476.   iCFGHLP_NUMDECIMALSEPARATOR = (CFGHLP_BASE +31);
  477.   iCFGHLP_NUMTHOUSANDSEPARATOR = (CFGHLP_BASE +32);
  478.   iCFGHLP_NUMDECIMALDIGITS  = (CFGHLP_BASE +33);
  479.   iCFGHLP_NUMZERON          = (CFGHLP_BASE +34);
  480.   iCFGHLP_DRVNODE           = (CFGHLP_BASE +35);
  481.   iCFGHLP_PDXNODE           = (CFGHLP_BASE +36);
  482.   iCFGHLP_PDXINITNODE       = (CFGHLP_BASE +37);
  483.   iCFGHLP_DRVTYPE           = (CFGHLP_BASE +38);
  484.   iCFGHLP_PDXNETDIR         = (CFGHLP_BASE +39);
  485.   iCFGHLP_PDXTBLNODE        = (CFGHLP_BASE +40);
  486.   iCFGHLP_PDXLEVEL          = (CFGHLP_BASE +41);
  487.   iCFGHLP_PDXBLOCKSIZE      = (CFGHLP_BASE +42);
  488.   iCFGHLP_PDXFILLFACTOR     = (CFGHLP_BASE +43);
  489.   iCFGHLP_PDXSTRICT         = (CFGHLP_BASE +44);
  490.   iCFGHLP_DBNODE            = (CFGHLP_BASE +45);
  491.   iCFGHLP_DBINITNODE        = (CFGHLP_BASE +46);
  492.   iCFGHLP_DBVERSION         = (CFGHLP_BASE +47);
  493.   iCFGHLP_DBTBLNODE         = (CFGHLP_BASE +48);
  494.   iCFGHLP_DBLEVEL           = (CFGHLP_BASE +49);
  495.   iCFGHLP_DBMDXBLOCKSIZE    = (CFGHLP_BASE +50);
  496.   iCFGHLP_DBMEMOFILEBLOCKSIZE = (CFGHLP_BASE +51);
  497.   iCFGHLP_INTNODE           = (CFGHLP_BASE +52);
  498.   iCFGHLP_INTINITNODE       = (CFGHLP_BASE +53);
  499.   iCFGHLP_INTVERSION        = (CFGHLP_BASE +54);
  500.   iCFGHLP_SQLDLL            = (CFGHLP_BASE +55);
  501.   iCFGHLP_SQLDLL32          = (CFGHLP_BASE +56);
  502.   iCFGHLP_SQLDRIVERFLAGS    = (CFGHLP_BASE +57);
  503.   iCFGHLP_INTDBNODE         = (CFGHLP_BASE +58);
  504.   iCFGHLP_SQLSERVER         = (CFGHLP_BASE +59);
  505.   iCFGHLP_SQLUSER           = (CFGHLP_BASE +60);
  506.   iCFGHLP_SQLOPENMODE       = (CFGHLP_BASE +61);
  507.   iCFGHLP_SQLSCHEMASIZE     = (CFGHLP_BASE +62);
  508.   iCFGHLP_SQLSCHEMATIME     = (CFGHLP_BASE +63);
  509.   iCFGHLP_SYBNODE           = (CFGHLP_BASE +64);
  510.   iCFGHLP_SYBINITNODE       = (CFGHLP_BASE +65);
  511.   iCFGHLP_SYBVERSION        = (CFGHLP_BASE +66);
  512.   iCFGHLP_SQLCONNECT        = (CFGHLP_BASE +67);
  513.   iCFGHLP_SQLTIMEOUT        = (CFGHLP_BASE +68);
  514.   iCFGHLP_SYBDBNODE         = (CFGHLP_BASE +69);
  515.   iCFGHLP_SQLDATABASE       = (CFGHLP_BASE +70);
  516.   iCFGHLP_SQLBLOBEDIT       = (CFGHLP_BASE +71);
  517.   iCFGHLP_SQLMAXQUERY       = (CFGHLP_BASE +72);
  518.   iCFGHLP_ORANODE           = (CFGHLP_BASE +73);
  519.   iCFGHLP_ORAINITNODE       = (CFGHLP_BASE +74);
  520.   iCFGHLP_ORAVERSION        = (CFGHLP_BASE +75);
  521.   iCFGHLP_SQLVENDOR         = (CFGHLP_BASE +76);
  522.   iCFGHLP_ORADBNODE         = (CFGHLP_BASE +77);
  523.   iCFGHLP_SQLNETPROTOCOL    = (CFGHLP_BASE +78);
  524.   iCFGHLP_MSSNODE           = (CFGHLP_BASE +79);
  525.   iCFGHLP_MSSINITNODE       = (CFGHLP_BASE +80);
  526.   iCFGHLP_MSSVERSION        = (CFGHLP_BASE +81);
  527.   iCFGHLP_MSSDBNODE         = (CFGHLP_BASE +82);
  528.   iCFGHLP_INFNODE           = (CFGHLP_BASE +83);
  529.   iCFGHLP_INFINITNODE       = (CFGHLP_BASE +84);
  530.   iCFGHLP_INFVERSION        = (CFGHLP_BASE +85);
  531.   iCFGHLP_INFDBNODE         = (CFGHLP_BASE +86);
  532.   iCFGHLP_SQLLOCKMODE       = (CFGHLP_BASE +87);
  533.   iCFGHLP_SQLTRACEMODE      = (CFGHLP_BASE +88);
  534.   iCFGHLP_SQLMAXROWS        = (CFGHLP_BASE +89);
  535.   iCFGHLP_SQLBATCHCOUNT     = (CFGHLP_BASE +90);
  536.   iCFGHLP_SYSSHAREDMEMSIZ   = (CFGHLP_BASE +91);
  537.   iCFGHLP_SYSSHAREDMEMLOC   = (CFGHLP_BASE +92);
  538.   iCFGHLP_SYSDATAREP        = (CFGHLP_BASE +93);
  539.   iCFGHLP_ALIASTYPE         = (CFGHLP_BASE +94);
  540.   iCFGHLP_ALIASPATH         = (CFGHLP_BASE +95);
  541.   iCFGHLP_ALIASDEFDRV       = (CFGHLP_BASE +96);
  542.   iCFGHLP_ENABLESCHEMACACHE = (CFGHLP_BASE +97);
  543.   iCFGHLP_SCHEMACACHEDIR    = (CFGHLP_BASE +98);
  544.   iCFGHLP_HOSTNAME          = (CFGHLP_BASE +99);
  545.   iCFGHLP_APPLICATIONNAME   = (CFGHLP_BASE +100);
  546.   iCFGHLP_NATIONALLANGNAME  = (CFGHLP_BASE +101);
  547.   iCFGHLP_ALIASENABLEBCD    = (CFGHLP_BASE +102);
  548.   iCFGHLP_TDSPACKETSIZE     = (CFGHLP_BASE +103);
  549.   iCFGHLP_ORAINTEGER        = (CFGHLP_BASE +104);
  550.   iCFGHLP_ORALISTSYNONYMS   = (CFGHLP_BASE +105);
  551.   iCFGHLP_ROWSETSIZE        = (CFGHLP_BASE +106);
  552.   iCFGHLP_DB2DRIVER         = (CFGHLP_BASE +107);
  553.   iCFGHLP_DB2DSN            = (CFGHLP_BASE +108);
  554.   iCFGHLP_DB2NODE           = (CFGHLP_BASE +109);
  555.   iCFGHLP_DB2INITNODE       = (CFGHLP_BASE +110);
  556.   iCFGHLP_DB2VERSION        = (CFGHLP_BASE +111);
  557.   iCFGHLP_DB2DBNODE         = (CFGHLP_BASE +112);
  558.   iCFGHLP_COLLCHAR          = (CFGHLP_BASE +113);
  559.   iCFGHLP_DBNLS             = (CFGHLP_BASE +114);
  560.   iCFGHLP_MSACCNODE         = (CFGHLP_BASE +115);
  561.   iCFGHLP_MSACCINITNODE     = (CFGHLP_BASE +116);
  562.   iCFGHLP_MSACCVERSION      = (CFGHLP_BASE +117);
  563.   iCFGHLP_MSACCDBNODE       = (CFGHLP_BASE +118);
  564.   iCFGHLP_ODBCDRIVER        = (CFGHLP_BASE +119);
  565.   iCFGHLP_ODBCVERSION       = (CFGHLP_BASE +120);
  566.   iCFGHLP_ODBCDSN           = (CFGHLP_BASE +121);
  567.   iCFGHLP_OLEVERSION        = (CFGHLP_BASE +122);
  568.   iCFGHLP_OLECLSID          = (CFGHLP_BASE +123);
  569.   iCFGHLP_BLOBSTOCACHE      = (CFGHLP_BASE +124);
  570.   iCFGHLP_BLOBSIZE          = (CFGHLP_BASE +125);
  571.   iCFGHLP_SYSMEMSIZE        = (CFGHLP_BASE +126);
  572.   iCFGHLP_MAXDBPROCS        = (CFGHLP_BASE +127);
  573.   iCFGHLP_FPNODE            = (CFGHLP_BASE +128);
  574.   iCFGHLP_FPINITNODE        = (CFGHLP_BASE +129);
  575.   iCFGHLP_FPVERSION         = (CFGHLP_BASE +130);
  576.   iCFGHLP_FPTBLNODE         = (CFGHLP_BASE +131);
  577.   iCFGHLP_FPLEVEL           = (CFGHLP_BASE +132);
  578.   iCFGHLP_FPMEMOFILEBLOCKSIZE= (CFGHLP_BASE +133);
  579.   iCFGHLP_CFGSYSTEMDB       = (CFGHLP_BASE +134);
  580.   iCFGHLP_OBJECTMODE        = (CFGHLP_BASE +135); 
  581. {============================================================================}
  582. {                            Error Categories                                }
  583. {============================================================================}
  584. function ErrCat(rslt: Word): Word;
  585. function ErrCode(rslt: Word): Word;
  586. const
  587.   ERRCAT_NONE                   = 0;      {  0   No error }
  588.   ERRCAT_SYSTEM                 = $21;    {  33  System related (Fatal Error) }
  589.   ERRCAT_NOTFOUND               = $22;    {  34  Object of interest Not Found }
  590.   ERRCAT_DATACORRUPT            = $23;    {  35  Physical Data Corruption }
  591.   ERRCAT_IO                     = $24;    {  36  I/O related error }
  592.   ERRCAT_LIMIT                  = $25;    {  37  Resource or Limit error }
  593.   ERRCAT_INTEGRITY              = $26;    {  38  Integrity Violation }
  594.   ERRCAT_INVALIDREQ             = $27;    {  39  Invalid Request }
  595.   ERRCAT_LOCKCONFLICT           = $28;    {  40  Locking/Contention related }
  596.   ERRCAT_SECURITY               = $29;    {  41  Access Violation - Security related }
  597.   ERRCAT_INVALIDCONTEXT         = $2A;    {  42  Invalid context }
  598.   ERRCAT_OS                     = $2B;    {  43  Os Error not handled by Idapi }
  599.   ERRCAT_NETWORK                = $2C;    {  44  Network related }
  600.   ERRCAT_OPTPARAM               = $2D;    {  45  Optional parameter related }
  601.   ERRCAT_QUERY                  = $2E;    {  46  Query related }
  602.   ERRCAT_VERSION                = $2F;    {  47  Version Mismatch Category }
  603.   ERRCAT_CAPABILITY             = $30;    {  48  Capability not supported }
  604.   ERRCAT_CONFIG                 = $31;    {  49  System configuration error }
  605.   ERRCAT_WARNING                = $32;    {  50 }
  606.   ERRCAT_OTHER                  = $33;    {  51  Miscellaneous }
  607.   ERRCAT_COMPATIBILITY          = $34;    {  52  Compatibility related }
  608.   ERRCAT_REPOSITORY             = $35;    {  53  Data Repository related }
  609.   ERRCAT_DRIVER                 = $3E;    {  62  Driver related }
  610.   ERRCAT_RC                     = $3F;    {  63  Internal }
  611.   ERRBASE_NONE                  = 0;      { No error }
  612.   ERRBASE_SYSTEM                = $2100;  { System related (Fatal Error) }
  613.   ERRBASE_NOTFOUND              = $2200;  { Object of interest Not Found }
  614.   ERRBASE_DATACORRUPT           = $2300;  { Physical Data Corruption }
  615.   ERRBASE_IO                    = $2400;  { I/O related error }
  616.   ERRBASE_LIMIT                 = $2500;  { Resource or Limit error }
  617.   ERRBASE_INTEGRITY             = $2600;  { Integrity Violation }
  618.   ERRBASE_INVALIDREQ            = $2700;  { Invalid Request }
  619.   ERRBASE_LOCKCONFLICT          = $2800;  { Locking/Contention related }
  620.   ERRBASE_SEC                   = $2900;  { Access Violation - Security related }
  621.   ERRBASE_IC                    = $2A00;  { Invalid context }
  622.   ERRBASE_OS                    = $2B00;  { Os Error not handled by Idapi }
  623.   ERRBASE_NETWORK               = $2C00;  { Network related }
  624.   ERRBASE_OPTPARAM              = $2D00;  { Optional Parameter related }
  625.   ERRBASE_QUERY                 = $2E00;  { Query related }
  626.   ERRBASE_VERSION               = $2F00;  { Version Mismatch Category }
  627.   ERRBASE_CAPABILITY            = $3000;  { Capability not supported }
  628.   ERRBASE_CONFIG                = $3100;  { System configuration error }
  629.   ERRBASE_WARNING               = $3200;
  630.   ERRBASE_OTHER                 = $3300;  { Miscellaneous }
  631.   ERRBASE_COMPATIBILITY         = $3400;  { Compatibility related }
  632.   ERRBASE_REPOSITORY            = $3500;  { Data Repository related }
  633.   ERRBASE_DRIVER                = $3E00;  { Driver related }
  634.   ERRBASE_RC                    = $3F00;  { Internal }
  635. {=============================================================================}
  636. {                           Error Codes By Category                           }
  637. {=============================================================================}
  638. { ERRCAT_NONE                  (0) }
  639. { ===========                      }
  640.   ERRCODE_NONE                  = 0;
  641.   DBIERR_NONE                   = (ERRBASE_NONE + ERRCODE_NONE);
  642. {  ERRCAT_SYSTEM }
  643. {  ============= }
  644.   ERRCODE_SYSFILEOPEN           = 1;      { Cannot open a system file }
  645.   ERRCODE_SYSFILEIO             = 2;      { I/O error on a system file }
  646.   ERRCODE_SYSCORRUPT            = 3;      { Data structure corruption }
  647.   ERRCODE_NOCONFIGFILE          = 4;      { Cannot find config file }
  648.   ERRCODE_CFGCANNOTWRITE        = 5;      { Cannot write config file (READONLY) }
  649.   ERRCODE_CFGMULTIFILE          = 6;      { Initializing with different ini file }
  650.   ERRCODE_REENTERED             = 7;      { System has been illegally re-entered }
  651.   ERRCODE_CANTFINDIDAPI         = 8;      { Cannot locate IDAPIxx.DLL }
  652.   ERRCODE_CANTLOADIDAPI         = 9;      { Cannot load IDAPIxx.DLL }
  653.   ERRCODE_CANTLOADLIBRARY       = 10;     { Cannot load a service DLL }
  654.   ERRCODE_TEMPFILEERR           = 11;     { Cannot create or open temporary file }
  655.   ERRCODE_MULTIPLEIDAPI         = 12;     { Trying to load multiple IDAPIxx.DLL }
  656.   ERRCODE_SHAREDMEMCONFLICT     = 13;     { Shared memory conflict. }
  657.   DBIERR_SYSFILEOPEN            = (ERRBASE_SYSTEM + ERRCODE_SYSFILEOPEN);
  658.   DBIERR_SYSFILEIO              = (ERRBASE_SYSTEM + ERRCODE_SYSFILEIO);
  659.   DBIERR_SYSCORRUPT             = (ERRBASE_SYSTEM + ERRCODE_SYSCORRUPT);
  660.   DBIERR_NOCONFIGFILE           = (ERRBASE_SYSTEM + ERRCODE_NOCONFIGFILE);
  661.   DBIERR_CFGCANNOTWRITE         = (ERRBASE_SYSTEM + ERRCODE_CFGCANNOTWRITE);
  662.   DBIERR_CFGMULTIFILE           = (ERRBASE_SYSTEM + ERRCODE_CFGMULTIFILE);
  663.   DBIERR_REENTERED              = (ERRBASE_SYSTEM + ERRCODE_REENTERED);
  664.   DBIERR_CANTFINDIDAPI          = (ERRBASE_SYSTEM + ERRCODE_CANTFINDIDAPI);
  665.   DBIERR_CANTLOADIDAPI          = (ERRBASE_SYSTEM + ERRCODE_CANTLOADIDAPI);
  666.   DBIERR_CANTLOADLIBRARY        = (ERRBASE_SYSTEM + ERRCODE_CANTLOADLIBRARY);
  667.   DBIERR_TEMPFILEERR            = (ERRBASE_SYSTEM + ERRCODE_TEMPFILEERR);
  668.   DBIERR_MULTIPLEIDAPI          = (ERRBASE_SYSTEM + ERRCODE_MULTIPLEIDAPI);
  669.   DBIERR_SHAREDMEMCONFLICT      = (ERRBASE_SYSTEM + ERRCODE_SHAREDMEMCONFLICT);
  670.   DBIERR_CANTFINDODAPI = DBIERR_CANTFINDIDAPI;
  671.   DBIERR_CANTLOADODAPI = DBIERR_CANTLOADIDAPI;
  672. {  ERRCAT_NOTFOUND }
  673. {  =============== }
  674.   ERRCODE_BOF                   = 1;      { Beginning of Virtual table }
  675.   ERRCODE_EOF                   = 2;      { End of Virtual table }
  676.   ERRCODE_RECMOVED              = 3;      { Fly-away }
  677.   ERRCODE_KEYORRECDELETED       = 4;      { Record Deleted/Key Modified }
  678.   ERRCODE_NOCURRREC             = 5;      { No current record }
  679.   ERRCODE_RECNOTFOUND           = 6;      { Record was not found }
  680.   ERRCODE_ENDOFBLOB             = 7;      { End of Blob reached }
  681.   ERRCODE_OBJNOTFOUND           = 8;      { Generic Not found }
  682.   ERRCODE_FMLMEMBERNOTFOUND     = 9;      { Family member not found }
  683.   ERRCODE_BLOBFILEMISSING       = 10;     { 0x0a Blob file for table is missing }
  684.   ERRCODE_LDNOTFOUND            = 11;     { 0x0b Language driver not found }
  685.   DBIERR_BOF                    = (ERRBASE_NOTFOUND + ERRCODE_BOF);
  686.   DBIERR_EOF                    = (ERRBASE_NOTFOUND + ERRCODE_EOF);
  687.   DBIERR_RECMOVED               = (ERRBASE_NOTFOUND + ERRCODE_RECMOVED);
  688.   DBIERR_RECDELETED             = (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED);
  689.   DBIERR_KEYORRECDELETED        = (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED);
  690.   DBIERR_NOCURRREC              = (ERRBASE_NOTFOUND + ERRCODE_NOCURRREC);
  691.   DBIERR_RECNOTFOUND            = (ERRBASE_NOTFOUND + ERRCODE_RECNOTFOUND);
  692.   DBIERR_ENDOFBLOB              = (ERRBASE_NOTFOUND + ERRCODE_ENDOFBLOB);
  693.   DBIERR_OBJNOTFOUND            = (ERRBASE_NOTFOUND + ERRCODE_OBJNOTFOUND);
  694.   DBIERR_FMLMEMBERNOTFOUND      = (ERRBASE_NOTFOUND + ERRCODE_FMLMEMBERNOTFOUND);
  695.   DBIERR_BLOBFILEMISSING        = (ERRBASE_NOTFOUND + ERRCODE_BLOBFILEMISSING);
  696.   DBIERR_LDNOTFOUND             = (ERRBASE_NOTFOUND + ERRCODE_LDNOTFOUND);
  697. { ERRCAT_DATACORRUPT }
  698. { ================== }
  699.   ERRCODE_HEADERCORRUPT         = 1;      { Corrupt Header }
  700.   ERRCODE_FILECORRUPT           = 2;      { File corrupt - other than header }
  701.   ERRCODE_MEMOCORRUPT           = 3;      { Memo file corrupted }
  702.   ERRCODE_BMPCORRUPT            = 4;      { BitMap is corrupt (Internal error) }
  703.   ERRCODE_INDEXCORRUPT          = 5;      { Index is corrupt }
  704.   ERRCODE_CORRUPTLOCKFILE       = 6;      { Corrupt lock file }
  705.   ERRCODE_FAMFILEINVALID        = 7;      { Corrupt family file }
  706.   ERRCODE_VALFILECORRUPT        = 8;      { Val file is missing or corrupt }
  707.   ERRCODE_FOREIGNINDEX          = 9;      { Index is in a foreign format - import first }
  708.   DBIERR_HEADERCORRUPT          = (ERRBASE_DATACORRUPT + ERRCODE_HEADERCORRUPT);
  709.   DBIERR_FILECORRUPT            = (ERRBASE_DATACORRUPT + ERRCODE_FILECORRUPT);
  710.   DBIERR_MEMOCORRUPT            = (ERRBASE_DATACORRUPT + ERRCODE_MEMOCORRUPT);
  711.   DBIERR_BMPCORRUPT             = (ERRBASE_DATACORRUPT + ERRCODE_BMPCORRUPT);
  712.   DBIERR_INDEXCORRUPT           = (ERRBASE_DATACORRUPT + ERRCODE_INDEXCORRUPT);
  713.   DBIERR_CORRUPTLOCKFILE        = (ERRBASE_DATACORRUPT + ERRCODE_CORRUPTLOCKFILE);
  714.   DBIERR_FAMFILEINVALID         = (ERRBASE_DATACORRUPT + ERRCODE_FAMFILEINVALID);
  715.   DBIERR_VALFILECORRUPT         = (ERRBASE_DATACORRUPT + ERRCODE_VALFILECORRUPT);
  716.   DBIERR_FOREIGNINDEX           = (ERRBASE_DATACORRUPT + ERRCODE_FOREIGNINDEX);
  717. { ERRCAT_IO }
  718. { ========= }
  719.   ERRCODE_READERR               = 1;      { Read failure (not expected) }
  720.   ERRCODE_WRITEERR              = 2;      { Write failure (not expected) }
  721.   ERRCODE_DIRNOACCESS           = 3;      { No access to dir }
  722.   ERRCODE_FILEDELETEFAIL        = 4;      { File delete failed }
  723.   ERRCODE_FILENOACCESS          = 5;      { No access to file }
  724.   ERRCODE_ACCESSDISABLED        = 6;      { Access to table disabled (previous error) }
  725.   DBIERR_READERR                = (ERRBASE_IO + ERRCODE_READERR);
  726.   DBIERR_WRITEERR               = (ERRBASE_IO + ERRCODE_WRITEERR);
  727.   DBIERR_DIRNOACCESS            = (ERRBASE_IO + ERRCODE_DIRNOACCESS);
  728.   DBIERR_FILEDELETEFAIL         = (ERRBASE_IO + ERRCODE_FILEDELETEFAIL);
  729.   DBIERR_FILENOACCESS           = (ERRBASE_IO + ERRCODE_FILENOACCESS);
  730.   DBIERR_ACCESSDISABLED         = (ERRBASE_IO + ERRCODE_ACCESSDISABLED);
  731. { ERRCAT_LIMIT }
  732. { ============ }
  733.   ERRCODE_NOMEMORY              = 1;      { Not enough Memory for this op }
  734.   ERRCODE_NOFILEHANDLES         = 2;      { Not enough File handles }
  735.   ERRCODE_NODISKSPACE           = 3;      { Not enough Disk space }
  736.   ERRCODE_NOTEMPTBLSPACE        = 4;      { Temporary Table resource limit }
  737.   ERRCODE_RECTOOBIG             = 5;      { Too big a record size for table }
  738.   ERRCODE_CURSORLIMIT           = 6;      { Too many open cursors }
  739.   ERRCODE_TABLEFULL             = 7;      { Table is full }
  740.   ERRCODE_WSSESLIMIT            = 8;      { Too many sessions from this WS }
  741.   ERRCODE_SERNUMLIMIT           = 9;      { Serial number limit (paradox) }
  742.   ERRCODE_INTERNALLIMIT         = 10;     { 0x0a Some internal limit (see context) }
  743.   ERRCODE_OPENTBLLIMIT          = 11;     { 0x0b Too many open tables }
  744.   ERRCODE_TBLCURSORLIMIT        = 12;     { 0x0c Too many cursors per table }
  745.   ERRCODE_RECLOCKLIMIT          = 13;     { 0x0d Too many record locks on table }
  746.   ERRCODE_CLIENTSLIMIT          = 14;     { 0x0e Too many clients }
  747.   ERRCODE_INDEXLIMIT            = 15;     { 0x0f Too many indexes (also in Table Create) }
  748.   ERRCODE_SESSIONSLIMIT         = 16;     { 0x10 Too many sessions }
  749.   ERRCODE_DBLIMIT               = 17;     { 0x11 Too many databases }
  750.   ERRCODE_PASSWORDLIMIT         = 18;     { 0x12 Too many passwords }
  751.   ERRCODE_DRIVERLIMIT           = 19;     { 0x13 Too many active drivers }
  752.   ERRCODE_FLDLIMIT              = 20;     { 0x14 Too many Fields in Table Create }
  753.   ERRCODE_TBLLOCKLIMIT          = 21;     { 0x15 Too many table locks }
  754.   ERRCODE_OPENBLOBLIMIT         = 22;     { 0x16 Too many open blobs }
  755.   ERRCODE_LOCKFILELIMIT         = 23;     { 0x17 Lock file has grown too big }
  756.   ERRCODE_OPENQRYLIMIT          = 24;     { 0x18 Too many open queries }
  757.   ERRCODE_THREADLIMIT           = 25;     { 0x19 Too many threads for client }
  758.   ERRCODE_BLOBLIMIT             = 26;     { 0x1a Too many blobs }
  759.   ERRCODE_PDX50NAMELIMIT        = 27;     { 0x1b Pathname is too long for a Paradox 5.0 or less table }
  760.   ERRCODE_ROWFETCHLIMIT         = 28;     { 0x1c Row fetch limit }
  761.   ERRCODE_LONGNAMENOTALLOWED    = 29;     { 0x1d Long name is not allowed for this tableversion }
  762.   ERRCODE_NOSHAREDMEMORY        = 30;     { 0x1e Not enough shared Memory for this operation }
  763.   DBIERR_NOMEMORY               = (ERRBASE_LIMIT + ERRCODE_NOMEMORY);
  764.   DBIERR_NOFILEHANDLES          = (ERRBASE_LIMIT + ERRCODE_NOFILEHANDLES);
  765.   DBIERR_NODISKSPACE            = (ERRBASE_LIMIT + ERRCODE_NODISKSPACE);
  766.   DBIERR_NOTEMPTBLSPACE         = (ERRBASE_LIMIT + ERRCODE_NOTEMPTBLSPACE);
  767.   DBIERR_RECTOOBIG              = (ERRBASE_LIMIT + ERRCODE_RECTOOBIG);
  768.   DBIERR_CURSORLIMIT            = (ERRBASE_LIMIT + ERRCODE_CURSORLIMIT);
  769.   DBIERR_TABLEFULL              = (ERRBASE_LIMIT + ERRCODE_TABLEFULL);
  770.   DBIERR_WSSESLIMIT             = (ERRBASE_LIMIT + ERRCODE_WSSESLIMIT);
  771.   DBIERR_SERNUMLIMIT            = (ERRBASE_LIMIT + ERRCODE_SERNUMLIMIT);
  772.   DBIERR_INTERNALLIMIT          = (ERRBASE_LIMIT + ERRCODE_INTERNALLIMIT);
  773.   DBIERR_OPENTBLLIMIT           = (ERRBASE_LIMIT + ERRCODE_OPENTBLLIMIT);
  774.   DBIERR_TBLCURSORLIMIT         = (ERRBASE_LIMIT + ERRCODE_TBLCURSORLIMIT);
  775.   DBIERR_RECLOCKLIMIT           = (ERRBASE_LIMIT + ERRCODE_RECLOCKLIMIT);
  776.   DBIERR_CLIENTSLIMIT           = (ERRBASE_LIMIT + ERRCODE_CLIENTSLIMIT);
  777.   DBIERR_INDEXLIMIT             = (ERRBASE_LIMIT + ERRCODE_INDEXLIMIT);
  778.   DBIERR_SESSIONSLIMIT          = (ERRBASE_LIMIT + ERRCODE_SESSIONSLIMIT);
  779.   DBIERR_DBLIMIT                = (ERRBASE_LIMIT + ERRCODE_DBLIMIT);
  780.   DBIERR_PASSWORDLIMIT          = (ERRBASE_LIMIT + ERRCODE_PASSWORDLIMIT);
  781.   DBIERR_DRIVERLIMIT            = (ERRBASE_LIMIT + ERRCODE_DRIVERLIMIT);
  782.   DBIERR_FLDLIMIT               = (ERRBASE_LIMIT + ERRCODE_FLDLIMIT);
  783.   DBIERR_TBLLOCKLIMIT           = (ERRBASE_LIMIT + ERRCODE_TBLLOCKLIMIT);
  784.   DBIERR_OPENBLOBLIMIT          = (ERRBASE_LIMIT + ERRCODE_OPENBLOBLIMIT);
  785.   DBIERR_LOCKFILELIMIT          = (ERRBASE_LIMIT + ERRCODE_LOCKFILELIMIT);
  786.   DBIERR_OPENQRYLIMIT           = (ERRBASE_LIMIT + ERRCODE_OPENQRYLIMIT);
  787.   DBIERR_THREADLIMIT            = (ERRBASE_LIMIT + ERRCODE_THREADLIMIT);
  788.   DBIERR_BLOBLIMIT              = (ERRBASE_LIMIT + ERRCODE_BLOBLIMIT);
  789.   DBIERR_PDX50NAMELIMIT         = (ERRBASE_LIMIT + ERRCODE_PDX50NAMELIMIT);
  790.   DBIERR_ROWFETCHLIMIT          = (ERRBASE_LIMIT + ERRCODE_ROWFETCHLIMIT);
  791.   DBIERR_LONGNAMENOTALLOWED     = (ERRBASE_LIMIT + ERRCODE_LONGNAMENOTALLOWED);
  792.   DBIERR_NOSHAREDMEMORY         = (ERRBASE_LIMIT + ERRCODE_NOSHAREDMEMORY);
  793. { ERRCAT_INTEGRITY }
  794. { ================ }
  795.   ERRCODE_KEYVIOL               = 1;      { Key violation }
  796.   ERRCODE_MINVALERR             = 2;      { Min val check failed }
  797.   ERRCODE_MAXVALERR             = 3;      { Max val check failed }
  798.   ERRCODE_REQDERR               = 4;      { Field value required }
  799.   ERRCODE_FORIEGNKEYERR         = 5;      { Master record missing }
  800.   ERRCODE_DETAILRECORDSEXIST    = 6;      { Cannot MODIFY or DELETE this Master record }
  801.   ERRCODE_MASTERTBLLEVEL        = 7;      { Master Table Level is incorrect }
  802.   ERRCODE_LOOKUPTABLEERR        = 8;      { Field value out of lookup tbl range }
  803.   ERRCODE_LOOKUPTBLOPENERR      = 9;      { Lookup Table Open failed }
  804.   ERRCODE_DETAILTBLOPENERR      = 10;     { 0x0a Detail Table Open failed }
  805.   ERRCODE_MASTERTBLOPENERR      = 11;     { 0x0b Master Table Open failed }
  806.   ERRCODE_FIELDISBLANK          = 12;     { 0x0c Field is blank }
  807.   ERRCODE_MASTEREXISTS          = 13;     { 0x0d Master Table exists }
  808.   ERRCODE_MASTERTBLOPEN         = 14;     { 0x0e Master Table is open }
  809.   ERRCODE_DETAILTABLESEXIST     = 15;     { 0x0f Detail Tables exist ( cannot delete, rename ... ) }
  810.   ERRCODE_DETAILRECEXISTEMPTY   = 16;     { 0x10 Cannot empty because details exist }
  811.   ERRCODE_MASTERREFERENCEERR    = 17;     { 0x11 Cannot modify while adding self referencing Referential Integrity }
  812.   ERRCODE_DETAILTBLOPEN         = 18;     { 0x12 Detail Table is opened }
  813.   ERRCODE_DEPENDENTSMUSTBEEMPTY = 19;     { 0x13 Cannot make a master a detail of another table if its details are not empty. }
  814.   ERRCODE_RINTREQINDEX          = 20;     { 0x14 Ref. integrity fields must be indexed }
  815.   ERRCODE_LINKEDTBLPROTECTED    = 21;     { 0x15 Master Table is protected ( requires password to open) }
  816.   ERRCODE_FIELDMULTILINKED      = 22;     { 0x16 Field has more than one master }
  817.   ERRCODE_EXPRVALERR            = 23;     { 0x17 Expr val check failed }
  818.   DBIERR_KEYVIOL                = (ERRBASE_INTEGRITY + ERRCODE_KEYVIOL);
  819.   DBIERR_MINVALERR              = (ERRBASE_INTEGRITY + ERRCODE_MINVALERR);
  820.   DBIERR_MAXVALERR              = (ERRBASE_INTEGRITY + ERRCODE_MAXVALERR);
  821.   DBIERR_REQDERR                = (ERRBASE_INTEGRITY + ERRCODE_REQDERR);
  822.   DBIERR_FORIEGNKEYERR          = (ERRBASE_INTEGRITY + ERRCODE_FORIEGNKEYERR);
  823.   DBIERR_DETAILRECORDSEXIST     = (ERRBASE_INTEGRITY + ERRCODE_DETAILRECORDSEXIST);
  824.   DBIERR_MASTERTBLLEVEL         = (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLLEVEL);
  825.   DBIERR_LOOKUPTABLEERR         = (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTABLEERR);
  826.   DBIERR_LOOKUPTBLOPENERR       = (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTBLOPENERR);
  827.   DBIERR_DETAILTBLOPENERR       = (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPENERR);
  828.   DBIERR_MASTERTBLOPENERR       = (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPENERR);
  829.   DBIERR_FIELDISBLANK           = (ERRBASE_INTEGRITY + ERRCODE_FIELDISBLANK);
  830.   DBIERR_MASTEREXISTS           = (ERRBASE_INTEGRITY + ERRCODE_MASTEREXISTS);
  831.   DBIERR_MASTERTBLOPEN          = (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPEN);
  832.   DBIERR_DETAILTABLESEXIST      = (ERRBASE_INTEGRITY + ERRCODE_DETAILTABLESEXIST);
  833.   DBIERR_DETAILRECEXISTEMPTY    = (ERRBASE_INTEGRITY + ERRCODE_DETAILRECEXISTEMPTY);
  834.   DBIERR_MASTERREFERENCEERR     = (ERRBASE_INTEGRITY + ERRCODE_MASTERREFERENCEERR);
  835.   DBIERR_DETAILTBLOPEN          = (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPEN);
  836.   DBIERR_DEPENDENTSMUSTBEEMPTY  = (ERRBASE_INTEGRITY + ERRCODE_DEPENDENTSMUSTBEEMPTY);
  837.   DBIERR_RINTREQINDEX           = (ERRBASE_INTEGRITY + ERRCODE_RINTREQINDEX);
  838.   DBIERR_LINKEDTBLPROTECTED     = (ERRBASE_INTEGRITY + ERRCODE_LINKEDTBLPROTECTED);
  839.   DBIERR_FIELDMULTILINKED       = (ERRBASE_INTEGRITY + ERRCODE_FIELDMULTILINKED);
  840.   DBIERR_EXPRVALERR             = (ERRBASE_INTEGRITY + ERRCODE_EXPRVALERR);
  841. { ERRCAT_INVALIDREQ }
  842. { ================= }
  843.   ERRCODE_OUTOFRANGE            = 1;      { Number out of range (e.g field no) }
  844.   ERRCODE_INVALIDPARAM          = 2;      { Generic invalid parameter }
  845.   ERRCODE_INVALIDFILENAME       = 3;      { Invalid file name }
  846.   ERRCODE_NOSUCHFILE            = 4;      { No such file }
  847.   ERRCODE_INVALIDOPTION         = 5;      { Invalid option for a parameter }
  848.   ERRCODE_INVALIDHNDL           = 6;      { Invalid handle to the function }
  849.   ERRCODE_UNKNOWNTBLTYPE        = 7;      { Table type given not known }
  850.   ERRCODE_UNKNOWNFILE           = 8;      { Dont know how to open file }
  851.   ERRCODE_PRIMARYKEYREDEFINE    = 9;      { Cannot redefine primary key }
  852.   ERRCODE_INVALIDRINTDESCNUM    = 10;     { 0x0a Cannot change this RINTDesc }
  853.   ERRCODE_KEYFLDTYPEMISMATCH    = 11;     { 0x0b Foreign & Primary Key Mismatch }
  854.   ERRCODE_INVALIDMODIFYREQUEST  = 12;     { 0x0c Invalid modify request }
  855.   ERRCODE_NOSUCHINDEX           = 13;     { 0x0d Index does not exist }
  856.   ERRCODE_INVALIDBLOBOFFSET     = 14;     { 0x0e Invalid Offset into the Blob }
  857.   ERRCODE_INVALIDDESCNUM        = 15;     { 0x0f Invalid descriptor number }
  858.   ERRCODE_INVALIDFLDTYPE        = 16;     { 0x10 Invalid field type }
  859.   ERRCODE_INVALIDFLDDESC        = 17;     { 0x11 Invalid field descriptor }
  860.   ERRCODE_INVALIDFLDXFORM       = 18;     { 0x12 Invalid field transform }
  861.   ERRCODE_INVALIDRECSTRUCT      = 19;     { 0x13 Invalid record structure }
  862.   ERRCODE_INVALIDDESC           = 20;     { 0x14 Generic: invalid descriptor }
  863.   ERRCODE_INVALIDINDEXSTRUCT    = 21;     { 0x15 Invalid array of indexes descriptors }
  864.   ERRCODE_INVALIDVCHKSTRUCT     = 22;     { 0x16 Invalid array of  val. check descriptors }
  865.   ERRCODE_INVALIDRINTSTRUCT     = 23;     { 0x17 Invalid array of ref. integrity descriptors }
  866.   ERRCODE_INVALIDRESTRTBLORDER  = 24;     { 0x18 Invalid ordering of tables during restructure }
  867.   ERRCODE_NAMENOTUNIQUE         = 25;     { 0x19 Name not unique in this context }
  868.   ERRCODE_INDEXNAMEREQUIRED     = 26;     { 0x1a Index name required }
  869.   ERRCODE_INVALIDSESHANDLE      = 27;     { 0x1b Invalid ses handle }
  870.   ERRCODE_INVALIDRESTROP        = 28;     { 0x1c Invalid restructure operation }
  871.   ERRCODE_UNKNOWNDRIVER         = 29;     { 0x1d Driver not known to system }
  872.   ERRCODE_UNKNOWNDB             = 30;     { 0x1e Unknown db }
  873.   ERRCODE_INVALIDPASSWORD       = 31;     { 0x1f Invalid password given }
  874.   ERRCODE_NOCALLBACK            = 32;     { 0x20 No callback function }
  875.   ERRCODE_INVALIDCALLBACKBUFLEN = 33;     { 0x21 Invalid callback buffer length }
  876.   ERRCODE_INVALIDDIR            = 34;     { 0x22 Invalid directory }
  877.   ERRCODE_INVALIDXLATION        = 35;     { 0x23 Translate Error - Translate DID NOT happen }
  878.   ERRCODE_DIFFERENTTABLES       = 36;     { 0x24 Cannot Set Cursor of one Table to another }
  879.   ERRCODE_INVALIDBOOKMARK       = 37;     { 0x25 Bookmarks does not match table, etc. }
  880.   ERRCODE_INVALIDINDEXNAME      = 38;     { 0x26 Index/Tag Name is invalid }
  881.   ERRCODE_INVALIDIDXDESC        = 39;     { 0x27 Invalid index descriptor }
  882.   ERRCODE_NOSUCHTABLE           = 40;     { 0x28 No such table }
  883.   ERRCODE_USECOUNT              = 41;     { 0x29 Table has too many users }
  884.   ERRCODE_INVALIDKEY            = 42;     { 0x2a Key does not pass filter condition }
  885.   ERRCODE_INDEXEXISTS           = 43;     { 0x2b Index already exists }
  886.   ERRCODE_INDEXOPEN             = 44;     { 0x2c Index is open }
  887.   ERRCODE_INVALIDBLOBLEN        = 45;     { 0x2d Invalid Blob Length }
  888.   ERRCODE_INVALIDBLOBHANDLE     = 46;     { 0x2e Invalid Blob handle (in record buffer) }
  889.   ERRCODE_TABLEOPEN             = 47;     { 0x2f Table is open }
  890.   ERRCODE_NEEDRESTRUCTURE       = 48;     { 0x30 Need to do (hard) restructure }
  891.   ERRCODE_INVALIDMODE           = 49;     { 0x31 Invalid mode }
  892.   ERRCODE_CANNOTCLOSE           = 50;     { 0x32 Cannot close index }
  893.   ERRCODE_ACTIVEINDEX           = 51;     { 0x33 Index is being used to order tbl }
  894.   ERRCODE_INVALIDUSRPASS        = 52;     { 0x34 Bad user name or password }
  895.   ERRCODE_MULTILEVELCASCADE     = 53;     { 0x35 Multi level Cascade not supported }
  896.   ERRCODE_INVALIDFIELDNAME      = 54;     { 0x36 Invalid field name }
  897.   ERRCODE_INVALIDTABLENAME      = 55;     { 0x37 Invalid table name }
  898.   ERRCODE_INVALIDLINKEXPR       = 56;     { 0x38 Invalid linked cursor expression }
  899.   ERRCODE_NAMERESERVED          = 57;     { 0x39 Name is reserved }
  900.   ERRCODE_INVALIDFILEEXTN       = 58;     { 0x3a Invalid file extention }
  901.   ERRCODE_INVALIDLANGDRV        = 59;     { 0x3b Invalid language driver }
  902.   ERRCODE_ALIASNOTOPEN          = 60;     { 0x3c Requested alias in not open }
  903.   ERRCODE_INCOMPATRECSTRUCTS    = 61;     { 0x3d Incompatible record structures }
  904.   ERRCODE_RESERVEDDOSNAME       = 62;     { 0x3e Reserved dos name }
  905.   ERRCODE_DESTMUSTBEINDEXED     = 63;     { 0x3f Destination must be indexed }
  906.   ERRCODE_INVALIDINDEXTYPE      = 64;     { 0x40 Invalid index type }
  907.   ERRCODE_LANGDRVMISMATCH       = 65;     { 0x41 Language driver of table and index do not match }
  908.   ERRCODE_NOSUCHFILTER          = 66;     { 0x42 Filter handle is invalid }
  909.   ERRCODE_INVALIDFILTER         = 67;     { 0x43 Invalid filter }
  910.   ERRCODE_INVALIDTABLECREATE    = 68;     { 0x44 Bad table create request (exact prob unknown) }
  911.   ERRCODE_INVALIDTABLEDELETE    = 69;     { 0x45 Bad table delete request (exact prob unknown) }
  912.   ERRCODE_INVALIDINDEXCREATE    = 70;     { 0x46 Bad index create request (exact prob unknown) }
  913.   ERRCODE_INVALIDINDEXDELETE    = 71;     { 0x47 Bad index delete request (exact prob unknown) }
  914.   ERRCODE_INVALIDTABLE          = 72;     { 0x48 Invalid table name specified }
  915.   ERRCODE_MULTIRESULTS          = 73;     { 0X49 Multi results }
  916.   ERRCODE_INVALIDTIME           = 74;     { 0X4A Multi results }
  917.   ERRCODE_INVALIDDATE           = 75;     { 0X4B Multi results }
  918.   ERRCODE_INVALIDTIMESTAMP      = 76;     { 0X4C Multi results }
  919.   ERRCODE_DIFFERENTPATH         = 77;     { 0X4d Tables in different paths }
  920.   ERRCODE_MISMATCHARGS          = 78;     { 0x4e MisMatch in the # of arguments }
  921.   ERRCODE_FUNCTIONNOTFOUND      = 79;     { 0x4f Loaderlib cant find a func in the DLL (bad version?) }
  922.   ERRCODE_MUSTUSEBASEORDER      = 80;     { 0x50 Must use baseorder for this operation }
  923.   ERRCODE_INVALIDPROCEDURENAME  = 81;     { 0x51 Invalid procedure name }
  924.   ERRCODE_INVALIDFLDMAP         = 82;     { 0x52 invalid field map }
  925.   DBIERR_OUTOFRANGE             = (ERRBASE_INVALIDREQ + ERRCODE_OUTOFRANGE);
  926.   DBIERR_INVALIDPARAM           = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPARAM);
  927.   DBIERR_INVALIDFILENAME        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILENAME);
  928.   DBIERR_NOSUCHFILE             = (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILE);
  929.   DBIERR_INVALIDOPTION          = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDOPTION);
  930.   DBIERR_INVALIDHNDL            = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDHNDL);
  931.   DBIERR_UNKNOWNTBLTYPE         = (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNTBLTYPE);
  932.   DBIERR_UNKNOWNFILE            = (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNFILE);
  933.   DBIERR_PRIMARYKEYREDEFINE     = (ERRBASE_INVALIDREQ + ERRCODE_PRIMARYKEYREDEFINE);
  934.   DBIERR_INVALIDRINTDESCNUM     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTDESCNUM);
  935.   DBIERR_KEYFLDTYPEMISMATCH     = (ERRBASE_INVALIDREQ + ERRCODE_KEYFLDTYPEMISMATCH);
  936.   DBIERR_INVALIDMODIFYREQUEST   = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODIFYREQUEST);
  937.   DBIERR_NOSUCHINDEX            = (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHINDEX);
  938.   DBIERR_INVALIDBLOBOFFSET      = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBOFFSET);
  939.   DBIERR_INVALIDDESCNUM         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESCNUM);
  940.   DBIERR_INVALIDFLDTYPE         = (ERRBASE_INVALIDREQ +  ERRCODE_INVALIDFLDTYPE);
  941.   DBIERR_INVALIDFLDDESC         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDDESC);
  942.   DBIERR_INVALIDFLDXFORM        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDXFORM);
  943.   DBIERR_INVALIDRECSTRUCT       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRECSTRUCT);
  944.   DBIERR_INVALIDDESC            = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESC);
  945.   DBIERR_INVALIDINDEXSTRUCT     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXSTRUCT);
  946.   DBIERR_INVALIDVCHKSTRUCT      = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDVCHKSTRUCT);
  947.   DBIERR_INVALIDRINTSTRUCT      = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTSTRUCT);
  948.   DBIERR_INVALIDRESTRTBLORDER   = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTRTBLORDER);
  949.   DBIERR_NAMENOTUNIQUE          = (ERRBASE_INVALIDREQ + ERRCODE_NAMENOTUNIQUE);
  950.   DBIERR_INDEXNAMEREQUIRED      = (ERRBASE_INVALIDREQ + ERRCODE_INDEXNAMEREQUIRED);
  951.   DBIERR_INVALIDSESHANDLE       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDSESHANDLE);
  952.   DBIERR_INVALIDRESTROP         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTROP);
  953.   DBIERR_UNKNOWNDRIVER          = (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDRIVER);
  954.   DBIERR_UNKNOWNDB              = (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDB);
  955.   DBIERR_INVALIDPASSWORD        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPASSWORD);
  956.   DBIERR_NOCALLBACK             = (ERRBASE_INVALIDREQ + ERRCODE_NOCALLBACK);
  957.   DBIERR_INVALIDCALLBACKBUFLEN  = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDCALLBACKBUFLEN );
  958.   DBIERR_INVALIDDIR             = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDIR);
  959.   DBIERR_INVALIDXLATION         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDXLATION);
  960.   DBIERR_DIFFERENTTABLES        = (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTTABLES);
  961.   DBIERR_INVALIDBOOKMARK        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBOOKMARK);
  962.   DBIERR_INVALIDINDEXNAME       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXNAME);
  963.   DBIERR_INVALIDIDXDESC         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDIDXDESC);
  964.   DBIERR_NOSUCHTABLE            = (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHTABLE);
  965.   DBIERR_USECOUNT               = (ERRBASE_INVALIDREQ + ERRCODE_USECOUNT);
  966.   DBIERR_INVALIDKEY             = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDKEY);
  967.   DBIERR_INDEXEXISTS            = (ERRBASE_INVALIDREQ + ERRCODE_INDEXEXISTS);
  968.   DBIERR_INDEXOPEN              = (ERRBASE_INVALIDREQ + ERRCODE_INDEXOPEN);
  969.   DBIERR_INVALIDBLOBLEN         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBLEN);
  970.   DBIERR_INVALIDBLOBHANDLE      = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBHANDLE);
  971.   DBIERR_TABLEOPEN              = (ERRBASE_INVALIDREQ + ERRCODE_TABLEOPEN);
  972.   DBIERR_NEEDRESTRUCTURE        = (ERRBASE_INVALIDREQ + ERRCODE_NEEDRESTRUCTURE);
  973.   DBIERR_INVALIDMODE            = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODE);
  974.   DBIERR_CANNOTCLOSE            = (ERRBASE_INVALIDREQ + ERRCODE_CANNOTCLOSE);
  975.   DBIERR_ACTIVEINDEX            = (ERRBASE_INVALIDREQ + ERRCODE_ACTIVEINDEX);
  976.   DBIERR_INVALIDUSRPASS         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDUSRPASS);
  977.   DBIERR_MULTILEVELCASCADE      = (ERRBASE_INVALIDREQ + ERRCODE_MULTILEVELCASCADE);
  978.   DBIERR_INVALIDFIELDNAME       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFIELDNAME);
  979.   DBIERR_INVALIDTABLENAME       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLENAME);
  980.   DBIERR_INVALIDLINKEXPR        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLINKEXPR);
  981.   DBIERR_NAMERESERVED           = (ERRBASE_INVALIDREQ + ERRCODE_NAMERESERVED);
  982.   DBIERR_INVALIDFILEEXTN        = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILEEXTN);
  983.   DBIERR_INVALIDLANGDRV         = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLANGDRV);
  984.   DBIERR_ALIASNOTOPEN           = (ERRBASE_INVALIDREQ + ERRCODE_ALIASNOTOPEN);
  985.   DBIERR_INCOMPATRECSTRUCTS     = (ERRBASE_INVALIDREQ + ERRCODE_INCOMPATRECSTRUCTS);
  986.   DBIERR_RESERVEDOSNAME         = (ERRBASE_INVALIDREQ + ERRCODE_RESERVEDDOSNAME);
  987.   DBIERR_DESTMUSTBEINDEXED      = (ERRBASE_INVALIDREQ + ERRCODE_DESTMUSTBEINDEXED);
  988.   DBIERR_INVALIDINDEXTYPE       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXTYPE);
  989.   DBIERR_LANGDRVMISMATCH        = (ERRBASE_INVALIDREQ + ERRCODE_LANGDRVMISMATCH);
  990.   DBIERR_NOSUCHFILTER           = (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILTER);
  991.   DBIERR_INVALIDFILTER          = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILTER);
  992.   DBIERR_INVALIDTABLECREATE     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLECREATE);
  993.   DBIERR_INVALIDTABLEDELETE     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLEDELETE);
  994.   DBIERR_INVALIDINDEXCREATE     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXCREATE);
  995.   DBIERR_INVALIDINDEXDELETE     = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXDELETE);
  996.   DBIERR_INVALIDTABLE           = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLE);
  997.   DBIERR_MULTIRESULTS           = (ERRBASE_INVALIDREQ + ERRCODE_MULTIRESULTS);
  998.   DBIERR_INVALIDTIME            = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIME);
  999.   DBIERR_INVALIDDATE            = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDATE);
  1000.   DBIERR_INVALIDTIMESTAMP       = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIMESTAMP);
  1001.   DBIERR_DIFFERENTPATH          = (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTPATH);
  1002.   DBIERR_MISMATCHARGS           = (ERRBASE_INVALIDREQ + ERRCODE_MISMATCHARGS);
  1003.   DBIERR_FUNCTIONNOTFOUND       = (ERRBASE_INVALIDREQ + ERRCODE_FUNCTIONNOTFOUND);
  1004.   DBIERR_MUSTUSEBASEORDER       = (ERRBASE_INVALIDREQ + ERRCODE_MUSTUSEBASEORDER);
  1005.   DBIERR_INVALIDPROCEDURENAME   = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPROCEDURENAME);
  1006.   DBIERR_INVALIDFLDMAP          = (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDMAP);
  1007. { ERRCAT_LOCKCONFLICT }
  1008. { =================== }
  1009.   ERRCODE_LOCKED                = 1;
  1010.   ERRCODE_UNLOCKFAILED          = 2;
  1011.   ERRCODE_FILEBUSY              = 3;
  1012.   ERRCODE_DIRBUSY               = 4;
  1013.   ERRCODE_FILELOCKED            = 5;
  1014.   ERRCODE_DIRLOCKED             = 6;
  1015.   ERRCODE_ALREADYLOCKED         = 7;
  1016.   ERRCODE_NOTLOCKED             = 8;
  1017.   ERRCODE_LOCKTIMEOUT           = 9;
  1018.   ERRCODE_GROUPLOCKED           = 10;     { 0x0a }
  1019.   ERRCODE_LOSTTBLLOCK           = 11;     { 0x0b }
  1020.   ERRCODE_LOSTEXCLACCESS        = 12;     { 0x0c }
  1021.   ERRCODE_NEEDEXCLACCESS        = 13;     { 0x0d }
  1022.   ERRCODE_RECGROUPCONFLICT      = 14;     { 0x0e }
  1023.   ERRCODE_DEADLOCK              = 15;
  1024.   ERRCODE_ACTIVETRAN            = 16;
  1025.   ERRCODE_NOACTIVETRAN          = 17;
  1026.   ERRCODE_RECLOCKFAILED         = 18;
  1027.   ERRCODE_OPTRECLOCKFAILED      = 19;
  1028.   ERRCODE_OPTRECLOCKRECDEL      = 20;
  1029.   ERRCODE_LOCKEDRECS            = 21;
  1030.   ERRCODE_NEEDWRITELOCK         = 22;
  1031.   ERRCODE_ENLISTFAILED          = 23; 
  1032.   DBIERR_LOCKED                 = (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKED);
  1033.   DBIERR_UNLOCKFAILED           = (ERRBASE_LOCKCONFLICT + ERRCODE_UNLOCKFAILED);
  1034.   DBIERR_FILEBUSY               = (ERRBASE_LOCKCONFLICT + ERRCODE_FILEBUSY);
  1035.   DBIERR_DIRBUSY                = (ERRBASE_LOCKCONFLICT + ERRCODE_DIRBUSY);
  1036.   DBIERR_FILELOCKED             = (ERRBASE_LOCKCONFLICT + ERRCODE_FILELOCKED);
  1037.   DBIERR_DIRLOCKED              = (ERRBASE_LOCKCONFLICT + ERRCODE_DIRLOCKED);
  1038.   DBIERR_ALREADYLOCKED          = (ERRBASE_LOCKCONFLICT + ERRCODE_ALREADYLOCKED);
  1039.   DBIERR_NOTLOCKED              = (ERRBASE_LOCKCONFLICT + ERRCODE_NOTLOCKED);
  1040.   DBIERR_LOCKTIMEOUT            = (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKTIMEOUT);
  1041.   DBIERR_GROUPLOCKED            = (ERRBASE_LOCKCONFLICT + ERRCODE_GROUPLOCKED);
  1042.   DBIERR_LOSTTBLLOCK            = (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTTBLLOCK);
  1043.   DBIERR_LOSTEXCLACCESS         = (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTEXCLACCESS);
  1044.   DBIERR_NEEDEXCLACCESS         = (ERRBASE_LOCKCONFLICT  + ERRCODE_NEEDEXCLACCESS);
  1045.   DBIERR_RECGROUPCONFLICT       = (ERRBASE_LOCKCONFLICT + ERRCODE_RECGROUPCONFLICT);
  1046.   DBIERR_DEADLOCK               = (ERRBASE_LOCKCONFLICT + ERRCODE_DEADLOCK);
  1047.   DBIERR_ACTIVETRAN             = (ERRBASE_LOCKCONFLICT + ERRCODE_ACTIVETRAN);
  1048.   DBIERR_NOACTIVETRAN           = (ERRBASE_LOCKCONFLICT + ERRCODE_NOACTIVETRAN);
  1049.   DBIERR_RECLOCKFAILED          = (ERRBASE_LOCKCONFLICT + ERRCODE_RECLOCKFAILED);
  1050.   DBIERR_OPTRECLOCKFAILED       = (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKFAILED);
  1051.   DBIERR_OPTRECLOCKRECDEL       = (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKRECDEL);
  1052.   DBIERR_ENLISTFAILED           = (ERRBASE_LOCKCONFLICT + ERRCODE_ENLISTFAILED); 
  1053. { ERRCAT_SECURITY }
  1054. { =============== }
  1055.   ERRCODE_NOTSUFFFIELDRIGHTS    = 1;      { Not sufficient field  rights for operation }
  1056.   ERRCODE_NOTSUFFTABLERIGHTS    = 2;      { Not sufficient table  rights for operation }
  1057.   ERRCODE_NOTSUFFFAMILYRIGHTS   = 3;      { Not sufficient family rights for operation }
  1058.   ERRCODE_READONLYDIR           = 4;      { Is a read-only directory }
  1059.   ERRCODE_READONLYDB            = 5;      { Database is read-only }
  1060.   ERRCODE_READONLYFLD           = 6;      { Trying to modify read-only field }
  1061.   ERRCODE_TBLENCRYPTED          = 7;      { Table is encrypted (dBASE only) }
  1062.   ERRCODE_NOTSUFFSQLRIGHTS      = 8;      { Not sufficient sql rights for operation }
  1063.   DBIERR_NOTSUFFFIELDRIGHTS     = (ERRBASE_SEC + ERRCODE_NOTSUFFFIELDRIGHTS);
  1064.   DBIERR_NOTSUFFTABLERIGHTS     = (ERRBASE_SEC + ERRCODE_NOTSUFFTABLERIGHTS);
  1065.   DBIERR_NOTSUFFFAMILYRIGHTS    = (ERRBASE_SEC + ERRCODE_NOTSUFFFAMILYRIGHTS);
  1066.   DBIERR_READONLYDIR            = (ERRBASE_SEC + ERRCODE_READONLYDIR);
  1067.   DBIERR_READONLYDB             = (ERRBASE_SEC + ERRCODE_READONLYDB);
  1068.   DBIERR_READONLYFLD            = (ERRBASE_SEC + ERRCODE_READONLYFLD);
  1069.   DBIERR_TBLENCRYPTED           = (ERRBASE_SEC + ERRCODE_TBLENCRYPTED);
  1070.   DBIERR_NOTSUFFSQLRIGHTS       = (ERRBASE_SEC + ERRCODE_NOTSUFFSQLRIGHTS);
  1071. { ERRCAT_INVALIDCONTEXT }
  1072. { ===================== }
  1073.   ERRCODE_NOTABLOB              = 1;      { Field is not a blob }
  1074.   ERRCODE_BLOBOPENED            = 2;      { Blob already opened }
  1075.   ERRCODE_BLOBNOTOPENED         = 3;      { Blob not opened }
  1076.   ERRCODE_NA                    = 4;      { Operation not applicable }
  1077.   ERRCODE_NOTINDEXED            = 5;      { Table is not indexed }
  1078.   ERRCODE_NOTINITIALIZED        = 6;      { Engine not initialized }
  1079.   ERRCODE_MULTIPLEINIT          = 7;      { Attempt to re-initialize engine }
  1080.   ERRCODE_NOTSAMESESSION        = 8;      { Attempt to mix objs from diff ses }
  1081.   ERRCODE_PDXDRIVERNOTACTIVE    = 9;      { Paradox driver not active }
  1082.   ERRCODE_DRIVERNOTLOADED       = 10;     { 0x0a Driver not loaded }
  1083.   ERRCODE_TABLEREADONLY         = 11;     { 0x0b Table is read only }
  1084.   ERRCODE_NOASSOCINDEX          = 12;     { 0x0c No index associated with the cursor }
  1085.   ERRCODE_HASOPENCURSORS        = 13;     { 0x0d Has open cursors }
  1086.   ERRCODE_NOTABLESUPPORT        = 14;     { 0x0e Op cannot be done on this table }
  1087.   ERRCODE_INDEXREADONLY         = 15;     { 0x0f Index is read only }
  1088.   ERRCODE_NOUNIQUERECS          = 16;     { 0x10 Records are not unique }
  1089.   ERRCODE_NOTCURSESSION         = 17;     { 0x11 Not the current/active session }
  1090.   ERRCODE_INVALIDKEYWORD        = 18;     { 0x12 Invalid use of keyword. }
  1091.   ERRCODE_CONNECTINUSE          = 19;     { 0x13 Connection in use }
  1092.   ERRCODE_CONNECTNOTSHARED      = 20;     { 0x14 Passthru SQL connection not share }
  1093.   DBIERR_NOTABLOB               = (ERRBASE_IC + ERRCODE_NOTABLOB);
  1094.   DBIERR_BLOBOPENED             = (ERRBASE_IC + ERRCODE_BLOBOPENED);
  1095.   DBIERR_BLOBNOTOPENED          = (ERRBASE_IC + ERRCODE_BLOBNOTOPENED);
  1096.   DBIERR_NA                     = (ERRBASE_IC + ERRCODE_NA);
  1097.   DBIERR_NOTINDEXED             = (ERRBASE_IC + ERRCODE_NOTINDEXED);
  1098.   DBIERR_NOTINITIALIZED         = (ERRBASE_IC + ERRCODE_NOTINITIALIZED);
  1099.   DBIERR_MULTIPLEINIT           = (ERRBASE_IC + ERRCODE_MULTIPLEINIT);
  1100.   DBIERR_NOTSAMESESSION         = (ERRBASE_IC + ERRCODE_NOTSAMESESSION);
  1101.   DBIERR_PDXDRIVERNOTACTIVE     = (ERRBASE_IC + ERRCODE_PDXDRIVERNOTACTIVE);
  1102.   DBIERR_DRIVERNOTLOADED        = (ERRBASE_IC + ERRCODE_DRIVERNOTLOADED);
  1103.   DBIERR_TABLEREADONLY          = (ERRBASE_IC + ERRCODE_TABLEREADONLY);
  1104.   DBIERR_NOASSOCINDEX           = (ERRBASE_IC + ERRCODE_NOASSOCINDEX);
  1105.   DBIERR_HASOPENCURSORS         = (ERRBASE_IC + ERRCODE_HASOPENCURSORS);
  1106.   DBIERR_NOTABLESUPPORT         = (ERRBASE_IC + ERRCODE_NOTABLESUPPORT);
  1107.   DBIERR_INDEXREADONLY          = (ERRBASE_IC + ERRCODE_INDEXREADONLY);
  1108.   DBIERR_NOUNIQUERECS           = (ERRBASE_IC + ERRCODE_NOUNIQUERECS);
  1109.   DBIERR_NOTCURSESSION          = (ERRBASE_IC + ERRCODE_NOTCURSESSION);
  1110.   DBIERR_INVALIDKEYWORD         = (ERRBASE_IC + ERRCODE_INVALIDKEYWORD);
  1111.   DBIERR_CONNECTINUSE           = (ERRBASE_IC + ERRCODE_CONNECTINUSE);
  1112.   DBIERR_CONNECTNOTSHARED       = (ERRBASE_IC + ERRCODE_CONNECTNOTSHARED);
  1113. { ERRCAT_OS }
  1114. { ========= }
  1115. { DOS extended errors: }
  1116.   ERRCODE_OSEINVFNC             = 1;      { Invalid function number }
  1117.   ERRCODE_OSENOENT              = 2;      { No such file or directory }
  1118.   ERRCODE_OSENOPATH             = 3;      { Path not found }
  1119.   ERRCODE_OSEMFILE              = 4;      { Too many open files }
  1120.   ERRCODE_OSEACCES              = 5;      { Permission denied }
  1121.   ERRCODE_OSEBADF               = 6;      { Bad file number }
  1122.   ERRCODE_OSECONTR              = 7;      { Memory blocks destroyed }
  1123.   ERRCODE_OSENOMEM              = 8;      { Not enough core }
  1124.   ERRCODE_OSEINVMEM             = 9;      { Invalid memory block address }
  1125.   ERRCODE_OSEINVENV             = 10;     { 0x0a Invalid environment }
  1126.   ERRCODE_OSEINVFMT             = 11;     { 0x0b Invalid format }
  1127.   ERRCODE_OSEINVACC             = 12;     { 0x0c Invalid access code }
  1128.   ERRCODE_OSEINVDAT             = 13;     { 0x0d Invalid data }
  1129.   ERRCODE_OSENODEV              = 15;     { 0x0f No such device }
  1130.   ERRCODE_OSECURDIR             = 16;     { 0x10 Attempt to remove curdir }
  1131.   ERRCODE_OSENOTSAM             = 17;     { 0x11 Not same device }
  1132.   ERRCODE_OSENMFILE             = 18;     { 0x12 No more files }
  1133.   ERRCODE_OSEINVAL              = 19;     { 0x13 Invalid argument }
  1134.   ERRCODE_OSE2BIG               = 20;     { 0x14 Arg list too long }
  1135.   ERRCODE_OSENOEXEC             = 21;     { 0x15 Exec format error }
  1136.   ERRCODE_OSEXDEV               = 22;     { 0x16 Cross-device link }
  1137.   ERRCODE_OSEDOM                = 33;     { 0x21 Math argument }
  1138.   ERRCODE_OSERANGE              = 34;     { 0x22 Result to large }
  1139.   ERRCODE_OSEEXIST              = 35;     { 0x23 File already exists }
  1140.   ERRCODE_OSUNKNOWN             = 39;     { 0x27 Unkown | illegal error from rtl }
  1141.   ERRCODE_OSSHAREVIOL           = 50;     { 0x32 Share viol, ext. err 0x20 }
  1142.   ERRCODE_OSLOCKVIOL            = 51;     { 0x33 Lock viol, ext. err 0x21 }
  1143.   ERRCODE_OSINT24FAIL           = 52;     { 0x34 INT24 called }
  1144.   ERRCODE_OSDRIVENOTREADY       = 53;     { 0x35 Drive not ready }
  1145. { OTHER Os errors: }
  1146. { 1. idapi errors  }
  1147. { 2. errors from non-dos systems ( i.e. NOVELL ) }
  1148.   ERRCODE_NOTEXACT              = 100;    { 0x64 Not exact read/write }
  1149.   ERRCODE_OSNETERR              = 101;    { 0x65 Generic network error }
  1150.   ERRCODE_OSUNKNOWNSRVERR       = 102;    { 0x66 Error from file server }
  1151.   ERRCODE_SERVERNOMEMORY        = 103;    { 0x67 Server out of memory }
  1152.   ERRCODE_OSALREADYLOCKED       = 104;    { 0x68 Record already locked (by you) }
  1153.   ERRCODE_OSNOTLOCKED           = 105;    { 0x69 Record not locked }
  1154.   ERRCODE_NOSERVERSW            = 106;    { 0x6a Server software not running the workstation/server }
  1155.   DBIERR_OSEINVFNC              = ( ERRBASE_OS + ERRCODE_OSEINVFNC );
  1156.   DBIERR_OSENOENT               = ( ERRBASE_OS + ERRCODE_OSENOENT );
  1157.   DBIERR_OSENOPATH              = ( ERRBASE_OS + ERRCODE_OSENOPATH );
  1158.   DBIERR_OSEMFILE               = ( ERRBASE_OS + ERRCODE_OSEMFILE );
  1159.   DBIERR_OSEACCES               = ( ERRBASE_OS + ERRCODE_OSEACCES );
  1160.   DBIERR_OSEBADF                = ( ERRBASE_OS + ERRCODE_OSEBADF );
  1161.   DBIERR_OSECONTR               = ( ERRBASE_OS + ERRCODE_OSECONTR );
  1162.   DBIERR_OSENOMEM               = ( ERRBASE_OS + ERRCODE_OSENOMEM );
  1163.   DBIERR_OSEINVMEM              = ( ERRBASE_OS + ERRCODE_OSEINVMEM );
  1164.   DBIERR_OSEINVENV              = ( ERRBASE_OS + ERRCODE_OSEINVENV );
  1165.   DBIERR_OSEINVFMT              = ( ERRBASE_OS + ERRCODE_OSEINVFMT );
  1166.   DBIERR_OSEINVACC              = ( ERRBASE_OS + ERRCODE_OSEINVACC );
  1167.   DBIERR_OSEINVDAT              = ( ERRBASE_OS + ERRCODE_OSEINVDAT );
  1168.   DBIERR_OSENODEV               = ( ERRBASE_OS + ERRCODE_OSENODEV );
  1169.   DBIERR_OSECURDIR              = ( ERRBASE_OS + ERRCODE_OSECURDIR );
  1170.   DBIERR_OSENOTSAM              = ( ERRBASE_OS + ERRCODE_OSENOTSAM );
  1171.   DBIERR_OSENMFILE              = ( ERRBASE_OS + ERRCODE_OSENMFILE );
  1172.   DBIERR_OSEINVAL               = ( ERRBASE_OS + ERRCODE_OSEINVAL );
  1173.   DBIERR_OSE2BIG                = ( ERRBASE_OS + ERRCODE_OSE2BIG );
  1174.   DBIERR_OSENOEXEC              = ( ERRBASE_OS + ERRCODE_OSENOEXEC );
  1175.   DBIERR_OSEXDEV                = ( ERRBASE_OS + ERRCODE_OSEXDEV );
  1176.   DBIERR_OSEDOM                 = ( ERRBASE_OS + ERRCODE_OSEDOM );
  1177.   DBIERR_OSERANGE               = ( ERRBASE_OS + ERRCODE_OSERANGE );
  1178.   DBIERR_OSEEXIST               = ( ERRBASE_OS + ERRCODE_OSEEXIST );
  1179.   DBIERR_OSUNKNOWN              = ( ERRBASE_OS + ERRCODE_OSUNKNOWN );
  1180.   DBIERR_OSSHAREVIOL            = ( ERRBASE_OS + ERRCODE_OSSHAREVIOL );
  1181.   DBIERR_OSLOCKVIOL             = ( ERRBASE_OS + ERRCODE_OSLOCKVIOL );
  1182.   DBIERR_OSNETERR               = ( ERRBASE_OS + ERRCODE_OSNETERR );
  1183.   DBIERR_OSINT24FAIL            = ( ERRBASE_OS + ERRCODE_OSINT24FAIL );
  1184.   DBIERR_OSDRIVENOTREADY        = ( ERRBASE_OS + ERRCODE_OSDRIVENOTREADY );
  1185.   DBIERR_NOTEXACT               = ( ERRBASE_OS + ERRCODE_NOTEXACT );
  1186.   DBIERR_OSUNKNOWNSRVERR        = ( ERRBASE_OS + ERRCODE_OSUNKNOWNSRVERR );
  1187.   DBIERR_SERVERNOMEMORY         = ( ERRBASE_OS + ERRCODE_SERVERNOMEMORY );
  1188.   DBIERR_OSALREADYLOCKED        = ( ERRBASE_OS + ERRCODE_OSALREADYLOCKED );
  1189.   DBIERR_OSNOTLOCKED            = ( ERRBASE_OS + ERRCODE_OSNOTLOCKED );
  1190.   DBIERR_NOSERVERSW             = ( ERRBASE_OS + ERRCODE_NOSERVERSW);
  1191. { ERRCAT_NETWORK }
  1192. { ============== }
  1193.   ERRCODE_NETINITERR            = 1;      { Net init failed }
  1194.   ERRCODE_NETUSERLIMIT          = 2;      { Net user limit exceeded }
  1195.   ERRCODE_NETFILEVERSION        = 3;      { Wrong net file version }
  1196.   ERRCODE_NETFILELOCKED         = 4;      { Not able to lock net file }
  1197.   ERRCODE_DIRNOTPRIVATE         = 5;
  1198.   ERRCODE_NETMULTIPLE           = 6;      { Multiple net files in use }
  1199.   ERRCODE_NETUNKNOWN            = 7;      { Unknown net error }
  1200.   ERRCODE_SHAREDFILE            = 8;      { Cannot access a shared file }
  1201.   ERRCODE_SHARENOTLOADED        = 9;      { Share not loaded }
  1202.   ERRCODE_NOTONANETWORK         = 10;     { 0x0a Not an Network }
  1203.   ERRCODE_SQLCOMMLOST           = 11;     { 0x0b Lost Communication with SQL server }
  1204.   ERRCODE_SERVERCOMMLOST        = 12;     { 0x0c Lost Communication with IDAPI server }
  1205.   ERRCODE_SQLSERVERNOTFOUND     = 13;     { 0x0d SQL Server not found }
  1206.   ERRCODE_SERVERNOTFOUND        = 14;     { 0x0e SQL Server not found }
  1207.   DBIERR_NETINITERR             = (ERRBASE_NETWORK + ERRCODE_NETINITERR);
  1208.   DBIERR_NETUSERLIMIT           = (ERRBASE_NETWORK + ERRCODE_NETUSERLIMIT);
  1209.   DBIERR_NETFILEVERSION         = (ERRBASE_NETWORK + ERRCODE_NETFILEVERSION);
  1210.   DBIERR_NETFILELOCKED          = (ERRBASE_NETWORK + ERRCODE_NETFILELOCKED);
  1211.   DBIERR_DIRNOTPRIVATE          = (ERRBASE_NETWORK + ERRCODE_DIRNOTPRIVATE);
  1212.   DBIERR_NETMULTIPLE            = (ERRBASE_NETWORK + ERRCODE_NETMULTIPLE);
  1213.   DBIERR_NETUNKNOWN             = (ERRBASE_NETWORK + ERRCODE_NETUNKNOWN);
  1214.   DBIERR_SHAREDFILE             = (ERRBASE_NETWORK + ERRCODE_SHAREDFILE);
  1215.   DBIERR_SHARENOTLOADED         = (ERRBASE_NETWORK + ERRCODE_SHARENOTLOADED);
  1216.   DBIERR_NOTONANETWORK          = (ERRBASE_NETWORK + ERRCODE_NOTONANETWORK);
  1217.   DBIERR_SQLCOMMLOST            = (ERRBASE_NETWORK + ERRCODE_SQLCOMMLOST);
  1218.   DBIERR_SERVERCOMMLOST         = (ERRBASE_NETWORK + ERRCODE_SERVERCOMMLOST);
  1219.   DBIERR_SQLSERVERNOTFOUND      = (ERRBASE_NETWORK + ERRCODE_SQLSERVERNOTFOUND);
  1220.   DBIERR_SERVERNOTFOUND         = (ERRBASE_NETWORK + ERRCODE_SERVERNOTFOUND);
  1221. { ERRCAT_DRIVER }
  1222. { ============= }
  1223.   ERRCODE_WRONGDRVNAME          = 1;      { Wrong driver name }
  1224.   ERRCODE_WRONGSYSVER           = 2;      { Wrong system version }
  1225.   ERRCODE_WRONGDRVVER           = 3;      { Wrong driver version }
  1226.   ERRCODE_WRONGDRVTYPE          = 4;      { Wrong driver type }
  1227.   ERRCODE_CANNOTLOADDRV         = 5;      { Can not load driver }
  1228.   ERRCODE_CANNOTLOADLDDRV       = 6;      { Can not load language driver }
  1229.   ERRCODE_VENDINITFAIL          = 7;      { Vendor init failure }
  1230.   ERRCODE_DRIVERRESTRICTED      = 8;      { Client not enabled for this driver }
  1231.   DBIERR_WRONGDRVNAME           = (ERRBASE_DRIVER + ERRCODE_WRONGDRVNAME);
  1232.   DBIERR_WRONGSYSVER            = (ERRBASE_DRIVER + ERRCODE_WRONGSYSVER);
  1233.   DBIERR_WRONGDRVVER            = (ERRBASE_DRIVER + ERRCODE_WRONGDRVVER);
  1234.   DBIERR_WRONGDRVTYPE           = (ERRBASE_DRIVER + ERRCODE_WRONGDRVTYPE);
  1235.   DBIERR_CANNOTLOADDRV          = (ERRBASE_DRIVER + ERRCODE_CANNOTLOADDRV);
  1236.   DBIERR_CANNOTLOADLDDRV        = (ERRBASE_DRIVER + ERRCODE_CANNOTLOADLDDRV);
  1237.   DBIERR_VENDINITFAIL           = (ERRBASE_DRIVER + ERRCODE_VENDINITFAIL);
  1238.   DBIERR_DRIVERRESTRICTED       = (ERRBASE_DRIVER + ERRCODE_DRIVERRESTRICTED);
  1239. { ERRCAT_QUERY }
  1240. { ============ }
  1241.   DBICODE_AMBJOASY              = 1;      { obsolete }
  1242.   DBICODE_AMBJOSYM              = 2;      { obsolete }
  1243.   DBICODE_AMBOUTEX              = 3;
  1244.   DBICODE_AMBOUTPR              = 4;      { obsolete }
  1245.   DBICODE_AMBSYMAS              = 5;      { obsolete }
  1246.   DBICODE_ASETOPER              = 6;
  1247.   DBICODE_AVENUMDA              = 7;
  1248.   DBICODE_BADEXPR1              = 8;
  1249.   DBICODE_BADFLDOR              = 9;
  1250.   DBICODE_BADVNAME              = 10;     { 0x0a }
  1251.   DBICODE_BITMAPER              = 11;     { 0x0b }
  1252.   DBICODE_CALCBADR              = 12;     { 0x0c }
  1253.   DBICODE_CALCTYPE              = 13;     { 0x0d }
  1254.   DBICODE_CHGTO1TI              = 14;     { 0x0e }
  1255.   DBICODE_CHGTOCHG              = 15;     { 0x0f }
  1256.   DBICODE_CHGTOEXP              = 16;     { 0x10 }
  1257.   DBICODE_CHGTOINS              = 17;     { 0x11 }
  1258.   DBICODE_CHGTONEW              = 18;     { 0x12 }
  1259.   DBICODE_CHGTOVAL              = 19;     { 0x13 }
  1260.   DBICODE_CHKMRKFI              = 20;     { 0x14 }
  1261.   DBICODE_CHNAMBIG              = 21;     { 0x15 }
  1262.   DBICODE_CHUNKERR              = 22;     { 0x16 }
  1263.   DBICODE_COLUM255              = 23;     { 0x17 }
  1264.   DBICODE_CONAFTAS              = 24;     { 0x18 }
  1265.   DBICODE_DEL1TIME              = 25;     { 0x19 }
  1266.   DBICODE_DELAMBIG              = 26;     { 0x1a }
  1267.   DBICODE_DELFRDEL              = 27;     { 0x1b }
  1268.   DBICODE_EGFLDTYP              = 28;     { 0x1c }
  1269.   DBICODE_EXAMINOR              = 29;     { 0x1d }
  1270.   DBICODE_EXPRTYPS              = 30;     { 0x1e }
  1271.   DBICODE_EXTRACOM              = 31;     { 0x1f }
  1272.   DBICODE_EXTRAORO              = 32;     { 0x20 }
  1273.   DBICODE_EXTRAQRO              = 33;     { 0x21 }
  1274.   DBICODE_FIND1ATT              = 34;     { 0x22 }
  1275.   DBICODE_FINDANST              = 35;     { 0x23 }
  1276.   DBICODE_GRPNOSET              = 36;     { 0x24 }
  1277.   DBICODE_GRPSTROW              = 37;     { 0x25 }
  1278.   DBICODE_IDFINLCO              = 38;     { 0x26 }
  1279.   DBICODE_IDFPERLI              = 39;     { 0x27 }
  1280.   DBICODE_INANEXPR              = 40;     { 0x28 }
  1281.   DBICODE_INS1TIME              = 41;     { 0x29 }
  1282.   DBICODE_INSAMBIG              = 42;     { 0x2a }
  1283.   DBICODE_INSDELCH              = 43;     { 0x2b }
  1284.   DBICODE_INSEXPRR              = 44;     { 0x2c }
  1285.   DBICODE_INSTOINS              = 45;     { 0x2d }
  1286.   DBICODE_ISARRAY               = 46;     { 0x2e }
  1287.   DBICODE_LABELERR              = 47;     { 0x2f }
  1288.   DBICODE_LINKCALC              = 48;     { 0x30 }
  1289.   DBICODE_LNGVNAME              = 49;     { 0x31 }
  1290.   DBICODE_LONGQURY              = 50;     { 0x32 }
  1291.   DBICODE_MEMVPROC              = 51;     { 0x33 }
  1292.   DBICODE_MISNGCOM              = 52;     { 0x34 }
  1293.   DBICODE_MISNGRPA              = 53;     { 0x35 }
  1294.   DBICODE_MISSRTQU              = 54;     { 0x36 }
  1295.   DBICODE_NAMTWICE              = 55;     { 0x37 }
  1296.   DBICODE_NOCHKMAR              = 56;     { 0x38 }
  1297.   DBICODE_NODEFOCC              = 57;     { 0x39 }
  1298.   DBICODE_NOGROUPS              = 58;     { 0x3a }
  1299.   DBICODE_NONSENSE              = 59;     { 0x3b }
  1300.   DBICODE_NOPATTER              = 60;     { 0x3c }
  1301.   DBICODE_NOSUCHDA              = 61;     { 0x3d }
  1302.   DBICODE_NOVALUE               = 62;     { 0x3e }
  1303.   DBICODE_ONLYCONS              = 63;     { 0x3f }
  1304.   DBICODE_ONLYSETR              = 64;     { 0x40 }
  1305.   DBICODE_OUTSENS1              = 65;     { 0x41 }
  1306.   DBICODE_OUTTWIC1              = 66;     { 0x42 }
  1307.   DBICODE_PAROWCNT              = 67;     { 0x43 }
  1308.   DBICODE_PERSEPAR              = 68;     { 0x44 }
  1309.   DBICODE_PROCPLSW              = 69;     { 0x45 }
  1310.   DBICODE_PWINSRTS              = 70;     { 0x46 }
  1311.   DBICODE_PWMODRTS              = 71;     { 0x47 }
  1312.   DBICODE_QBEFLDFOUND           = 72;     { 0x48 }
  1313.   DBICODE_QBENOFENCE            = 73;     { 0x49 }
  1314.   DBICODE_QBENOFENCET           = 74;     { 0x4a }
  1315.   DBICODE_QBENOHEADERT          = 75;     { 0x4b }
  1316.   DBICODE_QBENOTAB              = 76;     { 0x4c }
  1317.   DBICODE_QBENUMCOLS            = 77;     { 0x4d }
  1318.   DBICODE_QBEOPENTAB            = 78;     { 0x4e }
  1319.   DBICODE_QBETWICE              = 79;     { 0x4f }
  1320.   DBICODE_QRYNOANSWER           = 80;     { 0x50 }
  1321.   DBICODE_QRYNOTPREP            = 81;     { 0x51 }
  1322.   DBICODE_QUAINDEL              = 82;     { 0x52 }
  1323.   DBICODE_QUAININS              = 83;     { 0x53 }
  1324.   DBICODE_RAGININS              = 84;     { 0x54 }
  1325.   DBICODE_RAGINSET              = 85;     { 0x55 }
  1326.   DBICODE_ROWUSERR              = 86;     { 0x56 }
  1327.   DBICODE_SETEXPEC              = 87;     { 0x57 }
  1328.   DBICODE_SETVAMB1              = 88;     { 0x58 }
  1329.   DBICODE_SETVBAD1              = 89;     { 0x59 }
  1330.   DBICODE_SETVDEF1              = 90;     { 0x5a }
  1331.   DBICODE_SUMNUMBE              = 91;     { 0x5b }
  1332.   DBICODE_TBLISWP3              = 92;     { 0x5c }
  1333.   DBICODE_TOKENNOT              = 93;     { 0x5d }
  1334.   DBICODE_TWOOUTR1              = 94;     { 0x5e }
  1335.   DBICODE_TYPEMISM              = 95;     { 0x5f }
  1336.   DBICODE_UNRELQ1               = 96;     { 0x60 }
  1337.   DBICODE_UNUSEDST              = 97;     { 0x61 }
  1338.   DBICODE_USEINSDE              = 98;     { 0x62 }
  1339.   DBICODE_USEOFCHG              = 99;     { 0x63 }
  1340.   DBICODE_VARMUSTF              = 100;    { 0x64 }
  1341.   DBICODE_REGISTER              = 101;    { 0x65 }
  1342.   DBICODE_LONGEXPR              = 102;    { 0x66 }
  1343.   DBICODE_REFRESH               = 103;    { 0x67 }
  1344.   DBICODE_CANCEXCEPT            = 104;    { 0x68 }
  1345.   DBICODE_DBEXCEPT              = 105;    { 0x69 }
  1346.   DBICODE_MEMEXCEPT             = 106;    { 0x6a }
  1347.   DBICODE_FATALEXCEPT           = 107;    { 0x6b }
  1348.   DBICODE_QRYNIY                = 108;    { 0x6c }
  1349.   DBICODE_BADFORMAT             = 109;    { 0x6d }
  1350.   DBICODE_QRYEMPTY              = 110;    { 0x6e }
  1351.   DBICODE_NOQRYTOPREP           = 111;    { 0x6f }
  1352.   DBICODE_BUFFTOOSMALL          = 112;    { 0x70 }
  1353.   DBICODE_QRYNOTPARSE           = 113;    { 0x71 }
  1354.   DBICODE_NOTHANDLE             = 114;    { 0x72 }
  1355.   DBICODE_QRYSYNTERR            = 115;    { 0x73 }
  1356.   DBICODE_QXFLDCOUNT            = 116;    { 0x74 }
  1357.   DBICODE_QXFLDSYMNOTFOUND      = 117;    { 0x75 }
  1358.   DBICODE_QXTBLSYMNOTFOUND      = 118;    { 0x76 }
  1359.   DBICODE_BLOBTERM              = 119;    { 0x77 }
  1360.   DBICODE_BLOBERR               = 120;    { 0x78 }
  1361.   DBICODE_RESTARTQRY            = 121;    { 0x79 }
  1362.   DBICODE_UNKNOWNANSTYPE        = 122;    { 0x7a }
  1363. { Internal QBE use Only. }
  1364.   DBICODE_SQLG_MDIST            = 123;    { 0x7b }
  1365.   DBICODE_SQLG_NOARI            = 124;    { 0x7c }
  1366.   DBICODE_SQLG_LIKEN            = 125;    { 0x7d }
  1367.   DBICODE_SQLG_ALPHO            = 126;    { 0x7e }
  1368.   DBICODE_SQLG_DATEO            = 127;    { 0x7f }
  1369.   DBICODE_SQLG_RELOP            = 128;    { 0x80 }
  1370.   DBICODE_SQLG_ONLYC            = 129;    { 0x81 }
  1371.   DBICODE_SQLG_CNTLN            = 130;    { 0x82 }
  1372.   DBICODE_SQLG_CHINI            = 131;    { 0x83 }
  1373.   DBICODE_SQLG_UNION            = 132;    { 0x84 }
  1374.   DBICODE_SQLG_SLFIN            = 133;    { 0x85 }
  1375.   DBICODE_SQLG_OTJVR            = 134;    { 0x86 }
  1376.   DBICODE_SQLG_STROW            = 135;    { 0x87 }
  1377.   DBICODE_SQLG_QUANT            = 136;    { 0x88 }
  1378.   DBICODE_SQLG_REGSO            = 137;    { 0x89 }
  1379.   DBICODE_SQLG_COUNT            = 138;    { 0x8a }
  1380.   DBICODE_SQLG_AVERA            = 139;    { 0x8b }
  1381.   DBICODE_SQLG_DATEA            = 140;    { 0x8c }
  1382.   DBICODE_SQLG_BADPT            = 141;    { 0x8d }
  1383.   DBICODE_SQLG_RELPA            = 142;    { 0x8e }
  1384.   DBICODE_SQLG_PATRN            = 143;    { 0x8f }
  1385.   DBICODE_SQLG_FNDSU            = 144;    { 0x90 }
  1386.   DBICODE_SQLG_IFDCS            = 145;    { 0x91 }
  1387.   DBICODE_SQLG_IDCCO            = 146;    { 0x92 }
  1388.   DBICODE_SQLG_ONLYI            = 147;    { 0x93 }
  1389.   DBICODE_SQLG_SQLDIALECT       = 148;    { 0x94 }
  1390.   DBICODE_SQLG_NOQUERY          = 149;    { 0x95 }
  1391. { End of Internal.       }
  1392.   DBICODE_BLOBGROUP             = 150;    { 0x96 }
  1393.   DBICODE_QRYNOPROP             = 151;    { 0x97 }
  1394.   DBICODE_ANSTYPNOTSUP          = 152;    { 0x98 }
  1395.   DBICODE_ANSALIASNOTSUP        = 153;    { 0x99 }
  1396.   DBICODE_INSBLOBREQ            = 154;    { 0x9a }
  1397.   DBICODE_CHGUNIQUENDXREQ       = 155;    { 0x9b }
  1398.   DBICODE_DELUNIQUENDXREQ       = 156;    { 0x9c }
  1399.   DBICODE_SQLNOFULLUPDATE       = 157;    { 0x9d }
  1400.   DBICODE_CANTEXECREMOTE        = 158;    { 0x9e }
  1401.   DBICODE_UNEXPECTEDEOC         = 159;    { 0x9f }
  1402.   DBICODE_SQLPARAMNOTSET        = 160;    { 0xA0 }
  1403.   DBICODE_QUERYTOOLONG          = 161;    { 0xA1 }
  1404. { Errors added for localsql }
  1405.   DBICODE_NOSUCHRELORALIAS      = 170;
  1406.   DBICODE_TYPEAMBIGUITY         = 171;
  1407.   DBICODE_ORDERBYNOTAPROJ       = 172;
  1408.   DBICODE_SQLPARSE              = 173;
  1409.   DBICODE_CONSTRAINTFAILED      = 174;
  1410.   DBICODE_NOTGROUPINGFIELD      = 175;
  1411.   DBICODE_UDFNOTDEFINED         = 176;
  1412.   DBICODE_UDFERROR              = 177;
  1413.   DBICODE_SINGLEROWERROR        = 178;
  1414.   DBICODE_GROUPEXPR             = 179;
  1415.   DBICODE_QUERYTEXT             = 180;
  1416.   DBICODE_ANSIJOINSUP           = 181;
  1417.   DBICODE_DISTUNION             = 182;
  1418.   DBICODE_GROUPBYREQ            = 183;
  1419.   DBICODE_INSUPDAUTOIC          = 184;
  1420.   DBICODE_UPDREFINTSINGLE       = 185;
  1421.   DBICODE_NOMSACCESS            = 186;
  1422.   DBICODE_FIELDCONSTPREP        = 187;
  1423.   DBICODE_FIELDDEFPREP          = 188;
  1424.   DBICODE_RECCONSTPREP          = 189;
  1425.   DBICODE_TOOFEWSUBEXPR         = 190;    { 0xBE }
  1426.   DBICODE_TOOMANYSUBEXPR        = 191;    { 0xBF }
  1427.   DBICODE_INVALIDNODETYPE       = 192;    { 0xC0 }
  1428.   DBICODE_BOOLEXPR              = 193;    { 0xC1 }
  1429.   DBICODE_NONBOOLEXPR           = 194;    { 0xC2 }
  1430.   DBICODE_NOOUTERJOIN           = 195;    { 0xC3 }
  1431.   DBICODE_USERCONSTRERR         = 196;    { 0xC4 }
  1432.   DBIERR_AMBJOASY               = (ERRBASE_QUERY+DBICODE_AMBJOASY);
  1433.   DBIERR_AMBJOSYM               = (ERRBASE_QUERY+DBICODE_AMBJOSYM);
  1434.   DBIERR_AMBOUTEX               = (ERRBASE_QUERY+DBICODE_AMBOUTEX);
  1435.   DBIERR_AMBOUTPR               = (ERRBASE_QUERY+DBICODE_AMBOUTPR);
  1436.   DBIERR_AMBSYMAS               = (ERRBASE_QUERY+DBICODE_AMBSYMAS);
  1437.   DBIERR_ASETOPER               = (ERRBASE_QUERY+DBICODE_ASETOPER);
  1438.   DBIERR_AVENUMDA               = (ERRBASE_QUERY+DBICODE_AVENUMDA);
  1439.   DBIERR_BADEXPR1               = (ERRBASE_QUERY+DBICODE_BADEXPR1);
  1440.   DBIERR_BADFLDOR               = (ERRBASE_QUERY+DBICODE_BADFLDOR);
  1441.   DBIERR_BADVNAME               = (ERRBASE_QUERY+DBICODE_BADVNAME);
  1442.   DBIERR_BITMAPER               = (ERRBASE_QUERY+DBICODE_BITMAPER);
  1443.   DBIERR_CALCBADR               = (ERRBASE_QUERY+DBICODE_CALCBADR);
  1444.   DBIERR_CALCTYPE               = (ERRBASE_QUERY+DBICODE_CALCTYPE);
  1445.   DBIERR_CHGTO1TI               = (ERRBASE_QUERY+DBICODE_CHGTO1TI);
  1446.   DBIERR_CHGTOCHG               = (ERRBASE_QUERY+DBICODE_CHGTOCHG);
  1447.   DBIERR_CHGTOEXP               = (ERRBASE_QUERY+DBICODE_CHGTOEXP);
  1448.   DBIERR_CHGTOINS               = (ERRBASE_QUERY+DBICODE_CHGTOINS);
  1449.   DBIERR_CHGTONEW               = (ERRBASE_QUERY+DBICODE_CHGTONEW);
  1450.   DBIERR_CHGTOVAL               = (ERRBASE_QUERY+DBICODE_CHGTOVAL);
  1451.   DBIERR_CHKMRKFI               = (ERRBASE_QUERY+DBICODE_CHKMRKFI);
  1452.   DBIERR_CHNAMBIG               = (ERRBASE_QUERY+DBICODE_CHNAMBIG);
  1453.   DBIERR_CHUNKERR               = (ERRBASE_QUERY+DBICODE_CHUNKERR);
  1454.   DBIERR_COLUM255               = (ERRBASE_QUERY+DBICODE_COLUM255);
  1455.   DBIERR_CONAFTAS               = (ERRBASE_QUERY+DBICODE_CONAFTAS);
  1456.   DBIERR_DEL1TIME               = (ERRBASE_QUERY+DBICODE_DEL1TIME);
  1457.   DBIERR_DELAMBIG               = (ERRBASE_QUERY+DBICODE_DELAMBIG);
  1458.   DBIERR_DELFRDEL               = (ERRBASE_QUERY+DBICODE_DELFRDEL);
  1459.   DBIERR_EGFLDTYP               = (ERRBASE_QUERY+DBICODE_EGFLDTYP);
  1460.   DBIERR_EXAMINOR               = (ERRBASE_QUERY+DBICODE_EXAMINOR);
  1461.   DBIERR_EXPRTYPS               = (ERRBASE_QUERY+DBICODE_EXPRTYPS);
  1462.   DBIERR_EXTRACOM               = (ERRBASE_QUERY+DBICODE_EXTRACOM);
  1463.   DBIERR_EXTRAORO               = (ERRBASE_QUERY+DBICODE_EXTRAORO);
  1464.   DBIERR_EXTRAQRO               = (ERRBASE_QUERY+DBICODE_EXTRAQRO);
  1465.   DBIERR_FIND1ATT               = (ERRBASE_QUERY+DBICODE_FIND1ATT);
  1466.   DBIERR_FINDANST               = (ERRBASE_QUERY+DBICODE_FINDANST);
  1467.   DBIERR_GRPNOSET               = (ERRBASE_QUERY+DBICODE_GRPNOSET);
  1468.   DBIERR_GRPSTROW               = (ERRBASE_QUERY+DBICODE_GRPSTROW);
  1469.   DBIERR_IDFINLCO               = (ERRBASE_QUERY+DBICODE_IDFINLCO);
  1470.   DBIERR_IDFPERLI               = (ERRBASE_QUERY+DBICODE_IDFPERLI);
  1471.   DBIERR_INANEXPR               = (ERRBASE_QUERY+DBICODE_INANEXPR);
  1472.   DBIERR_INS1TIME               = (ERRBASE_QUERY+DBICODE_INS1TIME);
  1473.   DBIERR_INSAMBIG               = (ERRBASE_QUERY+DBICODE_INSAMBIG);
  1474.   DBIERR_INSDELCH               = (ERRBASE_QUERY+DBICODE_INSDELCH);
  1475.   DBIERR_INSEXPRR               = (ERRBASE_QUERY+DBICODE_INSEXPRR);
  1476.   DBIERR_INSTOINS               = (ERRBASE_QUERY+DBICODE_INSTOINS);
  1477.   DBIERR_ISARRAY                = (ERRBASE_QUERY+DBICODE_ISARRAY);
  1478.   DBIERR_LABELERR               = (ERRBASE_QUERY+DBICODE_LABELERR);
  1479.   DBIERR_LINKCALC               = (ERRBASE_QUERY+DBICODE_LINKCALC);
  1480.   DBIERR_LNGVNAME               = (ERRBASE_QUERY+DBICODE_LNGVNAME);
  1481.   DBIERR_LONGQURY               = (ERRBASE_QUERY+DBICODE_LONGQURY);
  1482.   DBIERR_MEMVPROC               = (ERRBASE_QUERY+DBICODE_MEMVPROC);
  1483.   DBIERR_MISNGCOM               = (ERRBASE_QUERY+DBICODE_MISNGCOM);
  1484.   DBIERR_MISNGRPA               = (ERRBASE_QUERY+DBICODE_MISNGRPA);
  1485.   DBIERR_MISSRTQU               = (ERRBASE_QUERY+DBICODE_MISSRTQU);
  1486.   DBIERR_NAMTWICE               = (ERRBASE_QUERY+DBICODE_NAMTWICE);
  1487.   DBIERR_NOCHKMAR               = (ERRBASE_QUERY+DBICODE_NOCHKMAR);
  1488.   DBIERR_NODEFOCC               = (ERRBASE_QUERY+DBICODE_NODEFOCC);
  1489.   DBIERR_NOGROUPS               = (ERRBASE_QUERY+DBICODE_NOGROUPS);
  1490.   DBIERR_NONSENSE               = (ERRBASE_QUERY+DBICODE_NONSENSE);
  1491.   DBIERR_NOPATTER               = (ERRBASE_QUERY+DBICODE_NOPATTER);
  1492.   DBIERR_NOSUCHDA               = (ERRBASE_QUERY+DBICODE_NOSUCHDA);
  1493.   DBIERR_NOVALUE                = (ERRBASE_QUERY+DBICODE_NOVALUE);
  1494.   DBIERR_ONLYCONS               = (ERRBASE_QUERY+DBICODE_ONLYCONS);
  1495.   DBIERR_ONLYSETR               = (ERRBASE_QUERY+DBICODE_ONLYSETR);
  1496.   DBIERR_OUTSENS1               = (ERRBASE_QUERY+DBICODE_OUTSENS1);
  1497.   DBIERR_OUTTWIC1               = (ERRBASE_QUERY+DBICODE_OUTTWIC1);
  1498.   DBIERR_PAROWCNT               = (ERRBASE_QUERY+DBICODE_PAROWCNT);
  1499.   DBIERR_PERSEPAR               = (ERRBASE_QUERY+DBICODE_PERSEPAR);
  1500.   DBIERR_PROCPLSW               = (ERRBASE_QUERY+DBICODE_PROCPLSW);
  1501.   DBIERR_PWINSRTS               = (ERRBASE_QUERY+DBICODE_PWINSRTS);
  1502.   DBIERR_PWMODRTS               = (ERRBASE_QUERY+DBICODE_PWMODRTS);
  1503.   DBIERR_QBEFLDFOUND            = (ERRBASE_QUERY+DBICODE_QBEFLDFOUND);
  1504.   DBIERR_QBENOFENCE             = (ERRBASE_QUERY+DBICODE_QBENOFENCE);
  1505.   DBIERR_QBENOFENCET            = (ERRBASE_QUERY+DBICODE_QBENOFENCET);
  1506.   DBIERR_QBENOHEADERT           = (ERRBASE_QUERY+DBICODE_QBENOHEADERT);
  1507.   DBIERR_QBENOTAB               = (ERRBASE_QUERY+DBICODE_QBENOTAB);
  1508.   DBIERR_QBENUMCOLS             = (ERRBASE_QUERY+DBICODE_QBENUMCOLS);
  1509.   DBIERR_QBEOPENTAB             = (ERRBASE_QUERY+DBICODE_QBEOPENTAB);
  1510.   DBIERR_QBETWICE               = (ERRBASE_QUERY+DBICODE_QBETWICE);
  1511.   DBIERR_QRYNOANSWER            = (ERRBASE_QUERY+DBICODE_QRYNOANSWER);
  1512.   DBIERR_QRYNOTPREP             = (ERRBASE_QUERY+DBICODE_QRYNOTPREP);
  1513.   DBIERR_QUAINDEL               = (ERRBASE_QUERY+DBICODE_QUAINDEL);
  1514.   DBIERR_QUAININS               = (ERRBASE_QUERY+DBICODE_QUAININS);
  1515.   DBIERR_RAGININS               = (ERRBASE_QUERY+DBICODE_RAGININS);
  1516.   DBIERR_RAGINSET               = (ERRBASE_QUERY+DBICODE_RAGINSET);
  1517.   DBIERR_ROWUSERR               = (ERRBASE_QUERY+DBICODE_ROWUSERR);
  1518.   DBIERR_SETEXPEC               = (ERRBASE_QUERY+DBICODE_SETEXPEC);
  1519.   DBIERR_SETVAMB1               = (ERRBASE_QUERY+DBICODE_SETVAMB1);
  1520.   DBIERR_SETVBAD1               = (ERRBASE_QUERY+DBICODE_SETVBAD1);
  1521.   DBIERR_SETVDEF1               = (ERRBASE_QUERY+DBICODE_SETVDEF1);
  1522.   DBIERR_SUMNUMBE               = (ERRBASE_QUERY+DBICODE_SUMNUMBE);
  1523.   DBIERR_TBLISWP3               = (ERRBASE_QUERY+DBICODE_TBLISWP3);
  1524.   DBIERR_TOKENNOT               = (ERRBASE_QUERY+DBICODE_TOKENNOT);
  1525.   DBIERR_TWOOUTR1               = (ERRBASE_QUERY+DBICODE_TWOOUTR1);
  1526.   DBIERR_TYPEMISM               = (ERRBASE_QUERY+DBICODE_TYPEMISM);
  1527.   DBIERR_UNRELQ1                = (ERRBASE_QUERY+DBICODE_UNRELQ1);
  1528.   DBIERR_UNUSEDST               = (ERRBASE_QUERY+DBICODE_UNUSEDST);
  1529.   DBIERR_USEINSDE               = (ERRBASE_QUERY+DBICODE_USEINSDE);
  1530.   DBIERR_USEOFCHG               = (ERRBASE_QUERY+DBICODE_USEOFCHG);
  1531.   DBIERR_VARMUSTF               = (ERRBASE_QUERY+DBICODE_VARMUSTF);
  1532.   DBIERR_REGISTER               = (ERRBASE_QUERY+DBICODE_REGISTER);
  1533.   DBIERR_LONGEXPR               = (ERRBASE_QUERY+DBICODE_LONGEXPR);
  1534.   DBIERR_REFRESH                = (ERRBASE_QUERY+DBICODE_REFRESH);
  1535.   DBIERR_CANCEXCEPT             = (ERRBASE_QUERY+DBICODE_CANCEXCEPT);
  1536.   DBIERR_DBEXCEPT               = (ERRBASE_QUERY+DBICODE_DBEXCEPT);
  1537.   DBIERR_MEMEXCEPT              = (ERRBASE_QUERY+DBICODE_MEMEXCEPT);
  1538.   DBIERR_FATALEXCEPT            = (ERRBASE_QUERY+DBICODE_FATALEXCEPT);
  1539.   DBIERR_QRYNIY                 = (ERRBASE_QUERY+ DBICODE_QRYNIY);
  1540.   DBIERR_BADFORMAT              = (ERRBASE_QUERY+ DBICODE_BADFORMAT);
  1541.   DBIERR_QRYEMPTY               = (ERRBASE_QUERY+ DBICODE_QRYEMPTY);
  1542.   DBIERR_NOQRYTOPREP            = (ERRBASE_QUERY+ DBICODE_NOQRYTOPREP);
  1543.   DBIERR_BUFFTOOSMALL           = (ERRBASE_QUERY+ DBICODE_BUFFTOOSMALL);
  1544.   DBIERR_QRYNOTPARSE            = (ERRBASE_QUERY+ DBICODE_QRYNOTPARSE);
  1545.   DBIERR_NOTHANDLE              = (ERRBASE_QUERY+ DBICODE_NOTHANDLE);
  1546.   DBIERR_QRYSYNTERR             = (ERRBASE_QUERY+ DBICODE_QRYSYNTERR);
  1547.   DBIERR_QXFLDCOUNT             = (ERRBASE_QUERY+ DBICODE_QXFLDCOUNT);
  1548.   DBIERR_QXFLDSYMNOTFOUND       = (ERRBASE_QUERY+ DBICODE_QXFLDSYMNOTFOUND);
  1549.   DBIERR_QXTBLSYMNOTFOUND       = (ERRBASE_QUERY+ DBICODE_QXTBLSYMNOTFOUND);
  1550.   DBIERR_BLOBTERM               = (ERRBASE_QUERY+ DBICODE_BLOBTERM);
  1551.   DBIERR_BLOBERR                = (ERRBASE_QUERY+ DBICODE_BLOBERR);
  1552.   DBIERR_RESTARTQRY             = (ERRBASE_QUERY+ DBICODE_RESTARTQRY);
  1553.   DBIERR_UNKNOWNANSTYPE         = (ERRBASE_QUERY+ DBICODE_UNKNOWNANSTYPE);
  1554.   DBIERR_SQLG_MDIST             = (ERRBASE_QUERY+ DBICODE_SQLG_MDIST);
  1555.   DBIERR_SQLG_NOARI             = (ERRBASE_QUERY+ DBICODE_SQLG_NOARI);
  1556.   DBIERR_SQLG_LIKEN             = (ERRBASE_QUERY+ DBICODE_SQLG_LIKEN);
  1557.   DBIERR_SQLG_ALPHO             = (ERRBASE_QUERY+ DBICODE_SQLG_ALPHO);
  1558.   DBIERR_SQLG_DATEO             = (ERRBASE_QUERY+ DBICODE_SQLG_DATEO);
  1559.   DBIERR_SQLG_RELOP             = (ERRBASE_QUERY+ DBICODE_SQLG_RELOP);
  1560.   DBIERR_SQLG_ONLYC             = (ERRBASE_QUERY+ DBICODE_SQLG_ONLYC);
  1561.   DBIERR_SQLG_CNTLN             = (ERRBASE_QUERY+ DBICODE_SQLG_CNTLN);
  1562.   DBIERR_SQLG_CHINI             = (ERRBASE_QUERY+ DBICODE_SQLG_CHINI);
  1563.   DBIERR_SQLG_UNION             = (ERRBASE_QUERY+ DBICODE_SQLG_UNION);
  1564.   DBIERR_SQLG_SLFIN             = (ERRBASE_QUERY+ DBICODE_SQLG_SLFIN);
  1565.   DBIERR_SQLG_OTJVR             = (ERRBASE_QUERY+ DBICODE_SQLG_OTJVR);
  1566.   DBIERR_SQLG_STROW             = (ERRBASE_QUERY+ DBICODE_SQLG_STROW);
  1567.   DBIERR_SQLG_QUANT             = (ERRBASE_QUERY+ DBICODE_SQLG_QUANT);
  1568.   DBIERR_SQLG_REGSO             = (ERRBASE_QUERY+ DBICODE_SQLG_REGSO);
  1569.   DBIERR_SQLG_COUNT             = (ERRBASE_QUERY+ DBICODE_SQLG_COUNT);
  1570.   DBIERR_SQLG_AVERA             = (ERRBASE_QUERY+ DBICODE_SQLG_AVERA);
  1571.   DBIERR_SQLG_DATEA             = (ERRBASE_QUERY+ DBICODE_SQLG_DATEA);
  1572.   DBIERR_SQLG_BADPT             = (ERRBASE_QUERY+ DBICODE_SQLG_BADPT);
  1573.   DBIERR_SQLG_RELPA             = (ERRBASE_QUERY+ DBICODE_SQLG_RELPA);
  1574.   DBIERR_SQLG_PATRN             = (ERRBASE_QUERY+ DBICODE_SQLG_PATRN);
  1575.   DBIERR_SQLG_FNDSU             = (ERRBASE_QUERY+ DBICODE_SQLG_FNDSU);
  1576.   DBIERR_SQLG_IFDCS             = (ERRBASE_QUERY+ DBICODE_SQLG_IFDCS);
  1577.   DBIERR_SQLG_IDCCO             = (ERRBASE_QUERY+ DBICODE_SQLG_IDCCO);
  1578.   DBIERR_SQLG_ONLYI             = (ERRBASE_QUERY+ DBICODE_SQLG_ONLYI);
  1579.   DBIERR_SQLG_SQLDIALECT        = (ERRBASE_QUERY+ DBICODE_SQLG_SQLDIALECT);
  1580.   DBIERR_SQLG_NOQUERY           = (ERRBASE_QUERY+ DBICODE_SQLG_NOQUERY);
  1581.   DBIERR_BLOBGROUP              = (ERRBASE_QUERY+ DBICODE_BLOBGROUP);
  1582.   DBIERR_QRYNOPROP              = (ERRBASE_QUERY+DBICODE_QRYNOPROP);
  1583.   DBIERR_ANSTYPNOTSUP           = (ERRBASE_QUERY+DBICODE_ANSTYPNOTSUP);
  1584.   DBIERR_ANSALIASNOTSUP         = (ERRBASE_QUERY+DBICODE_ANSALIASNOTSUP);
  1585.   DBIERR_INSBLOBREQ             = (ERRBASE_QUERY+DBICODE_INSBLOBREQ     ); { 0x9a }
  1586.   DBIERR_CHGUNIQUENDXREQ        = (ERRBASE_QUERY+DBICODE_CHGUNIQUENDXREQ); { 0x9b }
  1587.   DBIERR_DELUNIQUENDXREQ        = (ERRBASE_QUERY+DBICODE_DELUNIQUENDXREQ); { 0x9c }
  1588.   DBIERR_SQLNOFULLUPDATE        = (ERRBASE_QUERY+DBICODE_SQLNOFULLUPDATE); { 0x9d }
  1589.   DBIERR_CANTEXECREMOTE         = (ERRBASE_QUERY+DBICODE_CANTEXECREMOTE); { 0x9e }
  1590.   DBIERR_UNEXPECTEDEOC          = (ERRBASE_QUERY+DBICODE_UNEXPECTEDEOC);
  1591.   DBIERR_SQLPARAMNOTSET         = (ERRBASE_QUERY+DBICODE_SQLPARAMNOTSET);
  1592.   DBIERR_QUERYTOOLONG           = (ERRBASE_QUERY+DBICODE_QUERYTOOLONG);
  1593.   DBIERR_NOSUCHRELORALIAS       = (ERRBASE_QUERY+DBICODE_NOSUCHRELORALIAS);
  1594.   DBIERR_TYPEAMBIGUITY          = (ERRBASE_QUERY+DBICODE_TYPEAMBIGUITY);
  1595.   DBIERR_ORDERBYNOTAPROJ        = (ERRBASE_QUERY+DBICODE_ORDERBYNOTAPROJ);
  1596.   DBIERR_SQLPARSE               = (ERRBASE_QUERY+DBICODE_SQLPARSE);
  1597.   DBIERR_CONSTRAINTFAILED       = (ERRBASE_QUERY+DBICODE_CONSTRAINTFAILED);
  1598.   DBIERR_NOTGROUPINGFIELD       = (ERRBASE_QUERY+DBICODE_NOTGROUPINGFIELD);
  1599.   DBIERR_UDFNOTDEFINED          = (ERRBASE_QUERY+DBICODE_UDFNOTDEFINED);
  1600.   DBIERR_UDFERROR               = (ERRBASE_QUERY+DBICODE_UDFERROR);
  1601.   DBIERR_SINGLEROWERROR         = (ERRBASE_QUERY+DBICODE_SINGLEROWERROR);
  1602.   DBIERR_GROUPEXPR              = (ERRBASE_QUERY+DBICODE_GROUPEXPR);
  1603.   DBIERR_QUERYTEXT              = (ERRBASE_QUERY+DBICODE_QUERYTEXT);
  1604.   DBIERR_ANSIJOINSUP            = (ERRBASE_QUERY+DBICODE_ANSIJOINSUP);
  1605.   DBIERR_DISTUNION              = (ERRBASE_QUERY+DBICODE_DISTUNION);
  1606.   DBIERR_GROUPBYREQ             = (ERRBASE_QUERY+DBICODE_GROUPBYREQ);
  1607.   DBIERR_INSUPDAUTOINC          = (ERRBASE_QUERY+DBICODE_INSUPDAUTOIC);
  1608.   DBIERR_UPDREFINTSINGLE        = (ERRBASE_QUERY+DBICODE_UPDREFINTSINGLE);
  1609.   DBIERR_NOMSACCESS             = (ERRBASE_QUERY+DBICODE_NOMSACCESS);
  1610.   DBIERR_FIELDCONSTPREP         = (ERRBASE_QUERY+DBICODE_FIELDCONSTPREP);
  1611.   DBIERR_FIELDDEFPREP           = (ERRBASE_QUERY+DBICODE_FIELDDEFPREP);
  1612.   DBIERR_RECCONSTPREP           = (ERRBASE_QUERY+DBICODE_RECCONSTPREP);
  1613.   DBIERR_TOOFEWSUBEXPR          = (ERRBASE_QUERY+DBICODE_TOOFEWSUBEXPR);
  1614.   DBIERR_TOOMANYSUBEXPR         = (ERRBASE_QUERY+DBICODE_TOOMANYSUBEXPR);
  1615.   DBIERR_INVALIDNODETYPE        = (ERRBASE_QUERY+DBICODE_INVALIDNODETYPE);
  1616.   DBIERR_BOOLEXPR               = (ERRBASE_QUERY+DBICODE_BOOLEXPR);
  1617.   DBIERR_NONBOOLEXPR            = (ERRBASE_QUERY+DBICODE_NONBOOLEXPR);
  1618.   DBIERR_NOOUTERJOIN            = (ERRBASE_QUERY+DBICODE_NOOUTERJOIN);
  1619.   DBIERR_USERCONSTRERR          = (ERRBASE_QUERY+DBICODE_USERCONSTRERR);
  1620. { END_OF_QUERY_MESSAGES }
  1621. { ERRCAT_VERSION }
  1622. { ============== }
  1623.   ERRCODE_INTERFACEVER          = 1;      { Interface mismatch }
  1624.   ERRCODE_INDEXOUTOFDATE        = 2;      { Index is out of date }
  1625.   ERRCODE_OLDVERSION            = 3;      { Older version (see context) }
  1626.   ERRCODE_VALFILEINVALID        = 4;      { Val. file is out of date }
  1627.   ERRCODE_BLOBVERSION           = 5;      { Old Blob file version }
  1628.   ERRCODE_ENGQRYMISMATCH        = 6;      { Query and IDAPI are mismatched }
  1629.   ERRCODE_SERVERVERSION         = 7;      { Server is incompatible version }
  1630.   ERRCODE_TABLELEVEL            = 8;      { Higher table level required }
  1631.   DBIERR_INTERFACEVER           = (ERRBASE_VERSION + ERRCODE_INTERFACEVER);
  1632.   DBIERR_INDEXOUTOFDATE         = (ERRBASE_VERSION + ERRCODE_INDEXOUTOFDATE);
  1633.   DBIERR_OLDVERSION             = (ERRBASE_VERSION + ERRCODE_OLDVERSION);
  1634.   DBIERR_VALFILEINVALID         = (ERRBASE_VERSION + ERRCODE_VALFILEINVALID);
  1635.   DBIERR_BLOBVERSION            = (ERRBASE_VERSION + ERRCODE_BLOBVERSION);
  1636.   DBIERR_ENGQRYMISMATCH         = (ERRBASE_VERSION + ERRCODE_ENGQRYMISMATCH);
  1637.   DBIERR_SERVERVERSION          = (ERRBASE_VERSION + ERRCODE_SERVERVERSION);
  1638.   DBIERR_TABLELEVEL             = (ERRBASE_VERSION + ERRCODE_TABLELEVEL);
  1639. { ERRCAT_CAPABILITY }
  1640. { ================= }
  1641.   ERRCODE_NOTSUPPORTED          = 1;      { Capability not supported }
  1642.   ERRCODE_NIY                   = 2;      { Not Implemented Yet }
  1643.   ERRCODE_TABLESQL              = 3;      { Cannot access SQL replica }
  1644.   ERRCODE_SEARCHCOLREQD         = 4;      { Searchable (Non-blob column) required }
  1645.   ERRCODE_NOMULTCONNECT         = 5;      { Multiple connections not supported }
  1646.   ERRCODE_NODBASEEXPR           = 6;      { Full dBASE Expressions not supported }
  1647.   ERRCODE_NONESTEDTRAN          = 7;      { Nested transactions not supported }
  1648.   DBIERR_NOTSUPPORTED           = (ERRBASE_CAPABILITY + ERRCODE_NOTSUPPORTED);
  1649.   DBIERR_NIY                    = (ERRBASE_CAPABILITY + ERRCODE_NIY);
  1650.   DBIERR_TABLESQL               = (ERRBASE_CAPABILITY + ERRCODE_TABLESQL);
  1651.   DBIERR_SEARCHCOLREQD          = (ERRBASE_CAPABILITY + ERRCODE_SEARCHCOLREQD);
  1652.   DBIERR_NOMULTCONNECT          = (ERRBASE_CAPABILITY + ERRCODE_NOMULTCONNECT);
  1653.   DBIERR_NODBASEEXPR            = (ERRBASE_CAPABILITY + ERRCODE_NODBASEEXPR);
  1654.   DBIERR_NONESTEDTRAN           = (ERRBASE_CAPABILITY + ERRCODE_NONESTEDTRAN);
  1655. { ERRCAT_CONFIG }
  1656. { ============= }
  1657.   ERRCODE_INVALIDDBSPEC         = 1;
  1658.   ERRCODE_UNKNOWNDBTYPE         = 2;
  1659.   ERRCODE_INVALIDSYSDATA        = 3;
  1660.   ERRCODE_UNKNOWNNETTYPE        = 4;
  1661.   ERRCODE_NOTONTHATNET          = 5;
  1662.   ERRCODE_INVALIDCFGPARAM       = 6;      { Generic invalid config param }
  1663.   DBIERR_INVALIDDBSPEC          = (ERRBASE_CONFIG + ERRCODE_INVALIDDBSPEC);
  1664.   DBIERR_UNKNOWNDBTYPE          = (ERRBASE_CONFIG + ERRCODE_UNKNOWNDBTYPE);
  1665.   DBIERR_INVALIDSYSDATA         = (ERRBASE_CONFIG + ERRCODE_INVALIDSYSDATA);
  1666.   DBIERR_UNKNOWNNETTYPE         = (ERRBASE_CONFIG + ERRCODE_UNKNOWNNETTYPE);
  1667.   DBIERR_NOTONTHATNET           = (ERRBASE_CONFIG + ERRCODE_NOTONTHATNET);
  1668.   DBIERR_INVALIDCFGPARAM        = (ERRBASE_CONFIG + ERRCODE_INVALIDCFGPARAM);
  1669. { ERRCAT_WARNING  non-fatal warnings:               }
  1670. { warn user of action, or ask for optional behavior }
  1671. { ================================================= }
  1672.   ERRCODE_OBJIMPLICITLYDROPPED  = 1;
  1673.   ERRCODE_OBJMAYBETRUNCATED     = 2;
  1674.   ERRCODE_OBJIMPLICITLYMODIFIED = 3;
  1675.   ERRCODE_VALIDATEDATA          = 4;
  1676.   ERRCODE_VALFIELDMODIFIED      = 5;
  1677.   ERRCODE_TABLELEVELCHANGED     = 6;
  1678.   ERRCODE_COPYLINKEDTABLES      = 7;
  1679.   ERRCODE_OTHERSERVERLOADED     = 8;
  1680.   ERRCODE_OBJIMPLICITLYTRUNCATED = 9;
  1681.   ERRCODE_VCHKMAYNOTBEENFORCED  = 10;
  1682.   ERRCODE_MULTIPLEUNIQRECS      = 11;
  1683.   ERRCODE_FIELDMUSTBETRIMMED    = 12;
  1684.   DBIERR_OBJIMPLICITLYDROPPED   = ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYDROPPED);
  1685.   DBIERR_OBJMAYBETRUNCATED      = ( ERRBASE_WARNING + ERRCODE_OBJMAYBETRUNCATED);
  1686.   DBIERR_OBJIMPLICITLYMODIFIED  = ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYMODIFIED);
  1687.   DBIERR_VALIDATEDATA           = ( ERRBASE_WARNING + ERRCODE_VALIDATEDATA);
  1688.   DBIERR_VALFIELDMODIFIED       = ( ERRBASE_WARNING + ERRCODE_VALFIELDMODIFIED);
  1689.   DBIERR_TABLELEVELCHANGED      = ( ERRBASE_WARNING + ERRCODE_TABLELEVELCHANGED);
  1690.   DBIERR_COPYLINKEDTABLES       = ( ERRBASE_WARNING + ERRCODE_COPYLINKEDTABLES);
  1691.   DBIERR_OTHERSERVERLOADED      = ( ERRBASE_WARNING + ERRCODE_OTHERSERVERLOADED);
  1692.   DBIERR_OBJIMPLICITLYTRUNCATED = ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYTRUNCATED);
  1693.   DBIERR_VCHKMAYNOTBEENFORCED   = ( ERRBASE_WARNING + ERRCODE_VCHKMAYNOTBEENFORCED );
  1694.   DBIERR_MULTIPLEUNIQRECS       = ( ERRBASE_WARNING + ERRCODE_MULTIPLEUNIQRECS );
  1695.   DBIERR_FIELDMUSTBETRIMMED     = ( ERRBASE_WARNING + ERRCODE_FIELDMUSTBETRIMMED );
  1696. { ERRCAT_OTHER }
  1697. { ============ }
  1698.   ERRCODE_FILEEXISTS            = 1;      { File already exsits }
  1699.   ERRCODE_BLOBMODIFIED          = 2;      { Another user modified Blob }
  1700.   ERRCODE_UNKNOWNSQL            = 3;      { Unknown SQL error }
  1701.   ERRCODE_TABLEEXISTS           = 4;      { Table already exsits }
  1702.   ERRCODE_PDX10TABLE            = 5;      { Paradox 1.0 tables not supported }
  1703.   ERRCODE_UPDATEABORT           = 6;      { Update operation aborted }
  1704.   DBIERR_FILEEXISTS             = (ERRBASE_OTHER + ERRCODE_FILEEXISTS);
  1705.   DBIERR_BLOBMODIFIED           = (ERRBASE_OTHER + ERRCODE_BLOBMODIFIED);
  1706.   DBIERR_UNKNOWNSQL             = (ERRBASE_OTHER + ERRCODE_UNKNOWNSQL);
  1707.   DBIERR_TABLEEXISTS            = (ERRBASE_OTHER + ERRCODE_TABLEEXISTS);
  1708.   DBIERR_PDX10TABLE             = (ERRBASE_OTHER + ERRCODE_PDX10TABLE);
  1709.   DBIERR_UPDATEABORT            = (ERRBASE_OTHER + ERRCODE_UPDATEABORT);
  1710. { ERRCAT_COMPATIBILITY }
  1711. { ==================== }
  1712.   ERRCODE_DIFFSORTORDER         = 1;      { Sortorders not compatible }
  1713.   ERRCODE_DIRINUSEBYOLDVER      = 2;      { Directory in use by old version }
  1714.   ERRCODE_PDX35LDDRIVER         = 3;      { Needs Pdox 3.5 compatible language driver }
  1715.   DBIERR_DIFFSORTORDER          = (ERRBASE_COMPATIBILITY + ERRCODE_DIFFSORTORDER);
  1716.   DBIERR_DIRINUSEBYOLDVER       = (ERRBASE_COMPATIBILITY + ERRCODE_DIRINUSEBYOLDVER);
  1717.   DBIERR_PDX35LDDRIVER          = (ERRBASE_COMPATIBILITY + ERRCODE_PDX35LDDRIVER);
  1718. { ERRCAT_OPTPARAM }
  1719. { =============== }
  1720.   ERRCODE_REQOPTPARAM           = 1;      { Required optional parameter missing }
  1721.   ERRCODE_INVALIDOPTPARAM       = 2;      { Optional param out-of-range or bad }
  1722.   DBIERR_REQOPTPARAM            = (ERRBASE_OPTPARAM + ERRCODE_REQOPTPARAM);
  1723.   DBIERR_INVALIDOPTPARAM        = (ERRBASE_OPTPARAM + ERRCODE_INVALIDOPTPARAM);
  1724. {  ERRCAT_REPOSITORY }
  1725. {  ================= }
  1726.   ERRCODE_REPOSITORYCORRUPT     = 1;    { Data Repository is corrupt }
  1727.   ERRCODE_INFOBLOBCORRUPT       = 2;    { Info Blob corrupted }
  1728.   ERRCODE_SCHEMACORRUPT         = 3;    { DR Schema is corrupt }
  1729.   ERRCODE_ATTRTYPEEXISTS        = 4;    { Attribute Type exists }
  1730.   ERRCODE_INVALIDOBJTYPE        = 5;    { Invalid Object Type }
  1731.   ERRCODE_INVALIDRELATIONTYPE   = 6;    { Invalid Relation Type }
  1732.   ERRCODE_VIEWEXISTS            = 7;    { View already exists }
  1733.   ERRCODE_NOSUCHVIEW            = 8;    { No such View exists }
  1734.   ERRCODE_INVALIDRECCONSTRAINT  = 9;    { Invalid Record Constraint }
  1735.   ERRCODE_LDBCONNECTION         = 10;   { Object is in a Logical DB }
  1736.   ERRCODE_REPOSITORYEXISTS      = 11;   { Repository already exists }
  1737.   ERRCODE_NOSUCHREPOSITORY      = 12;   { Repository does not exist }
  1738.   ERRCODE_REPOSITORYDBMISSING   = 13;   { Repository database does not exist }
  1739.   ERRCODE_REPOSITORYOUTOFDATE   = 14;   { Repository info is out of date }
  1740.   ERRCODE_REPOSITORYVERSION     = 15;   { DR Version mismatch }
  1741.   ERRCODE_REPOSITORYNAME        = 16;   { Invalid Repository name }
  1742.   ERRCODE_DEPENDENTOBJECTS      = 17;   { Dependent Objects exist }
  1743.   ERRCODE_RELATIONLIMIT         = 18;   { Too many Relationships for this Object Type }
  1744.   ERRCODE_RELATIONSHIPSEXIST    = 19;   { Relationships to the Object exist }
  1745.   ERRCODE_EXCHANGEFILECORRUPT   = 20;   { Exchange File Corrupt }
  1746.   ERRCODE_EXCHANGEFILEVERSION   = 21;   { Exchange File Version Mismatch }
  1747.   ERRCODE_TYPEMISMATCH          = 22;   { Exchange File and Repository Types don't match }
  1748.   ERRCODE_OBJECTEXISTS          = 23;   { Object Exists in the Target Repository }
  1749.   ERRCODE_REPOSITORYACCESS      = 24;   { Access to Repository Denied }
  1750.   ERRCODE_REPOSITORYCREATE      = 25;   { Cannot Create Repository }
  1751.   ERRCODE_DATABASEOPENFAILED    = 26;   { Cannot Open a Database }
  1752.   DBIERR_REPOSITORYCORRUPT      = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYCORRUPT);
  1753.   DBIERR_INFOBLOBCORRUPT        = (ERRBASE_REPOSITORY + ERRCODE_INFOBLOBCORRUPT);
  1754.   DBIERR_SCHEMACORRUPT          = (ERRBASE_REPOSITORY + ERRCODE_SCHEMACORRUPT);
  1755.   DBIERR_ATTRTYPEEXISTS         = (ERRBASE_REPOSITORY + ERRCODE_ATTRTYPEEXISTS);
  1756.   DBIERR_INVALIDOBJTYPE         = (ERRBASE_REPOSITORY + ERRCODE_INVALIDOBJTYPE);
  1757.   DBIERR_INVALIDRELATIONTYPE    = (ERRBASE_REPOSITORY + ERRCODE_INVALIDRELATIONTYPE);
  1758.   DBIERR_VIEWEXISTS             = (ERRBASE_REPOSITORY + ERRCODE_VIEWEXISTS);
  1759.   DBIERR_NOSUCHVIEW             = (ERRBASE_REPOSITORY + ERRCODE_NOSUCHVIEW);
  1760.   DBIERR_INVALIDRECCONSTRAINT   = (ERRBASE_REPOSITORY + ERRCODE_INVALIDRECCONSTRAINT);
  1761.   DBIERR_LDBCONNECTION          = (ERRBASE_REPOSITORY + ERRCODE_LDBCONNECTION);
  1762.   DBIERR_REPOSITORYEXISTS       = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYEXISTS);
  1763.   DBIERR_NOSUCHREPOSITORY       = (ERRBASE_REPOSITORY + ERRCODE_NOSUCHREPOSITORY);
  1764.   DBIERR_REPOSITORYDBMISSING    = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYDBMISSING);
  1765.   DBIERR_REPOSITORYOUTOFDATE    = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYOUTOFDATE);
  1766.   DBIERR_REPOSITORYVERSION      = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYVERSION);
  1767.   DBIERR_REPOSITORYNAME         = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYNAME);
  1768.   DBIERR_DEPENDENTOBJECTS       = (ERRBASE_REPOSITORY + ERRCODE_DEPENDENTOBJECTS);
  1769.   DBIERR_RELATIONLIMIT          = (ERRBASE_REPOSITORY + ERRCODE_RELATIONLIMIT);
  1770.   DBIERR_RELATIONSHIPSEXIST     = (ERRBASE_REPOSITORY + ERRCODE_RELATIONSHIPSEXIST);
  1771.   DBIERR_EXCHANGEFILECORRUPT    = (ERRBASE_REPOSITORY + ERRCODE_EXCHANGEFILECORRUPT);
  1772.   DBIERR_EXCHANGEFILEVERSION    = (ERRBASE_REPOSITORY + ERRCODE_EXCHANGEFILEVERSION);
  1773.   DBIERR_TYPEMISMATCH           = (ERRBASE_REPOSITORY + ERRCODE_TYPEMISMATCH);
  1774.   DBIERR_OBJECTEXISTS           = (ERRBASE_REPOSITORY + ERRCODE_OBJECTEXISTS);
  1775.   DBIERR_REPOSITORYACCESS       = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYACCESS);
  1776.   DBIERR_REPOSITORYCREATE       = (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYCREATE);
  1777.   DBIERR_DATABASEOPENFAILED     = (ERRBASE_REPOSITORY + ERRCODE_DATABASEOPENFAILED);
  1778. {============================================================================}
  1779. {                          DBI prototypes                                    }
  1780. {============================================================================}
  1781. {                          Environmental                                     }
  1782. {----------------------------------------------------------------------------}
  1783. function DbiInitFn (                    { Initialize the Engine }
  1784.       iVer          : Word;             { Interface Version }
  1785.       pEnv          : pDBIEnv           { Environment Structure/NULL }
  1786.    ): DBIResult stdcall;
  1787.  { DO NOT CALL THIS DIRECTLY. Use the 'DbiInit' define below. }
  1788.  { Initializes the engine environment. Default settings can be overwritten  }
  1789.  { by supplying the appropriate settings. Defaults are read from the system }
  1790.  { configuration file. pEnv can be NULLP to get the system defautls.        }
  1791. function DbiInit (pEnv: PDbiEnv): DBIResult stdcall;
  1792. function DbiExit: DBIResult stdcall;            { Exit engine }
  1793. function DbiDLLExit: DBIResult stdcall;         { Exit DLL }
  1794. {============================================================================}
  1795. {                         System Level Info                                  }
  1796. {============================================================================}
  1797. function DbiGetSysVersion (             { Get system version info }
  1798. var   sysVersion    : SYSVersion
  1799.    ): DBIResult stdcall;
  1800. function DbiGetSysConfig (              { System configuration }
  1801. var   sysConfig     : SYSConfig
  1802.    ): DBIResult stdcall;
  1803. function DbiGetClientInfo (             { Get Client info }
  1804. var   clientInfo    : CLIENTInfo
  1805.    ): DBIResult stdcall;
  1806. function DbiGetSysInfo (                { Get system status/info }
  1807. var   sysInfo       : SYSInfo
  1808.    ): DBIResult stdcall;
  1809. function DbiLoadDriver (                { Load a given driver }
  1810.       pszDriverType : PChar             { Driver name }
  1811.    ): DBIResult stdcall;
  1812. {============================================================================}
  1813. {                            Sessions                                        }
  1814. {============================================================================}
  1815. function DbiStartSession (              { Start a new session }
  1816.       pszName       : PChar;            { Name (Optional) }
  1817. var   hSes          : hDBISes;          { Session }
  1818.       pNetDir       : PChar             { Netfile directory for session (opt) }
  1819.    ): DBIResult stdcall;
  1820. function DbiGetCurrSession (            { Get the current session }
  1821. var   hSes          : hDBISes           { Session }
  1822.    ): DBIResult stdcall;
  1823. function DbiSetCurrSession (            { Set the current session }
  1824.       hSes          : hDBISes           { Session/NULL }
  1825.    ): DBIResult stdcall;
  1826. function DbiCloseSession (              { Close the current session }
  1827.       hSes          : hDBISes           { Session }
  1828.    ): DBIResult stdcall;
  1829. function DbiGetSesInfo (                { Get current session info }
  1830. var   sesInfo       : SESInfo
  1831.    ): DBIResult stdcall;
  1832. function DbiSetPrivateDir (             { Set Private Directory for session }
  1833.       pszDir        : PChar             { Directory name/NULL }
  1834.    ): DBIResult stdcall;
  1835. {============================================================================}
  1836. {                     Datababase, Schema and File inquiry                    }
  1837. {============================================================================}
  1838. function DbiOpenDatabase (              { Open a database }
  1839.       pszDbName     : PChar;            { Database name }
  1840.       pszDbType     : PChar;            { Database type (NULL: Universal) }
  1841.       eOpenMode     : DBIOpenMode;      { Open type }
  1842.       eShareMode    : DBIShareMode;     { Share type }
  1843.       pszPassword   : PChar;            { Password }
  1844.       iOptFlds      : Word;             { Number of optional Params }
  1845.       pOptFldDesc   : pFLDDesc;         { Optional Field Descriptors }
  1846.       pOptParams    : Pointer;          { Optional Params }
  1847. var   hDb           : hDBIDb            { Returnd database handle }
  1848.    ): DBIResult stdcall;
  1849. function DbiSetDirectory (              { Set the current directory }
  1850.       hDb           : hDBIDb;           { Universal database handle }
  1851.       pszDir        : PChar             { Directory/NULL }
  1852.    ): DBIResult stdcall;
  1853. function DbiGetDirectory (              { Get the current/default directory }
  1854.       hDb           : hDBIDb;           { Universal database handle }
  1855.       bDefault      : Bool;             { True for default }
  1856.       pszDir        : PChar             { Returned directory }
  1857.    ): DBIResult stdcall;
  1858. function DbiOpenTableList (             { Open a cursor on "Tables" }
  1859.       hDb           : hDBIDb;           { Database handle }
  1860.       bExtended     : Bool;             { True for extended info }
  1861.       bSystem       : Bool;             { True to include system tables }
  1862.       pszWild       : PChar;            { Wild card name }
  1863. var   hCur          : hDBICur           { Returned cursor }
  1864.    ): DBIResult stdcall;
  1865. function DbiOpenFileList (              { Open a cursor on "Files" }
  1866.       hDb           : hDBIDb;           { Universal database handle }
  1867.       pszWild       : PChar;            { Wild card name }
  1868. var   hCur          : hDBICur           { Returned cursor }
  1869.    ): DBIResult stdcall;
  1870. function DbiOpenIndexList (             { Return "Indexes" for a table }
  1871.       hDb           : hDBIDb;           { Database handle }
  1872.       pszTableName  : PChar;            { Table name }
  1873.       pszDriverType : PChar;            { Driver type }
  1874. var   hCur          : hDBICur           { Returned cursor on "Indexes" }
  1875.    ): DBIResult stdcall;
  1876. function DbiOpenFieldList (             { Return "Fields" for a table }
  1877.       hDb           : hDBIDb;           { Database handle }
  1878.       pszTableName  : PChar;            { Table name }
  1879.       pszDriverType : PChar;            { Driver type }
  1880.       bPhyTypes     : Bool;             { True, for physical types }
  1881. var   hCur          : hDBICur           { Returned cursor on "Fields" }
  1882.    ): DBIResult stdcall;
  1883. function DbiOpenVchkList (              { Return "Checks" for a table }
  1884.       hDb           : hDBIDb;           { Database handle }
  1885.       pszTableName  : PChar;            { Table name }
  1886.       pszDriverType : PChar;            { Driver Type }
  1887. var   hChkCur       : hDBICur           { Returned cursor on "Checks" }
  1888.    ): DBIResult stdcall;
  1889. function DbiOpenRintList (              { Return Integrity checks }
  1890.       hDb           : hDBIDb;           { Database handle }
  1891.       pszTableName  : PChar;            { Table name }
  1892.       pszDriverType : PChar;            { Driver type }
  1893. var   hChkCur       : hDBICur           { Returned cursor on "Ref Int". }
  1894.    ): DBIResult stdcall;
  1895. function DbiOpenSecurityList (          { Return security descriptions }
  1896.       hDb           : hDBIDb;           { Database handle }
  1897.       pszTableName  : PChar;            { Table name }
  1898.       pszDriverType : PChar;            { Driver type }
  1899. var   hSecCur       : hDBICur           { Returned cursor on sec list }
  1900.    ): DBIResult stdcall;
  1901. function DbiOpenFamilyList (            { Return family members }
  1902.       hDb           : hDBIDb;           { Database handle }
  1903.       pszTableName  : PChar;            { Table name }
  1904.       pszDriverType : PChar;            { Driver type }
  1905. var   hFmlCur       : hDBICur           { Returned cursor on "Family" }
  1906.    ): DBIResult stdcall;
  1907. function DbiOpenSPList (                { Open a cursor on "Stored Procedures" }
  1908.       hDb           : hDBIDb;           { Universal database handle }
  1909.       bExtended     : Bool;             { True for extended info (N/A) }
  1910.       bSystem       : Bool;             { True to include system procedures }
  1911.       pszQual       : PChar;            { Qualifier (N/A) }
  1912. var   hCur          : hDBICur           { Returned cursor }
  1913.    ): DBIResult stdcall;
  1914. function DbiOpenSPParamList (           { Return "Parameters" for a stored procedure }
  1915.       hDb           : hDBIDb;           { Database handle }
  1916.       pszSPName     : PChar;            { Stored procedure name }
  1917.       bPhyTypes     : Bool;             { True, for physical types }
  1918.       uOverload     : Word;             { Overload number }
  1919. var   hCur          : hDBICur           { Returned cursor on "Parameters" }
  1920.    ): DBIResult stdcall;
  1921. function DbiOpenFunctionList (          { Open a cursor on "Functions" }
  1922.       hDb           : hDBIDb;           { Universal database handle }
  1923.       eoptBits      : DBIFUNCOpts;      { Options for function list }
  1924.       phCur         : phDBICur          { Returned cursor on "Functions" }
  1925.                                         { Record desc is of type DBIFUNCDesc }
  1926.    ): DBIResult stdcall;
  1927. function DbiOpenFunctionArgList (       { Return "Arguments" for a function }
  1928.       hDb           : hDBIDb;           { Database handle }
  1929.       pszFuncName   : PChar;            { Function name }
  1930.       uOverload     : Word;             { Overload number }
  1931.       phCur         : phDBICur          { Returned cursor on "Arguments" }
  1932.    ): DBIResult stdcall;
  1933. function DbiCloseDatabase (             { Close a database }
  1934. var   hDb           : hDBIDb            { Pointer to database handle }
  1935.    ): DBIResult stdcall;
  1936. {============================================================================}
  1937. {                                  Capabilities                              }
  1938. {============================================================================}
  1939. function DbiOpenDriverList (            { Get a list of driver names }
  1940. var   hCur          : hDBICur           { Returned cursor }
  1941.    ): DBIResult stdcall;
  1942. function DbiGetDriverDesc (             { Get description for a given type }
  1943.       pszDriverType : PChar;            { Symbolic name for driver type }
  1944. var   drvType       : DRVType           { Driver type description }
  1945.    ): DBIResult stdcall;
  1946. function DbiOpenDatabaseList (          { Get a list of registered databases }
  1947. var   hCur          : hDBICur           { Returned cursor }
  1948.    ): DBIResult stdcall;
  1949. function DbiGetDatabaseDesc (           { Get a description of a logical db }
  1950.       pszName       : PChar;            { Name of logical database }
  1951.       pdbDesc       : pDBDesc           { Database description }
  1952.    ): DBIResult stdcall;
  1953. function DbiOpenTableTypesList (        { Get a list of table types }
  1954.       pszDriverType : PChar;            { Driver type }
  1955. var   hCur          : hDBICur           { Returned cursor }
  1956.    ): DBIResult stdcall;
  1957. function DbiGetTableTypeDesc (          { Get Table capabilities }
  1958.       pszDriverType : PChar;            { Driver type }
  1959.       pszTableType  : PChar;            { Table type }
  1960. var   tblType       : TBLType           { Table Capabilities }
  1961.    ): DBIResult stdcall;
  1962. function DbiOpenFieldTypesList (        { Get a list of field types }
  1963.       pszDriverType : PChar;            { Driver type }
  1964.       pszTblType    : PChar;            { Table type (Optional) }
  1965. var   hCur          : hDBICur           { Returned cursor }
  1966.    ): DBIResult stdcall;
  1967. function DbiGetFieldTypeDesc (          { Get list of field types }
  1968.       pszDriverType : PChar;            { Driver type }
  1969.       pszTableType  : PChar;            { Table type }
  1970.       pszFieldType  : PChar;            { Field type  (Physical only) }
  1971. var   fldType       : FLDType           { Field type description }
  1972.    ): DBIResult stdcall;
  1973. function DbiOpenIndexTypesList (        { Get list of index types }
  1974.       pszDriverType : PChar;            { Driver type }
  1975. var   hCur          : hDBICur           { Returned cursor }
  1976.    ): DBIResult stdcall;
  1977. function DbiGetIndexTypeDesc (          { Get description of given idx type }
  1978.       pszDriverType : PChar;            { Driver type }
  1979.       pszIndexType  : PChar;            { Index type }
  1980. var   idxType       : IDXType           { Index description }
  1981.    ): DBIResult stdcall;
  1982. function DbiOpenLdList (                { Get a list of Lang Drivers }
  1983. var   hCur          : hDBICur           { Returned cursor }
  1984.    ): DBIResult stdcall;
  1985. {===========================================================================}
  1986. {                      Table Open, Properties & Structure                   }
  1987. {===========================================================================}
  1988. function DbiOpenTable (                 { Open a table }
  1989.       hDb           : hDBIDb;           { Database handle }
  1990.       pszTableName  : PChar;            { Table name or file name }
  1991.       pszDriverType : PChar;            { Driver type                 /NULL }
  1992.       pszIndexName  : PChar;            { Index to be used for access /NULL }
  1993.       pszIndexTagName : PChar;          { Index tag name              /NULL }
  1994.       iIndexId      : Word;             { Index number                /0 }
  1995.       eOpenMode     : DBIOpenMode;      { Read or RW }
  1996.       eShareMode    : DBIShareMode;     { Excl or Share }
  1997.       exltMode      : XLTMode;          { Xlate mode }
  1998.       bUniDirectional : Bool;           { Uni or Bi directional }
  1999.       pOptParams    : Pointer;          { Optional params /NULL }
  2000. var   hCursor       : hDBICur           { Returns Cursor handle }
  2001.    ): DBIResult stdcall;
  2002. function DbiOpenNestedTable(            { Get nested table }
  2003.       hCursor       : hDBICur;          { Master cursor }
  2004.       iFieldNo      : Word;             { FieldID of nested table field }
  2005.       bReadOnly     : Bool;             { if TRUE, read only mode }
  2006.       bUniDirectional: Bool;            { if TRUE, unidirectional }
  2007. var   hCursorNested : hDBICur           { Returns Cursor handle for nested table }
  2008.    ): DBIResult; stdcall;
  2009. function DbiOpenRef(
  2010.       hCursor       : hDBICur;          { Master cursor }
  2011.       iFieldNo      : Word;             { FieldID }
  2012.       bReadOnly     : Bool;             { if TRUE, read only mode }
  2013.       bUniDirectional: Bool;            { If TRUE, Uni directional }
  2014. var   hRefCursor    : hDBICur           { Returns Cursor handle for REF }
  2015.    ): DBIResult; stdcall;
  2016. function DbiDatabaseFlush(
  2017.       hDb              : hDBIDb         { database handle }
  2018. ): DBIResult;
  2019. function DbiGetCursorProps (            { Get Cursor properties }
  2020.       hCursor       : hDBICur;          { Cursor handle }
  2021. var   curProps      : CURProps          { Cursor properties }
  2022.    ): DBIResult stdcall;
  2023. function DbiGetObjFromName (            { Get object from name }
  2024.       eObjType      : DBIOBJType;       { Object handle }
  2025.       pszObjName    : PChar;            { Name of object /NULL }
  2026. var   hObj          : hDBIObj           { Returned object handle }
  2027.    ): DBIResult stdcall;
  2028. function DbiGetObjFromObj (             { Get associated object }
  2029.       hObj          : hDBIObj;          { Object handle }
  2030.       eObjType      : DBIOBJType;       { Type of associated object }
  2031. var   hObjOut       : hDBIObj           { Returns object of eObjType }
  2032.    ): DBIResult stdcall;
  2033. function DbiGetProp (                   { Get property }
  2034.       hObj          : hDBIObj;          { Object handle }
  2035.       iProp         : Longint;          { Property to retrieve }
  2036.       PropValue     : Pointer;          { == NULL, validate iProp for getting }
  2037.       iMaxLen       : Word;             { Length of buffer pPropValue }
  2038. var   iLen          : Word              { Returns required length }
  2039.    ): DBIResult stdcall;
  2040. function DbiSetProp (                   { Set property }
  2041.       hObj          : hDBIObj;          { Object handle }
  2042.       iProp         : Longint;          { Property to set }
  2043.       iPropValue    : Longint           { Property value }
  2044.    ): DBIResult stdcall;
  2045. function DbiValidateProp (              { Validate a property }
  2046.       hObj          : hDBIObj;          { Object handle }
  2047.       iProp         : Longint;          { property to validate }
  2048.       bSetting      : Bool              { TRUE:setting, FALSE:getting }
  2049.    ): DBIResult stdcall;
  2050. function DbiGetFieldDescs (             { Get field descriptions }
  2051.       hCursor       : hDBICur;          { Cursor handle }
  2052.       pfldDesc      : pFLDDesc          { Array of field descriptors }
  2053.    ): DBIResult stdcall;
  2054. function DbiGetCursorForTable (         { Find cursor for a given table }
  2055.       hDb           : hDBIDb;           { Database handle }
  2056.       pszTableName  : PChar;            { Table name }
  2057.       pszDriverType : PChar;            { Driver type / NULL }
  2058. var   hCursor       : hDBICur           { Returned cursor }
  2059.    ): DBIResult stdcall;
  2060. function DbiCloneCursor (               { Return a duplicate cursor }
  2061.       hCurSrc       : hDBICur;          { Source cursor }
  2062.       bReadOnly     : Bool;             { If TRUE, read only mode }
  2063.       bUniDirectional : Bool;           { If TRUE, Uni directional }
  2064. var   hCurNew       : hDBICur           { Destination cursor address }
  2065.    ): DBIResult stdcall;
  2066. function DbiCloseCursor (               { Closes cursor }
  2067. var   hCursor       : hDBICur           { Pntr to Cursor handle }
  2068.    ): DBIResult stdcall;
  2069. {============================================================================}
  2070. {                      Index Manipulation & Usage                            }
  2071. {============================================================================}
  2072. function DbiOpenIndex (                 { Open an index }
  2073.       hCursor       : hDBICur;          { Cursor handle }
  2074.       pszIndexName  : PChar;            { Index Name }
  2075.       iIndexId      : Word              { Index number (if applicable) }
  2076.    ): DBIResult stdcall;
  2077. function DbiCloseIndex (                { Close an index }
  2078.       hCursor       : hDBICur;          { Cursor handle }
  2079.       pszIndexName  : PChar;            { Index Name }
  2080.       iIndexId      : Word              { Index number }
  2081.    ): DBIResult stdcall;
  2082. function DbiSwitchToIndex (             { Change index order of access }
  2083. var   hCursor       : hDBICur;          { Cursor handle (In/Out) }
  2084.       pszIndexName  : PChar;            { Index name }