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