home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / DBDAOINT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  42.1 KB  |  1,025 lines

  1. /************************************************************************ 
  2. **    D B D A O I N T. H                                                    *
  3. **                                                                        *
  4. ************************************************************************* 
  5. ** Copyright (C) 1995 by Microsoft Corporation                             *
  6. **           All Rights Reserved                                             *
  7. ************************************************************************/ 
  8. /*
  9.  DBDAOINT.H
  10.  OLE DAO Interface.  
  11. This is a part of the Microsoft Data Access Objects SDK library.
  12. See the dao*.hlp files for detailed information regarding the
  13. Microsoft Data Access Objects SDK product.
  14.  
  15. */
  16. #ifndef _DBDAOINT_H_
  17. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  18. #define _DBDAOINT_H_
  19.  
  20. #ifndef _INC_TCHAR
  21. #include <tchar.h>
  22. #endif
  23.  
  24. // Constants
  25.  
  26. typedef enum RecordsetTypeEnum {
  27.     dbOpenTable = 1,
  28.     dbOpenDynaset = 2,
  29.     dbOpenSnapshot = 4,
  30.     dbOpenForwardOnly = 8,
  31.     dbOpenDynamic = 16
  32. } RecordsetTypeEnum;
  33.  
  34. typedef enum EditModeEnum {
  35.     dbEditNone = 0,
  36.     dbEditInProgress = 1,
  37.     dbEditAdd = 2,
  38.     dbEditChanged = 4,
  39.     dbEditDeleted = 8,
  40.     dbEditNew = 16
  41. } EditModeEnum;
  42.  
  43. typedef enum RecordsetOptionEnum {
  44.     dbDenyWrite = 1,
  45.     dbDenyRead = 2,
  46.     dbReadOnly = 4,
  47.     dbAppendOnly = 8,
  48.     dbInconsistent = 16,
  49.     dbConsistent = 32,
  50.     dbSQLPassThrough = 64,
  51.     dbFailOnError = 128,
  52.     dbForwardOnly = 256,
  53.     dbSeeChanges = 512,
  54.     dbRunAsync = 1024,
  55.     dbExecDirect = 2048
  56. } RecordsetOptionEnum;
  57.  
  58. typedef enum LockTypeEnum {
  59.     dbPessimistic = 2,
  60.     dbOptimistic = 3,
  61.     dbOptimisticValue = 1,
  62.     dbOptimisticBatch = 5
  63. } LockTypeEnum;
  64.  
  65. typedef enum UpdateCriteriaEnum {
  66.     dbCriteriaKey = 1,
  67.     dbCriteriaModValues = 2,
  68.     dbCriteriaAllCols = 4,
  69.     dbCriteriaTimestamp = 8,
  70.     dbCriteriaDeleteInsert = 16,
  71.     dbCriteriaUpdate = 32
  72. } UpdateCriteriaEnum;
  73.  
  74. typedef enum FieldAttributeEnum {
  75.     dbFixedField = 1,
  76.     dbVariableField = 2,
  77.     dbAutoIncrField = 16,
  78.     dbUpdatableField = 32,
  79.     dbSystemField = 8192,
  80.     dbHyperlinkField = 32768,
  81.     dbDescending = 1
  82. } FieldAttributeEnum;
  83.  
  84. typedef enum DataTypeEnum {
  85.     dbBoolean = 1,
  86.     dbByte = 2,
  87.     dbInteger = 3,
  88.     dbLong = 4,
  89.     dbCurrency = 5,
  90.     dbSingle = 6,
  91.     dbDouble = 7,
  92.     dbDate = 8,
  93.     dbBinary = 9,
  94.     dbText = 10,
  95.     dbLongBinary = 11,
  96.     dbMemo = 12,
  97.     dbGUID = 15,
  98.     dbBigInt = 16,
  99.     dbVarBinary = 17,
  100.     dbChar = 18,
  101.     dbNumeric = 19,
  102.     dbDecimal = 20,
  103.     dbFloat = 21,
  104.     dbTime = 22,
  105.     dbTimeStamp = 23
  106. } DataTypeEnum;
  107.  
  108. typedef enum RelationAttributeEnum {
  109.     dbRelationUnique = 1,
  110.     dbRelationDontEnforce = 2,
  111.     dbRelationInherited = 4,
  112.     dbRelationUpdateCascade = 256,
  113.     dbRelationDeleteCascade = 4096,
  114.     dbRelationLeft = 16777216,
  115.     dbRelationRight = 33554432
  116. } RelationAttributeEnum;
  117.  
  118. typedef enum TableDefAttributeEnum {
  119.     dbAttachExclusive = 65536,
  120.     dbAttachSavePWD = 131072,
  121.     dbSystemObject = -2147483646,
  122.     dbAttachedTable = 1073741824,
  123.     dbAttachedODBC = 536870912,
  124.     dbHiddenObject = 1
  125. } TableDefAttributeEnum;
  126.  
  127. typedef enum QueryDefTypeEnum {
  128.     dbQSelect = 0,
  129.     dbQProcedure = 224,
  130.     dbQAction = 240,
  131.     dbQCrosstab = 16,
  132.     dbQDelete = 32,
  133.     dbQUpdate = 48,
  134.     dbQAppend = 64,
  135.     dbQMakeTable = 80,
  136.     dbQDDL = 96,
  137.     dbQSQLPassThrough = 112,
  138.     dbQSetOperation = 128,
  139.     dbQSPTBulk = 144,
  140.     dbQCompound = 160
  141. } QueryDefTypeEnum;
  142.  
  143. typedef enum QueryDefStateEnum {
  144.     dbQPrepare = 1,
  145.     dbQUnprepare = 2
  146. } QueryDefStateEnum;
  147.  
  148. typedef enum DatabaseTypeEnum {
  149.     dbVersion10 = 1,
  150.     dbEncrypt = 2,
  151.     dbDecrypt = 4,
  152.     dbVersion11 = 8,
  153.     dbVersion20 = 16,
  154.     dbVersion30 = 32
  155. } DatabaseTypeEnum;
  156.  
  157. typedef enum CollatingOrderEnum {
  158.     dbSortNeutral = 1024,
  159.     dbSortArabic = 1025,
  160.     dbSortCyrillic = 1049,
  161.     dbSortCzech = 1029,
  162.     dbSortDutch = 1043,
  163.     dbSortGeneral = 1033,
  164.     dbSortGreek = 1032,
  165.     dbSortHebrew = 1037,
  166.     dbSortHungarian = 1038,
  167.     dbSortIcelandic = 1039,
  168.     dbSortNorwdan = 1030,
  169.     dbSortPDXIntl = 1033,
  170.     dbSortPDXNor = 1030,
  171.     dbSortPDXSwe = 1053,
  172.     dbSortPolish = 1045,
  173.     dbSortSpanish = 1034,
  174.     dbSortSwedFin = 1053,
  175.     dbSortTurkish = 1055,
  176.     dbSortJapanese = 1041,
  177.     dbSortChineseSimplified = 2052,
  178.     dbSortChineseTraditional = 1028,
  179.     dbSortKorean = 1042,
  180.     dbSortThai = 1054,
  181.     dbSortSlovenian = 1060,
  182.     dbSortUndefined = -1
  183. } CollatingOrderEnum;
  184.  
  185. typedef enum IdleEnum {
  186.     dbFreeLocks = 1,
  187.     dbRefreshCache = 8
  188. } IdleEnum;
  189.  
  190. typedef enum PermissionEnum {
  191.     dbSecNoAccess = 0,
  192.     dbSecFullAccess = 1048575,
  193.     dbSecDelete = 65536,
  194.     dbSecReadSec = 131072,
  195.     dbSecWriteSec = 262144,
  196.     dbSecWriteOwner = 524288,
  197.     dbSecDBCreate = 1,
  198.     dbSecDBOpen = 2,
  199.     dbSecDBExclusive = 4,
  200.     dbSecDBAdmin = 8,
  201.     dbSecCreate = 1,
  202.     dbSecReadDef = 4,
  203.     dbSecWriteDef = 65548,
  204.     dbSecRetrieveData = 20,
  205.     dbSecInsertData = 32,
  206.     dbSecReplaceData = 64,
  207.     dbSecDeleteData = 128
  208. } PermissionEnum;
  209.  
  210. typedef enum SynchronizeTypeEnum {
  211.     dbRepExportChanges = 1,
  212.     dbRepImportChanges = 2,
  213.     dbRepImpExpChanges = 4,
  214.     dbRepSyncInternet = 16
  215. } SynchronizeTypeEnum;
  216.  
  217. typedef enum ReplicaTypeEnum {
  218.     dbRepMakeReadOnly = 2,
  219.     dbRepMakePartial = 1
  220. } ReplicaTypeEnum;
  221.  
  222. typedef enum WorkspaceTypeEnum {
  223.     dbUseODBC = 1,
  224.     dbUseJet = 2
  225. } WorkspaceTypeEnum;
  226.  
  227. typedef enum CursorDriverEnum {
  228.     dbUseDefaultCursor = -1,
  229.     dbUseODBCCursor = 1,
  230.     dbUseServerCursor = 2,
  231.     dbUseClientBatchCursor = 3,
  232.     dbUseNoCursor = 4
  233. } CursorDriverEnum;
  234.  
  235. typedef enum DriverPromptEnum {
  236.     dbDriverPrompt = 2,
  237.     dbDriverNoPrompt = 1,
  238.     dbDriverComplete = 0,
  239.     dbDriverCompleteRequired = 3
  240. } DriverPromptEnum;
  241.  
  242. typedef enum SetOptionEnum {
  243.     dbPageTimeout = 6,
  244.     dbLockRetry = 57,
  245.     dbMaxBufferSize = 8,
  246.     dbUserCommitSync = 58,
  247.     dbImplicitCommitSync = 59,
  248.     dbExclusiveAsyncDelay = 60,
  249.     dbSharedAsyncDelay = 61,
  250.     dbMaxLocksPerFile = 62,
  251.     dbLockDelay = 63,
  252.     dbRecycleLVs = 65,
  253.     dbFlushTransactionTimeout = 66
  254. } SetOptionEnum;
  255.  
  256. typedef enum ParameterDirectionEnum {
  257.     dbParamInput = 1,
  258.     dbParamOutput = 2,
  259.     dbParamInputOutput = 3,
  260.     dbParamReturnValue = 4
  261. } ParameterDirectionEnum;
  262.  
  263. typedef enum UpdateTypeEnum {
  264.     dbUpdateBatch = 4,
  265.     dbUpdateRegular = 1,
  266.     dbUpdateCurrentRecord = 2
  267. } UpdateTypeEnum;
  268.  
  269. typedef enum RecordStatusEnum {
  270.     dbRecordUnmodified = 0,
  271.     dbRecordModified = 1,
  272.     dbRecordNew = 2,
  273.     dbRecordDeleted = 3,
  274.     dbRecordDBDeleted = 4
  275. } RecordStatusEnum;
  276.  
  277. typedef enum CommitTransOptionsEnum {
  278.     dbForceOSFlush = 1
  279. } CommitTransOptionsEnum;
  280.  
  281. typedef enum _DAOSuppHelp {
  282.     LogMessages = 0,
  283.     KeepLocal = 0,
  284.     Replicable = 0,
  285.     ReplicableBool = 0,
  286.     V1xNullBehavior = 0
  287. } _DAOSuppHelp;
  288.  
  289.  
  290.  
  291.  
  292.     const TCHAR dbLangArabic[] = _T(";LANGID=0x0401;CP=1256;COUNTRY=0";);
  293.     const TCHAR dbLangCzech[] = _T(";LANGID=0x0405;CP=1250;COUNTRY=0";);
  294.     const TCHAR dbLangDutch[] = _T(";LANGID=0x0413;CP=1252;COUNTRY=0";);
  295.     const TCHAR dbLangGeneral[] = _T(";LANGID=0x0409;CP=1252;COUNTRY=0";);
  296.     const TCHAR dbLangGreek[] = _T(";LANGID=0x0408;CP=1253;COUNTRY=0";);
  297.     const TCHAR dbLangHebrew[] = _T(";LANGID=0x040D;CP=1255;COUNTRY=0";);
  298.     const TCHAR dbLangHungarian[] = _T(";LANGID=0x040E;CP=1250;COUNTRY=0";);
  299.     const TCHAR dbLangIcelandic[] = _T(";LANGID=0x040F;CP=1252;COUNTRY=0";);
  300.     const TCHAR dbLangNordic[] = _T(";LANGID=0x041D;CP=1252;COUNTRY=0";);
  301.     const TCHAR dbLangNorwDan[] = _T(";LANGID=0x0414;CP=1252;COUNTRY=0";);
  302.     const TCHAR dbLangPolish[] = _T(";LANGID=0x0415;CP=1250;COUNTRY=0";);
  303.     const TCHAR dbLangCyrillic[] = _T(";LANGID=0x0419;CP=1251;COUNTRY=0";);
  304.     const TCHAR dbLangSpanish[] = _T(";LANGID=0x040A;CP=1252;COUNTRY=0";);
  305.     const TCHAR dbLangSwedFin[] = _T(";LANGID=0x040B;CP=1252;COUNTRY=0";);
  306.     const TCHAR dbLangTurkish[] = _T(";LANGID=0x041F;CP=1254;COUNTRY=0";);
  307.     const TCHAR dbLangJapanese[] = _T(";LANGID=0x0411;CP=932;COUNTRY=0";);
  308.     const TCHAR dbLangChineseSimplified[] = _T(";LANGID=0x0804;CP=936;COUNTRY=0";);
  309.     const TCHAR dbLangChineseTraditional[] = _T(";LANGID=0x0404;CP=950;COUNTRY=0";);
  310.     const TCHAR dbLangKorean[] = _T(";LANGID=0x0412;CP=949;COUNTRY=0";);
  311.     const TCHAR dbLangThai[] = _T(";LANGID=0x041E;CP=874;COUNTRY=0";);
  312.     const TCHAR dbLangSlovenian[] = _T(";LANGID=0x0424;CP=1250;COUNTRY=0";);
  313. // Forwards
  314. #define DAODBEngine _DAODBEngine
  315. interface _DAODBEngine;
  316. interface DAOError;
  317. interface DAOErrors;
  318. interface DAOProperty;
  319. interface DAOProperties;
  320. interface DAOWorkspace;
  321. interface DAOWorkspaces;
  322. interface DAOConnection;
  323. interface DAOConnections;
  324. interface DAODatabase;
  325. interface DAODatabases;
  326. #define DAOTableDef _DAOTableDef
  327. interface _DAOTableDef;
  328. interface DAOTableDefs;
  329. #define DAOQueryDef _DAOQueryDef
  330. interface _DAOQueryDef;
  331. interface DAOQueryDefs;
  332. interface DAORecordset;
  333. interface DAORecordsets;
  334. #define DAOField _DAOField
  335. interface _DAOField;
  336. interface DAOFields;
  337. #define DAOIndex _DAOIndex
  338. interface _DAOIndex;
  339. interface DAOIndexes;
  340. interface DAOParameter;
  341. interface DAOParameters;
  342. #define DAOUser _DAOUser
  343. interface _DAOUser;
  344. interface DAOUsers;
  345. #define DAOGroup _DAOGroup
  346. interface _DAOGroup;
  347. interface DAOGroups;
  348. #define DAORelation _DAORelation
  349. interface _DAORelation;
  350. interface DAORelations;
  351. interface DAOContainer;
  352. interface DAOContainers;
  353. interface DAODocument;
  354. interface DAODocuments;
  355.  
  356.  
  357. // Interface: _DAOCollection
  358. #undef INTERFACE
  359. #define INTERFACE _DAOCollection
  360. DECLARE_INTERFACE_(_DAOCollection, IDispatch)
  361.     {
  362.     STDMETHOD(get_Count)                         (THIS_ short FAR* c) PURE;
  363.     STDMETHOD(_NewEnum)                             (THIS_ IUnknown * FAR* ppunk) PURE;
  364.     STDMETHOD(Refresh)                             (THIS) PURE;
  365.     };
  366.  
  367. // Interface: _DAODynaCollection
  368. #undef INTERFACE
  369. #define INTERFACE _DAODynaCollection
  370. DECLARE_INTERFACE_(_DAODynaCollection, _DAOCollection)
  371.     {
  372.     STDMETHOD(Append)                             (THIS_ IDispatch * Object) PURE;
  373.     STDMETHOD(Delete)                             (THIS_ BSTR Name) PURE;
  374.     };
  375.  
  376. // Interface: _DAO
  377. #undef INTERFACE
  378. #define INTERFACE _DAO
  379. DECLARE_INTERFACE_(_DAO, IDispatch)
  380.     {
  381.     STDMETHOD(get_Properties)                     (THIS_ DAOProperties FAR* FAR* ppprops) PURE;
  382.     };
  383.  
  384. // Interface: _DAODBEngine
  385. #undef INTERFACE
  386. #define INTERFACE _DAODBEngine
  387. DECLARE_INTERFACE_(_DAODBEngine, _DAO)
  388.     {
  389.     STDMETHOD(get_Version)                         (THIS_ BSTR FAR* pbstr) PURE;
  390.     STDMETHOD(get_IniPath)                         (THIS_ BSTR FAR* pbstr) PURE;
  391.     STDMETHOD(put_IniPath)                         (THIS_ BSTR path) PURE;
  392.     STDMETHOD(put_DefaultUser)                     (THIS_ BSTR user) PURE;
  393.     STDMETHOD(put_DefaultPassword)                 (THIS_ BSTR pw) PURE;
  394.     STDMETHOD(get_LoginTimeout)                     (THIS_ short FAR* ps) PURE;
  395.     STDMETHOD(put_LoginTimeout)                     (THIS_ short Timeout) PURE;
  396.     STDMETHOD(get_Workspaces)                     (THIS_ DAOWorkspaces FAR* FAR* ppworks) PURE;
  397.     STDMETHOD(get_Errors)                         (THIS_ DAOErrors FAR* FAR* pperrs) PURE;
  398.     STDMETHOD(Idle)                                 (THIS_ VARIANT Action) PURE;
  399.     STDMETHOD(CompactDatabase)                     (THIS_ BSTR SrcName, BSTR DstName, VARIANT DstLocale, VARIANT Options, VARIANT SrcLocale) PURE;
  400.     STDMETHOD(RepairDatabase)                     (THIS_ BSTR Name) PURE;
  401.     STDMETHOD(RegisterDatabase)                     (THIS_ BSTR Dsn, BSTR Driver, VARIANT_BOOL Silent, BSTR Attributes) PURE;
  402.     STDMETHOD(_30_CreateWorkspace)                 (THIS_ BSTR Name, BSTR UserName, BSTR Password, DAOWorkspace FAR* FAR* ppwrk) PURE;
  403.     STDMETHOD(OpenDatabase)                         (THIS_ BSTR Name, VARIANT Options, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
  404.     STDMETHOD(CreateDatabase)                     (THIS_ BSTR Name, BSTR Locale, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
  405.     STDMETHOD(FreeLocks)                         (THIS) PURE;
  406.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  407.     STDMETHOD(CommitTrans)                         (THIS_ long Option) PURE;
  408.     STDMETHOD(Rollback)                             (THIS) PURE;
  409.     STDMETHOD(SetDefaultWorkspace)                 (THIS_ BSTR Name, BSTR Password) PURE;
  410.     STDMETHOD(SetDataAccessOption)                 (THIS_ short Option, VARIANT Value) PURE;
  411.     STDMETHOD(ISAMStats)                         (THIS_ long StatNum, VARIANT Reset, long FAR* pl) PURE;
  412.     STDMETHOD(get_SystemDB)                         (THIS_ BSTR FAR* pbstr) PURE;
  413.     STDMETHOD(put_SystemDB)                         (THIS_ BSTR SystemDBPath) PURE;
  414.     STDMETHOD(CreateWorkspace)                     (THIS_ BSTR Name, BSTR UserName, BSTR Password, VARIANT UseType, DAOWorkspace FAR* FAR* ppwrk) PURE;
  415.     STDMETHOD(OpenConnection)                     (THIS_ BSTR Name, VARIANT Options, VARIANT ReadOnly, VARIANT Connect, DAOConnection FAR* FAR* ppconn) PURE;
  416.     STDMETHOD(get_DefaultType)                     (THIS_ long FAR* Option) PURE;
  417.     STDMETHOD(put_DefaultType)                     (THIS_ long Option) PURE;
  418.     STDMETHOD(SetOption)                         (THIS_ long Option, VARIANT Value) PURE;
  419.     };
  420.  
  421. // Interface: DAOError
  422. #undef INTERFACE
  423. #define INTERFACE DAOError
  424. DECLARE_INTERFACE_(DAOError, IDispatch)
  425.     {
  426.     STDMETHOD(get_Number)                         (THIS_ long FAR* pl) PURE;
  427.     STDMETHOD(get_Source)                         (THIS_ BSTR FAR* pbstr) PURE;
  428.     STDMETHOD(get_Description)                     (THIS_ BSTR FAR* pbstr) PURE;
  429.     STDMETHOD(get_HelpFile)                         (THIS_ BSTR FAR* pbstr) PURE;
  430.     STDMETHOD(get_HelpContext)                     (THIS_ long FAR* pl) PURE;
  431.     };
  432.  
  433. // Interface: DAOErrors
  434. #undef INTERFACE
  435. #define INTERFACE DAOErrors
  436. DECLARE_INTERFACE_(DAOErrors, _DAOCollection)
  437.     {
  438.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOError FAR* FAR* pperr) PURE;
  439.     };
  440.  
  441. // Interface: DAOWorkspace
  442. #undef INTERFACE
  443. #define INTERFACE DAOWorkspace
  444. DECLARE_INTERFACE_(DAOWorkspace, _DAO)
  445.     {
  446.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  447.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  448.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  449.     STDMETHOD(put__30_UserName)                     (THIS_ BSTR UserName) PURE;
  450.     STDMETHOD(put__30_Password)                     (THIS_ BSTR Password) PURE;
  451.     STDMETHOD(get_IsolateODBCTrans)                 (THIS_ short FAR* ps) PURE;
  452.     STDMETHOD(put_IsolateODBCTrans)                 (THIS_ short s) PURE;
  453.     STDMETHOD(get_Databases)                     (THIS_ DAODatabases FAR* FAR* ppdbs) PURE;
  454.     STDMETHOD(get_Users)                         (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
  455.     STDMETHOD(get_Groups)                         (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
  456.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  457.     STDMETHOD(CommitTrans)                         (THIS_ long Options) PURE;
  458.     STDMETHOD(Close)                             (THIS) PURE;
  459.     STDMETHOD(Rollback)                             (THIS) PURE;
  460.     STDMETHOD(OpenDatabase)                         (THIS_ BSTR Name, VARIANT Options, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
  461.     STDMETHOD(CreateDatabase)                     (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
  462.     STDMETHOD(CreateUser)                         (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
  463.     STDMETHOD(CreateGroup)                         (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
  464.     STDMETHOD(OpenConnection)                     (THIS_ BSTR Name, VARIANT Options, VARIANT ReadOnly, VARIANT Connect, DAOConnection FAR* FAR* ppconn) PURE;
  465.     STDMETHOD(get_LoginTimeout)                     (THIS_ long FAR* pTimeout) PURE;
  466.     STDMETHOD(put_LoginTimeout)                     (THIS_ long Timeout) PURE;
  467.     STDMETHOD(get_DefaultCursorDriver)             (THIS_ long FAR* pCursorType) PURE;
  468.     STDMETHOD(put_DefaultCursorDriver)             (THIS_ long CursorType) PURE;
  469.     STDMETHOD(get_hEnv)                             (THIS_ long FAR* phEnv) PURE;
  470.     STDMETHOD(get_Type)                             (THIS_ long FAR* ptype) PURE;
  471.     STDMETHOD(get_Connections)                     (THIS_ DAOConnections FAR* FAR* ppcns) PURE;
  472.     };
  473.  
  474. // Interface: DAOWorkspaces
  475. #undef INTERFACE
  476. #define INTERFACE DAOWorkspaces
  477. DECLARE_INTERFACE_(DAOWorkspaces, _DAODynaCollection)
  478.     {
  479.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOWorkspace FAR* FAR* ppwrk) PURE;
  480.     };
  481.  
  482. // Interface: _DAOTableDef
  483. #undef INTERFACE
  484. #define INTERFACE _DAOTableDef
  485. DECLARE_INTERFACE_(_DAOTableDef, _DAO)
  486.     {
  487.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  488.     STDMETHOD(put_Attributes)                     (THIS_ long Attributes) PURE;
  489.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  490.     STDMETHOD(put_Connect)                         (THIS_ BSTR Connection) PURE;
  491.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  492.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  493.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  494.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  495.     STDMETHOD(get_SourceTableName)                 (THIS_ BSTR FAR* pbstr) PURE;
  496.     STDMETHOD(put_SourceTableName)                 (THIS_ BSTR bstr) PURE;
  497.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  498.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  499.     STDMETHOD(put_ValidationText)                 (THIS_ BSTR bstr) PURE;
  500.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  501.     STDMETHOD(put_ValidationRule)                 (THIS_ BSTR bstr) PURE;
  502.     STDMETHOD(get_RecordCount)                     (THIS_ long FAR* pl) PURE;
  503.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  504.     STDMETHOD(get_Indexes)                         (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
  505.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  506.     STDMETHOD(RefreshLink)                         (THIS) PURE;
  507.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  508.     STDMETHOD(CreateIndex)                         (THIS_ VARIANT Name, DAOIndex FAR* FAR* ppidx) PURE;
  509.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  510.     STDMETHOD(get_ConflictTable)                 (THIS_ BSTR FAR* pbstr) PURE;
  511.     STDMETHOD(get_ReplicaFilter)                 (THIS_ VARIANT FAR* pFilter) PURE;
  512.     STDMETHOD(put_ReplicaFilter)                 (THIS_ VARIANT Filter) PURE;
  513.     };
  514.  
  515. // Interface: DAOTableDefs
  516. #undef INTERFACE
  517. #define INTERFACE DAOTableDefs
  518. DECLARE_INTERFACE_(DAOTableDefs, _DAODynaCollection)
  519.     {
  520.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOTableDef FAR* FAR* pptdf) PURE;
  521.     };
  522.  
  523. // Interface: DAODatabase
  524. #undef INTERFACE
  525. #define INTERFACE DAODatabase
  526. DECLARE_INTERFACE_(DAODatabase, _DAO)
  527.     {
  528.     STDMETHOD(get_CollatingOrder)                 (THIS_ long FAR* pl) PURE;
  529.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  530.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  531.     STDMETHOD(get_QueryTimeout)                     (THIS_ short FAR* ps) PURE;
  532.     STDMETHOD(put_QueryTimeout)                     (THIS_ short Timeout) PURE;
  533.     STDMETHOD(get_Transactions)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  534.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  535.     STDMETHOD(get_Version)                         (THIS_ BSTR FAR* pbstr) PURE;
  536.     STDMETHOD(get_RecordsAffected)                 (THIS_ long FAR* pl) PURE;
  537.     STDMETHOD(get_TableDefs)                     (THIS_ DAOTableDefs FAR* FAR* pptdfs) PURE;
  538.     STDMETHOD(get_QueryDefs)                     (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
  539.     STDMETHOD(get_Relations)                     (THIS_ DAORelations FAR* FAR* pprls) PURE;
  540.     STDMETHOD(get_Containers)                     (THIS_ DAOContainers FAR* FAR* ppctns) PURE;
  541.     STDMETHOD(get_Recordsets)                     (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
  542.     STDMETHOD(Close)                             (THIS) PURE;
  543.     STDMETHOD(Execute)                             (THIS_ BSTR Query, VARIANT Options) PURE;
  544.     STDMETHOD(_30_OpenRecordset)                 (THIS_ BSTR Name, VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  545.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  546.     STDMETHOD(CreateRelation)                     (THIS_ VARIANT Name, VARIANT Table, VARIANT ForeignTable, VARIANT Attributes, DAORelation FAR* FAR* pprel) PURE;
  547.     STDMETHOD(CreateTableDef)                     (THIS_ VARIANT Name, VARIANT Attributes, VARIANT SourceTablename, VARIANT Connect, DAOTableDef FAR* FAR* pptdf) PURE;
  548.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  549.     STDMETHOD(CommitTrans)                         (THIS_ long Options) PURE;
  550.     STDMETHOD(Rollback)                             (THIS) PURE;
  551.     STDMETHOD(CreateDynaset)                     (THIS_ BSTR Name, VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  552.     STDMETHOD(CreateQueryDef)                     (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
  553.     STDMETHOD(CreateSnapshot)                     (THIS_ BSTR Source, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  554.     STDMETHOD(DeleteQueryDef)                     (THIS_ BSTR Name) PURE;
  555.     STDMETHOD(ExecuteSQL)                         (THIS_ BSTR SQL, long FAR* pl) PURE;
  556.     STDMETHOD(ListFields)                         (THIS_ BSTR Name, DAORecordset FAR* FAR* pprst) PURE;
  557.     STDMETHOD(ListTables)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  558.     STDMETHOD(OpenQueryDef)                         (THIS_ BSTR Name, DAOQueryDef FAR* FAR* ppqdf) PURE;
  559.     STDMETHOD(OpenTable)                         (THIS_ BSTR Name, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  560.     STDMETHOD(get_ReplicaID)                     (THIS_ BSTR FAR* pbstr) PURE;
  561.     STDMETHOD(get_DesignMasterID)                 (THIS_ BSTR FAR* pbstr) PURE;
  562.     STDMETHOD(put_DesignMasterID)                 (THIS_ BSTR MasterID) PURE;
  563.     STDMETHOD(Synchronize)                         (THIS_ BSTR DbPathName, VARIANT ExchangeType) PURE;
  564.     STDMETHOD(MakeReplica)                         (THIS_ BSTR PathName, BSTR Description, VARIANT Options) PURE;
  565.     STDMETHOD(put_Connect)                         (THIS_ BSTR ODBCConnnect) PURE;
  566.     STDMETHOD(NewPassword)                         (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
  567.     STDMETHOD(OpenRecordset)                     (THIS_ BSTR Name, VARIANT Type, VARIANT Options, VARIANT LockEdit, DAORecordset FAR* FAR* pprst) PURE;
  568.     STDMETHOD(get_Connection)                     (THIS_ DAOConnection FAR* FAR* ppCn) PURE;
  569.     STDMETHOD(PopulatePartial)                     (THIS_ BSTR DbPathName) PURE;
  570.     };
  571.  
  572. // Interface: DAODatabases
  573. #undef INTERFACE
  574. #define INTERFACE DAODatabases
  575. DECLARE_INTERFACE_(DAODatabases, _DAOCollection)
  576.     {
  577.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAODatabase FAR* FAR* ppdb) PURE;
  578.     };
  579.  
  580. // Interface: _DAOQueryDef
  581. #undef INTERFACE
  582. #define INTERFACE _DAOQueryDef
  583. DECLARE_INTERFACE_(_DAOQueryDef, _DAO)
  584.     {
  585.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  586.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  587.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  588.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  589.     STDMETHOD(get_ODBCTimeout)                     (THIS_ short FAR* ps) PURE;
  590.     STDMETHOD(put_ODBCTimeout)                     (THIS_ short timeout) PURE;
  591.     STDMETHOD(get_Type)                             (THIS_ short FAR* pi) PURE;
  592.     STDMETHOD(get_SQL)                             (THIS_ BSTR FAR* pbstr) PURE;
  593.     STDMETHOD(put_SQL)                             (THIS_ BSTR bstr) PURE;
  594.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  595.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  596.     STDMETHOD(put_Connect)                         (THIS_ BSTR bstr) PURE;
  597.     STDMETHOD(get_ReturnsRecords)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  598.     STDMETHOD(put_ReturnsRecords)                 (THIS_ VARIANT_BOOL f) PURE;
  599.     STDMETHOD(get_RecordsAffected)                 (THIS_ long FAR* pl) PURE;
  600.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  601.     STDMETHOD(get_Parameters)                     (THIS_ DAOParameters FAR* FAR* ppprms) PURE;
  602.     STDMETHOD(Close)                             (THIS) PURE;
  603.     STDMETHOD(_30_OpenRecordset)                 (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  604.     STDMETHOD(_30__OpenRecordset)                 (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  605.     STDMETHOD(_Copy)                             (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
  606.     STDMETHOD(Execute)                             (THIS_ VARIANT Options) PURE;
  607.     STDMETHOD(Compare)                             (THIS_ DAOQueryDef FAR* pQdef, short FAR* lps) PURE;
  608.     STDMETHOD(CreateDynaset)                     (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  609.     STDMETHOD(CreateSnapshot)                     (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  610.     STDMETHOD(ListParameters)                     (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  611.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  612.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, VARIANT LockEdit, DAORecordset FAR* FAR* pprst) PURE;
  613.     STDMETHOD(_OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, VARIANT LockEdit, DAORecordset FAR* FAR* pprst) PURE;
  614.     STDMETHOD(Cancel)                             (THIS) PURE;
  615.     STDMETHOD(get_hStmt)                         (THIS_ long FAR* phStmt) PURE;
  616.     STDMETHOD(get_MaxRecords)                     (THIS_ long FAR* pMxRecs) PURE;
  617.     STDMETHOD(put_MaxRecords)                     (THIS_ long MxRecs) PURE;
  618.     STDMETHOD(get_StillExecuting)                 (THIS_ VARIANT_BOOL FAR* pStillExec) PURE;
  619.     STDMETHOD(get_CacheSize)                     (THIS_ long FAR* lCacheSize) PURE;
  620.     STDMETHOD(put_CacheSize)                     (THIS_ long lCacheSize) PURE;
  621.     STDMETHOD(get_Prepare)                         (THIS_ VARIANT FAR* pb) PURE;
  622.     STDMETHOD(put_Prepare)                         (THIS_ VARIANT f) PURE;
  623.     };
  624.  
  625. // Interface: DAOQueryDefs
  626. #undef INTERFACE
  627. #define INTERFACE DAOQueryDefs
  628. DECLARE_INTERFACE_(DAOQueryDefs, _DAODynaCollection)
  629.     {
  630.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOQueryDef FAR* FAR* ppqdef) PURE;
  631.     };
  632.  
  633. // Interface: DAORecordset
  634. #undef INTERFACE
  635. #define INTERFACE DAORecordset
  636. DECLARE_INTERFACE_(DAORecordset, _DAO)
  637.     {
  638.     STDMETHOD(get_BOF)                             (THIS_ VARIANT_BOOL FAR* pb) PURE;
  639.     STDMETHOD(get_Bookmark)                         (THIS_ SAFEARRAY FAR* FAR* ppsach) PURE;
  640.     STDMETHOD(put_Bookmark)                         (THIS_ SAFEARRAY FAR* FAR* psach) PURE;
  641.     STDMETHOD(get_Bookmarkable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  642.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  643.     STDMETHOD(get_EOF)                             (THIS_ VARIANT_BOOL FAR* pb) PURE;
  644.     STDMETHOD(get_Filter)                         (THIS_ BSTR FAR* pbstr) PURE;
  645.     STDMETHOD(put_Filter)                         (THIS_ BSTR Filter) PURE;
  646.     STDMETHOD(get_Index)                         (THIS_ BSTR FAR* pbstr) PURE;
  647.     STDMETHOD(put_Index)                         (THIS_ BSTR bstr) PURE;
  648.     STDMETHOD(get_LastModified)                     (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
  649.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  650.     STDMETHOD(get_LockEdits)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  651.     STDMETHOD(put_LockEdits)                     (THIS_ VARIANT_BOOL Lock) PURE;
  652.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  653.     STDMETHOD(get_NoMatch)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  654.     STDMETHOD(get_Sort)                             (THIS_ BSTR FAR* pbstr) PURE;
  655.     STDMETHOD(put_Sort)                             (THIS_ BSTR Sort) PURE;
  656.     STDMETHOD(get_Transactions)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  657.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  658.     STDMETHOD(get_RecordCount)                     (THIS_ long FAR* pl) PURE;
  659.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  660.     STDMETHOD(get_Restartable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  661.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  662.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  663.     STDMETHOD(get_CacheStart)                     (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
  664.     STDMETHOD(put_CacheStart)                     (THIS_ SAFEARRAY FAR* FAR* psa) PURE;
  665.     STDMETHOD(get_CacheSize)                     (THIS_ long FAR* pl) PURE;
  666.     STDMETHOD(put_CacheSize)                     (THIS_ long CacheSize) PURE;
  667.     STDMETHOD(get_PercentPosition)                 (THIS_ float FAR* pd) PURE;
  668.     STDMETHOD(put_PercentPosition)                 (THIS_ float Position) PURE;
  669.     STDMETHOD(get_AbsolutePosition)                 (THIS_ long FAR* pl) PURE;
  670.     STDMETHOD(put_AbsolutePosition)                 (THIS_ long Position) PURE;
  671.     STDMETHOD(get_EditMode)                         (THIS_ short FAR* pi) PURE;
  672.     STDMETHOD(get_ODBCFetchCount)                 (THIS_ long FAR* pl) PURE;
  673.     STDMETHOD(get_ODBCFetchDelay)                 (THIS_ long FAR* pl) PURE;
  674.     STDMETHOD(get_Parent)                         (THIS_ DAODatabase FAR* FAR* pdb) PURE;
  675.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  676.     STDMETHOD(get_Indexes)                         (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
  677.     STDMETHOD(_30_CancelUpdate)                     (THIS) PURE;
  678.     STDMETHOD(AddNew)                             (THIS) PURE;
  679.     STDMETHOD(Close)                             (THIS) PURE;
  680.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  681.     STDMETHOD(Delete)                             (THIS) PURE;
  682.     STDMETHOD(Edit)                                 (THIS) PURE;
  683.     STDMETHOD(FindFirst)                         (THIS_ BSTR Criteria) PURE;
  684.     STDMETHOD(FindLast)                             (THIS_ BSTR Criteria) PURE;
  685.     STDMETHOD(FindNext)                             (THIS_ BSTR Criteria) PURE;
  686.     STDMETHOD(FindPrevious)                         (THIS_ BSTR Criteria) PURE;
  687.     STDMETHOD(MoveFirst)                         (THIS) PURE;
  688.     STDMETHOD(_30_MoveLast)                         (THIS) PURE;
  689.     STDMETHOD(MoveNext)                             (THIS) PURE;
  690.     STDMETHOD(MovePrevious)                         (THIS) PURE;
  691.     STDMETHOD(Seek)                                 (THIS_ BSTR Comparison, VARIANT Key1, VARIANT Key2, VARIANT Key3, VARIANT Key4, VARIANT Key5, VARIANT Key6, VARIANT Key7, VARIANT Key8, VARIANT Key9, VARIANT Key10, VARIANT Key11, VARIANT Key12, VARIANT Key13) PURE;
  692.     STDMETHOD(_30_Update)                         (THIS) PURE;
  693.     STDMETHOD(Clone)                             (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  694.     STDMETHOD(Requery)                             (THIS_ VARIANT NewQueryDef) PURE;
  695.     STDMETHOD(Move)                                 (THIS_ long Rows, VARIANT StartBookmark) PURE;
  696.     STDMETHOD(FillCache)                         (THIS_ VARIANT Rows, VARIANT StartBookmark) PURE;
  697.     STDMETHOD(CreateDynaset)                     (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  698.     STDMETHOD(CreateSnapshot)                     (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  699.     STDMETHOD(CopyQueryDef)                         (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
  700.     STDMETHOD(ListFields)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  701.     STDMETHOD(ListIndexes)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  702.     STDMETHOD(GetRows)                             (THIS_ VARIANT NumRows, VARIANT FAR* pvar) PURE;
  703.     STDMETHOD(get_Collect)                         (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
  704.     STDMETHOD(put_Collect)                         (THIS_ VARIANT index, VARIANT value) PURE;
  705.     STDMETHOD(Cancel)                             (THIS) PURE;
  706.     STDMETHOD(NextRecordset)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  707.     STDMETHOD(get_hStmt)                         (THIS_ long FAR* phStmt) PURE;
  708.     STDMETHOD(get_StillExecuting)                 (THIS_ VARIANT_BOOL FAR* pStillExec) PURE;
  709.     STDMETHOD(get_BatchSize)                     (THIS_ long FAR* pl) PURE;
  710.     STDMETHOD(put_BatchSize)                     (THIS_ long BatchSize) PURE;
  711.     STDMETHOD(get_BatchCollisionCount)             (THIS_ long FAR* pl) PURE;
  712.     STDMETHOD(get_BatchCollisions)                 (THIS_ VARIANT FAR* pvar) PURE;
  713.     STDMETHOD(get_Connection)                     (THIS_ DAOConnection FAR* FAR* ppCn) PURE;
  714.     STDMETHOD(putref_Connection)                 (THIS_ DAOConnection FAR* pNewCn) PURE;
  715.     STDMETHOD(get_RecordStatus)                     (THIS_ short FAR* pi) PURE;
  716.     STDMETHOD(get_UpdateOptions)                 (THIS_ long FAR* pl) PURE;
  717.     STDMETHOD(put_UpdateOptions)                 (THIS_ long l) PURE;
  718.     STDMETHOD(CancelUpdate)                         (THIS_ long UpdateType) PURE;
  719.     STDMETHOD(Update)                             (THIS_ long UpdateType, VARIANT_BOOL Force) PURE;
  720.     STDMETHOD(MoveLast)                             (THIS_ long Options) PURE;
  721.     };
  722.  
  723. // Interface: DAORecordsets
  724. #undef INTERFACE
  725. #define INTERFACE DAORecordsets
  726. DECLARE_INTERFACE_(DAORecordsets, _DAOCollection)
  727.     {
  728.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAORecordset FAR* FAR* pprst) PURE;
  729.     };
  730.  
  731. // Interface: _DAOField
  732. #undef INTERFACE
  733. #define INTERFACE _DAOField
  734. DECLARE_INTERFACE_(_DAOField, _DAO)
  735.     {
  736.     STDMETHOD(get_CollatingOrder)                 (THIS_ long FAR* pl) PURE;
  737.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  738.     STDMETHOD(put_Type)                             (THIS_ short Type) PURE;
  739.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  740.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  741.     STDMETHOD(get_Size)                             (THIS_ long FAR* pl) PURE;
  742.     STDMETHOD(put_Size)                             (THIS_ long Size) PURE;
  743.     STDMETHOD(get_SourceField)                     (THIS_ BSTR FAR* pbstr) PURE;
  744.     STDMETHOD(get_SourceTable)                     (THIS_ BSTR FAR* pbstr) PURE;
  745.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pvar) PURE;
  746.     STDMETHOD(put_Value)                         (THIS_ VARIANT Val) PURE;
  747.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  748.     STDMETHOD(put_Attributes)                     (THIS_ long Attr) PURE;
  749.     STDMETHOD(get_OrdinalPosition)                 (THIS_ short FAR* ps) PURE;
  750.     STDMETHOD(put_OrdinalPosition)                 (THIS_ short Pos) PURE;
  751.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  752.     STDMETHOD(put_ValidationText)                 (THIS_ BSTR bstr) PURE;
  753.     STDMETHOD(get_ValidateOnSet)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  754.     STDMETHOD(put_ValidateOnSet)                 (THIS_ VARIANT_BOOL Validate) PURE;
  755.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  756.     STDMETHOD(put_ValidationRule)                 (THIS_ BSTR bstr) PURE;
  757.     STDMETHOD(get_DefaultValue)                     (THIS_ VARIANT FAR* pvar) PURE;
  758.     STDMETHOD(put_DefaultValue)                     (THIS_ VARIANT var) PURE;
  759.     STDMETHOD(get_Required)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  760.     STDMETHOD(put_Required)                         (THIS_ VARIANT_BOOL fReq) PURE;
  761.     STDMETHOD(get_AllowZeroLength)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  762.     STDMETHOD(put_AllowZeroLength)                 (THIS_ VARIANT_BOOL fAllow) PURE;
  763.     STDMETHOD(get_DataUpdatable)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  764.     STDMETHOD(get_ForeignName)                     (THIS_ BSTR FAR* pbstr) PURE;
  765.     STDMETHOD(put_ForeignName)                     (THIS_ BSTR bstr) PURE;
  766.     STDMETHOD(AppendChunk)                         (THIS_ VARIANT Val) PURE;
  767.     STDMETHOD(GetChunk)                             (THIS_ long Offset, long Bytes, VARIANT FAR* pvar) PURE;
  768.     STDMETHOD(_30_FieldSize)                     (THIS_ long FAR* pl) PURE;
  769.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  770.     STDMETHOD(get_CollectionIndex)                 (THIS_ short FAR* i) PURE;
  771.     STDMETHOD(get_OriginalValue)                 (THIS_ VARIANT FAR* pvar) PURE;
  772.     STDMETHOD(get_VisibleValue)                     (THIS_ VARIANT FAR* pvar) PURE;
  773.     STDMETHOD(get_FieldSize)                     (THIS_ long FAR* pl) PURE;
  774.     };
  775.  
  776. // Interface: DAOFields
  777. #undef INTERFACE
  778. #define INTERFACE DAOFields
  779. DECLARE_INTERFACE_(DAOFields, _DAODynaCollection)
  780.     {
  781.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOField FAR* FAR* ppfld) PURE;
  782.     };
  783.  
  784. // Interface: _DAOIndex
  785. #undef INTERFACE
  786. #define INTERFACE _DAOIndex
  787. DECLARE_INTERFACE_(_DAOIndex, _DAO)
  788.     {
  789.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  790.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  791.     STDMETHOD(get_Foreign)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  792.     STDMETHOD(get_Unique)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  793.     STDMETHOD(put_Unique)                         (THIS_ VARIANT_BOOL fUnique) PURE;
  794.     STDMETHOD(get_Clustered)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  795.     STDMETHOD(put_Clustered)                     (THIS_ VARIANT_BOOL fClustered) PURE;
  796.     STDMETHOD(get_Required)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  797.     STDMETHOD(put_Required)                         (THIS_ VARIANT_BOOL fRequired) PURE;
  798.     STDMETHOD(get_IgnoreNulls)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  799.     STDMETHOD(put_IgnoreNulls)                     (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
  800.     STDMETHOD(get_Primary)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  801.     STDMETHOD(put_Primary)                         (THIS_ VARIANT_BOOL fPrimary) PURE;
  802.     STDMETHOD(get_DistinctCount)                 (THIS_ long FAR* pl) PURE;
  803.     STDMETHOD(get_Fields)                         (THIS_ VARIANT FAR* pv) PURE;
  804.     STDMETHOD(put_Fields)                         (THIS_ VARIANT v) PURE;
  805.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  806.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  807.     };
  808.  
  809. // Interface: DAOIndexes
  810. #undef INTERFACE
  811. #define INTERFACE DAOIndexes
  812. DECLARE_INTERFACE_(DAOIndexes, _DAODynaCollection)
  813.     {
  814.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOIndex FAR* FAR* ppidx) PURE;
  815.     };
  816.  
  817. // Interface: DAOIndexFields
  818. #undef INTERFACE
  819. #define INTERFACE DAOIndexFields
  820. DECLARE_INTERFACE_(DAOIndexFields, _DAODynaCollection)
  821.     {
  822.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
  823.     };
  824.  
  825. // Interface: DAOParameter
  826. #undef INTERFACE
  827. #define INTERFACE DAOParameter
  828. DECLARE_INTERFACE_(DAOParameter, _DAO)
  829.     {
  830.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  831.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pvar) PURE;
  832.     STDMETHOD(put_Value)                         (THIS_ VARIANT val) PURE;
  833.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  834.     STDMETHOD(put_Type)                             (THIS_ short s) PURE;
  835.     STDMETHOD(get_Direction)                     (THIS_ short FAR* pOption) PURE;
  836.     STDMETHOD(put_Direction)                     (THIS_ short Option) PURE;
  837.     };
  838.  
  839. // Interface: DAOParameters
  840. #undef INTERFACE
  841. #define INTERFACE DAOParameters
  842. DECLARE_INTERFACE_(DAOParameters, _DAOCollection)
  843.     {
  844.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOParameter FAR* FAR* ppprm) PURE;
  845.     };
  846.  
  847. // Interface: _DAOUser
  848. #undef INTERFACE
  849. #define INTERFACE _DAOUser
  850. DECLARE_INTERFACE_(_DAOUser, _DAO)
  851.     {
  852.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  853.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  854.     STDMETHOD(put_PID)                             (THIS_ BSTR bstr) PURE;
  855.     STDMETHOD(put_Password)                         (THIS_ BSTR bstr) PURE;
  856.     STDMETHOD(get_Groups)                         (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
  857.     STDMETHOD(NewPassword)                         (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
  858.     STDMETHOD(CreateGroup)                         (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
  859.     };
  860.  
  861. // Interface: DAOUsers
  862. #undef INTERFACE
  863. #define INTERFACE DAOUsers
  864. DECLARE_INTERFACE_(DAOUsers, _DAODynaCollection)
  865.     {
  866.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOUser FAR* FAR* ppusr) PURE;
  867.     };
  868.  
  869. // Interface: _DAOGroup
  870. #undef INTERFACE
  871. #define INTERFACE _DAOGroup
  872. DECLARE_INTERFACE_(_DAOGroup, _DAO)
  873.     {
  874.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  875.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  876.     STDMETHOD(put_PID)                             (THIS_ BSTR bstr) PURE;
  877.     STDMETHOD(get_Users)                         (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
  878.     STDMETHOD(CreateUser)                         (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
  879.     };
  880.  
  881. // Interface: DAOGroups
  882. #undef INTERFACE
  883. #define INTERFACE DAOGroups
  884. DECLARE_INTERFACE_(DAOGroups, _DAODynaCollection)
  885.     {
  886.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOGroup FAR* FAR* ppgrp) PURE;
  887.     };
  888.  
  889. // Interface: _DAORelation
  890. #undef INTERFACE
  891. #define INTERFACE _DAORelation
  892. DECLARE_INTERFACE_(_DAORelation, _DAO)
  893.     {
  894.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  895.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  896.     STDMETHOD(get_Table)                         (THIS_ BSTR FAR* pbstr) PURE;
  897.     STDMETHOD(put_Table)                         (THIS_ BSTR bstr) PURE;
  898.     STDMETHOD(get_ForeignTable)                     (THIS_ BSTR FAR* pbstr) PURE;
  899.     STDMETHOD(put_ForeignTable)                     (THIS_ BSTR bstr) PURE;
  900.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  901.     STDMETHOD(put_Attributes)                     (THIS_ long attr) PURE;
  902.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  903.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  904.     STDMETHOD(get_PartialReplica)                 (THIS_ VARIANT_BOOL FAR* pfPartialReplica) PURE;
  905.     STDMETHOD(put_PartialReplica)                 (THIS_ VARIANT_BOOL fPartialReplica) PURE;
  906.     };
  907.  
  908. // Interface: DAORelations
  909. #undef INTERFACE
  910. #define INTERFACE DAORelations
  911. DECLARE_INTERFACE_(DAORelations, _DAODynaCollection)
  912.     {
  913.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAORelation FAR* FAR* pprel) PURE;
  914.     };
  915.  
  916. // Interface: DAOProperty
  917. #undef INTERFACE
  918. #define INTERFACE DAOProperty
  919. DECLARE_INTERFACE_(DAOProperty, _DAO)
  920.     {
  921.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pval) PURE;
  922.     STDMETHOD(put_Value)                         (THIS_ VARIANT val) PURE;
  923.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  924.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  925.     STDMETHOD(get_Type)                             (THIS_ short FAR* ptype) PURE;
  926.     STDMETHOD(put_Type)                             (THIS_ short type) PURE;
  927.     STDMETHOD(get_Inherited)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  928.     };
  929.  
  930. // Interface: DAOProperties
  931. #undef INTERFACE
  932. #define INTERFACE DAOProperties
  933. DECLARE_INTERFACE_(DAOProperties, _DAODynaCollection)
  934.     {
  935.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOProperty FAR* FAR* ppprop) PURE;
  936.     };
  937.  
  938. // Interface: DAOContainer
  939. #undef INTERFACE
  940. #define INTERFACE DAOContainer
  941. DECLARE_INTERFACE_(DAOContainer, _DAO)
  942.     {
  943.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  944.     STDMETHOD(get_Owner)                         (THIS_ BSTR FAR* pbstr) PURE;
  945.     STDMETHOD(put_Owner)                         (THIS_ BSTR bstr) PURE;
  946.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  947.     STDMETHOD(put_UserName)                         (THIS_ BSTR bstr) PURE;
  948.     STDMETHOD(get_Permissions)                     (THIS_ long FAR* pl) PURE;
  949.     STDMETHOD(put_Permissions)                     (THIS_ long permissions) PURE;
  950.     STDMETHOD(get_Inherit)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  951.     STDMETHOD(put_Inherit)                         (THIS_ VARIANT_BOOL fInherit) PURE;
  952.     STDMETHOD(get_Documents)                     (THIS_ DAODocuments FAR* FAR* ppdocs) PURE;
  953.     STDMETHOD(get_AllPermissions)                 (THIS_ long FAR* pl) PURE;
  954.     };
  955.  
  956. // Interface: DAOContainers
  957. #undef INTERFACE
  958. #define INTERFACE DAOContainers
  959. DECLARE_INTERFACE_(DAOContainers, _DAOCollection)
  960.     {
  961.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOContainer FAR* FAR* ppctn) PURE;
  962.     };
  963.  
  964. // Interface: DAODocument
  965. #undef INTERFACE
  966. #define INTERFACE DAODocument
  967. DECLARE_INTERFACE_(DAODocument, _DAO)
  968.     {
  969.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  970.     STDMETHOD(get_Owner)                         (THIS_ BSTR FAR* pbstr) PURE;
  971.     STDMETHOD(put_Owner)                         (THIS_ BSTR bstr) PURE;
  972.     STDMETHOD(get_Container)                     (THIS_ BSTR FAR* pbstr) PURE;
  973.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  974.     STDMETHOD(put_UserName)                         (THIS_ BSTR bstr) PURE;
  975.     STDMETHOD(get_Permissions)                     (THIS_ long FAR* pl) PURE;
  976.     STDMETHOD(put_Permissions)                     (THIS_ long permissions) PURE;
  977.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  978.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  979.     STDMETHOD(get_AllPermissions)                 (THIS_ long FAR* pl) PURE;
  980.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  981.     };
  982.  
  983. // Interface: DAODocuments
  984. #undef INTERFACE
  985. #define INTERFACE DAODocuments
  986. DECLARE_INTERFACE_(DAODocuments, _DAOCollection)
  987.     {
  988.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAODocument FAR* FAR* ppdoc) PURE;
  989.     };
  990.  
  991. // Interface: DAOConnection
  992. #undef INTERFACE
  993. #define INTERFACE DAOConnection
  994. DECLARE_INTERFACE_(DAOConnection, IDispatch)
  995.     {
  996.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  997.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  998.     STDMETHOD(get_Database)                         (THIS_ DAODatabase FAR* FAR* ppDb) PURE;
  999.     STDMETHOD(get_hDbc)                             (THIS_ long FAR* phDbc) PURE;
  1000.     STDMETHOD(get_QueryTimeout)                     (THIS_ short FAR* pSeconds) PURE;
  1001.     STDMETHOD(put_QueryTimeout)                     (THIS_ short Seconds) PURE;
  1002.     STDMETHOD(get_Transactions)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  1003.     STDMETHOD(get_RecordsAffected)                 (THIS_ long FAR* pRecords) PURE;
  1004.     STDMETHOD(get_StillExecuting)                 (THIS_ VARIANT_BOOL FAR* pStillExec) PURE;
  1005.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pStillExec) PURE;
  1006.     STDMETHOD(get_QueryDefs)                     (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
  1007.     STDMETHOD(get_Recordsets)                     (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
  1008.     STDMETHOD(Cancel)                             (THIS) PURE;
  1009.     STDMETHOD(Close)                             (THIS) PURE;
  1010.     STDMETHOD(CreateQueryDef)                     (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
  1011.     STDMETHOD(Execute)                             (THIS_ BSTR Query, VARIANT Options) PURE;
  1012.     STDMETHOD(OpenRecordset)                     (THIS_ BSTR Name, VARIANT Type, VARIANT Options, VARIANT LockEdit, DAORecordset FAR* FAR* pprst) PURE;
  1013.     };
  1014.  
  1015. // Interface: DAOConnections
  1016. #undef INTERFACE
  1017. #define INTERFACE DAOConnections
  1018. DECLARE_INTERFACE_(DAOConnections, _DAOCollection)
  1019.     {
  1020.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOConnection FAR* FAR* ppconn) PURE;
  1021.     };
  1022.  
  1023. #pragma option pop /*P_O_Pop*/
  1024. #endif // _DBDAOINT_H_
  1025.