home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Dbdaoint.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-04  |  34.5 KB  |  777 lines

  1. /*************************************************************************
  2. **    D B D A O I N T . H                                                    *
  3. **                                                                        *
  4. **    OLE DAO Interface                                                     *
  5. **                                                                        *
  6. **    History                                                             *
  7. **    -------                                                             *
  8. **       File converted from cdaotype.h for use by CDAO clients.            *
  9. **                                                                          *
  10. **                                                                        *
  11. **************************************************************************
  12. ** Copyright (C) 1995 by Microsoft Corporation                             *
  13. **           All Rights Reserved                                            *
  14. **************************************************************************/
  15. #ifndef _DBDAOINT_H_
  16. #define _DBDAOINT_H_
  17.  
  18. #ifndef _INC_TCHAR
  19. #include <tchar.h>
  20. #endif
  21.  
  22. // Forwards
  23. #define DAODBEngine _DAODBEngine
  24. interface _DAODBEngine;
  25. interface DAOError;
  26. interface DAOErrors;
  27. interface DAOProperty;
  28. interface DAOProperties;
  29. interface DAOWorkspace;
  30. interface DAOWorkspaces;
  31. interface DAODatabase;
  32. interface DAODatabases;
  33. #define DAOTableDef _DAOTableDef
  34. interface _DAOTableDef;
  35. interface DAOTableDefs;
  36. #define DAOQueryDef _DAOQueryDef
  37. interface _DAOQueryDef;
  38. interface DAOQueryDefs;
  39. interface DAORecordset;
  40. interface DAORecordsets;
  41. #define DAOField _DAOField
  42. interface _DAOField;
  43. interface DAOFields;
  44. #define DAOIndex _DAOIndex
  45. interface _DAOIndex;
  46. interface DAOIndexes;
  47. interface DAOParameter;
  48. interface DAOParameters;
  49. #define DAOUser _DAOUser
  50. interface _DAOUser;
  51. interface DAOUsers;
  52. #define DAOGroup _DAOGroup
  53. interface _DAOGroup;
  54. interface DAOGroups;
  55. #define DAORelation _DAORelation
  56. interface _DAORelation;
  57. interface DAORelations;
  58. interface DAOContainer;
  59. interface DAOContainers;
  60. interface DAODocument;
  61. interface DAODocuments;
  62.  
  63.  
  64. // Constants
  65.     const short dbOpenTable = 1;
  66.     const short dbOpenDynaset = 2;
  67.     const short dbOpenSnapshot = 4;
  68.     const short dbEditNone = 0;
  69.     const short dbEditInProgress = 1;
  70.     const short dbEditAdd = 2;
  71.     const short dbDenyWrite = 1;
  72.     const short dbDenyRead = 2;
  73.     const short dbReadOnly = 4;
  74.     const short dbAppendOnly = 8;
  75.     const short dbInconsistent = 16;
  76.     const short dbConsistent = 32;
  77.     const short dbSQLPassThrough = 64;
  78.     const short dbFailOnError = 128;
  79.     const short dbForwardOnly = 256;
  80.     const short dbSeeChanges = 512;
  81.     const short dbFixedField = 1;
  82.     const short dbVariableField = 2;
  83.     const short dbAutoIncrField = 16;
  84.     const short dbUpdatableField = 32;
  85.     const long dbSystemField = 8192;
  86.     const short dbDescending = 1;
  87.     const short dbBoolean = 1;
  88.     const short dbByte = 2;
  89.     const short dbInteger = 3;
  90.     const short dbLong = 4;
  91.     const short dbCurrency = 5;
  92.     const short dbSingle = 6;
  93.     const short dbDouble = 7;
  94.     const short dbDate = 8;
  95.     const short dbText = 10;
  96.     const short dbLongBinary = 11;
  97.     const short dbMemo = 12;
  98.     const short dbGUID = 15;
  99.     const long dbRelationUnique = 1;
  100.     const long dbRelationDontEnforce = 2;
  101.     const long dbRelationInherited = 4;
  102.     const long dbRelationUpdateCascade = 256;
  103.     const long dbRelationDeleteCascade = 4096;
  104.     const long dbRelationLeft = 16777216;
  105.     const long dbRelationRight = 33554432;
  106.     const long dbAttachExclusive = 65536;
  107.     const long dbAttachSavePWD = 131072;
  108.     const long dbSystemObject = -2147483646;
  109.     const long dbAttachedTable = 1073741824;
  110.     const long dbAttachedODBC = 536870912;
  111.     const long dbHiddenObject = 1;
  112.     const short dbQSelect = 0;
  113.     const short dbQAction = 240;
  114.     const short dbQCrosstab = 16;
  115.     const short dbQDelete = 32;
  116.     const short dbQUpdate = 48;
  117.     const short dbQAppend = 64;
  118.     const short dbQMakeTable = 80;
  119.     const short dbQDDL = 96;
  120.     const short dbQSQLPassThrough = 112;
  121.     const short dbQSetOperation = 128;
  122.     const short dbQSPTBulk = 144;
  123.     const TCHAR dbLangArabic[] = _T(";LANGID=0x0401;CP=1256;COUNTRY=0";);
  124.     const TCHAR dbLangCzech[] = _T(";LANGID=0x0405;CP=1250;COUNTRY=0";);
  125.     const TCHAR dbLangDutch[] = _T(";LANGID=0x0413;CP=1252;COUNTRY=0";);
  126.     const TCHAR dbLangGeneral[] = _T(";LANGID=0x0409;CP=1252;COUNTRY=0";);
  127.     const TCHAR dbLangGreek[] = _T(";LANGID=0x0408;CP=1253;COUNTRY=0";);
  128.     const TCHAR dbLangHebrew[] = _T(";LANGID=0x040D;CP=1255;COUNTRY=0";);
  129.     const TCHAR dbLangHungarian[] = _T(";LANGID=0x040E;CP=1250;COUNTRY=0";);
  130.     const TCHAR dbLangIcelandic[] = _T(";LANGID=0x040F;CP=1252;COUNTRY=0";);
  131.     const TCHAR dbLangNordic[] = _T(";LANGID=0x041D;CP=1252;COUNTRY=0";);
  132.     const TCHAR dbLangNorwDan[] = _T(";LANGID=0x0414;CP=1252;COUNTRY=0";);
  133.     const TCHAR dbLangPolish[] = _T(";LANGID=0x0415;CP=1250;COUNTRY=0";);
  134.     const TCHAR dbLangCyrillic[] = _T(";LANGID=0x0419;CP=1251;COUNTRY=0";);
  135.     const TCHAR dbLangSpanish[] = _T(";LANGID=0x040A;CP=1252;COUNTRY=0";);
  136.     const TCHAR dbLangSwedFin[] = _T(";LANGID=0x040B;CP=1252;COUNTRY=0";);
  137.     const TCHAR dbLangTurkish[] = _T(";LANGID=0x041F;CP=1254;COUNTRY=0";);
  138.     const TCHAR dbLangJapanese[] = _T(";LANGID=0x0411;CP=932;COUNTRY=0";);
  139.     const TCHAR dbLangChineseSimplified[] = _T(";LANGID=0x0804;CP=936;COUNTRY=0";);
  140.     const TCHAR dbLangChineseTraditional[] = _T(";LANGID=0x0404;CP=950;COUNTRY=0";);
  141.     const TCHAR dbLangKorean[] = _T(";LANGID=0x040C;CP=494;COUNTRY=0";);
  142.     const TCHAR dbLangThai[] = _T(";LANGID=0x101E;CP=874;COUNTRY=0";);
  143.     const short dbVersion10 = 1;
  144.     const short dbEncrypt = 2;
  145.     const short dbDecrypt = 4;
  146.     const short dbVersion11 = 8;
  147.     const short dbVersion20 = 16;
  148.     const short dbVersion30 = 32;
  149.     const short dbSortNeutral = 1024;
  150.     const short dbSortArabic = 1025;
  151.     const short dbSortCyrillic = 1049;
  152.     const short dbSortCzech = 1029;
  153.     const short dbSortDutch = 1043;
  154.     const short dbSortGeneral = 1033;
  155.     const short dbSortGreek = 1032;
  156.     const short dbSortHebrew = 1037;
  157.     const short dbSortHungarian = 1038;
  158.     const short dbSortIcelandic = 1039;
  159.     const short dbSortNorwdan = 1030;
  160.     const short dbSortPDXIntl = 1033;
  161.     const short dbSortPDXNor = 1030;
  162.     const short dbSortPDXSwe = 1053;
  163.     const short dbSortPolish = 1045;
  164.     const short dbSortSpanish = 1034;
  165.     const short dbSortSwedFin = 1053;
  166.     const short dbSortTurkish = 1055;
  167.     const short dbSortJapanese = 1041;
  168.     const short dbSortChineseSimplified = 2052;
  169.     const short dbSortChineseTraditional = 1028;
  170.     const short dbSortKorean = 1036;
  171.     const short dbSortThai = 4126;
  172.     const short dbSortUndefined = -1;
  173.     const short dbFreeLocks = 1;
  174.     const long dbSecNoAccess = 0;
  175.     const long dbSecFullAccess = 1048575;
  176.     const long dbSecDelete = 65536;
  177.     const long dbSecReadSec = 131072;
  178.     const long dbSecWriteSec = 262144;
  179.     const long dbSecWriteOwner = 524288;
  180.     const long dbSecDBCreate = 1;
  181.     const long dbSecDBOpen = 2;
  182.     const long dbSecDBExclusive = 4;
  183.     const long dbSecDBAdmin = 8;
  184.     const long dbSecCreate = 1;
  185.     const long dbSecReadDef = 4;
  186.     const long dbSecWriteDef = 65548;
  187.     const long dbSecRetrieveData = 20;
  188.     const long dbSecInsertData = 32;
  189.     const long dbSecReplaceData = 64;
  190.     const long dbSecDeleteData = 128;
  191.     const long dbRepExportChanges = 1;
  192.     const long dbRepImportChanges = 2;
  193.     const long dbRepImpExpChanges = 4;
  194.     const long dbRepMakeReadOnly = 2;
  195. // Interface: _DAOCollection
  196. #undef INTERFACE
  197. #define INTERFACE _DAOCollection
  198. DECLARE_INTERFACE_(_DAOCollection, IDispatch)
  199.     {
  200.     STDMETHOD(get_Count)                         (THIS_ short FAR* c) PURE;
  201.     STDMETHOD(_NewEnum)                             (THIS_ IUnknown * FAR* ppunk) PURE;
  202.     STDMETHOD(Refresh)                             (THIS) PURE;
  203.     };
  204.  
  205. // Interface: _DAODynaCollection
  206. #undef INTERFACE
  207. #define INTERFACE _DAODynaCollection
  208. DECLARE_INTERFACE_(_DAODynaCollection, _DAOCollection)
  209.     {
  210.     STDMETHOD(Append)                             (THIS_ IDispatch * Object) PURE;
  211.     STDMETHOD(Delete)                             (THIS_ BSTR Name) PURE;
  212.     };
  213.  
  214. // Interface: _DAO
  215. #undef INTERFACE
  216. #define INTERFACE _DAO
  217. DECLARE_INTERFACE_(_DAO, IDispatch)
  218.     {
  219.     STDMETHOD(get_Properties)                     (THIS_ DAOProperties FAR* FAR* ppprops) PURE;
  220.     };
  221.  
  222. // Interface: _DAODBEngine
  223. #undef INTERFACE
  224. #define INTERFACE _DAODBEngine
  225. DECLARE_INTERFACE_(_DAODBEngine, _DAO)
  226.     {
  227.     STDMETHOD(get_Version)                         (THIS_ BSTR FAR* pbstr) PURE;
  228.     STDMETHOD(get_IniPath)                         (THIS_ BSTR FAR* pbstr) PURE;
  229.     STDMETHOD(put_IniPath)                         (THIS_ BSTR path) PURE;
  230.     STDMETHOD(put_DefaultUser)                     (THIS_ BSTR user) PURE;
  231.     STDMETHOD(put_DefaultPassword)                 (THIS_ BSTR pw) PURE;
  232.     STDMETHOD(get_LoginTimeout)                     (THIS_ short FAR* ps) PURE;
  233.     STDMETHOD(put_LoginTimeout)                     (THIS_ short Timeout) PURE;
  234.     STDMETHOD(get_Workspaces)                     (THIS_ DAOWorkspaces FAR* FAR* ppworks) PURE;
  235.     STDMETHOD(get_Errors)                         (THIS_ DAOErrors FAR* FAR* pperrs) PURE;
  236.     STDMETHOD(Idle)                                 (THIS_ VARIANT Action) PURE;
  237.     STDMETHOD(CompactDatabase)                     (THIS_ BSTR SrcName, BSTR DstName, VARIANT DstConnect, VARIANT Options, VARIANT SrcConnect) PURE;
  238.     STDMETHOD(RepairDatabase)                     (THIS_ BSTR Name) PURE;
  239.     STDMETHOD(RegisterDatabase)                     (THIS_ BSTR Dsn, BSTR Driver, VARIANT_BOOL Silent, BSTR Attributes) PURE;
  240.     STDMETHOD(CreateWorkspace)                     (THIS_ BSTR Name, BSTR UserName, BSTR Password, DAOWorkspace FAR* FAR* ppwrk) PURE;
  241.     STDMETHOD(OpenDatabase)                         (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
  242.     STDMETHOD(CreateDatabase)                     (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
  243.     STDMETHOD(FreeLocks)                         (THIS) PURE;
  244.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  245.     STDMETHOD(CommitTrans)                         (THIS) PURE;
  246.     STDMETHOD(Rollback)                             (THIS) PURE;
  247.     STDMETHOD(SetDefaultWorkspace)                 (THIS_ BSTR Name, BSTR Password) PURE;
  248.     STDMETHOD(SetDataAccessOption)                 (THIS_ short Option, VARIANT Value) PURE;
  249.     STDMETHOD(ISAMStats)                         (THIS_ long StatNum, VARIANT Reset, long FAR* pl) PURE;
  250.     STDMETHOD(get_SystemDB)                         (THIS_ BSTR FAR* pbstr) PURE;
  251.     STDMETHOD(put_SystemDB)                         (THIS_ BSTR SystemDBPath) PURE;
  252.     };
  253.  
  254. // Interface: DAOError
  255. #undef INTERFACE
  256. #define INTERFACE DAOError
  257. DECLARE_INTERFACE_(DAOError, IDispatch)
  258.     {
  259.     STDMETHOD(get_Number)                         (THIS_ long FAR* pl) PURE;
  260.     STDMETHOD(get_Source)                         (THIS_ BSTR FAR* pbstr) PURE;
  261.     STDMETHOD(get_Description)                     (THIS_ BSTR FAR* pbstr) PURE;
  262.     STDMETHOD(get_HelpFile)                         (THIS_ BSTR FAR* pbstr) PURE;
  263.     STDMETHOD(get_HelpContext)                     (THIS_ long FAR* pl) PURE;
  264.     };
  265.  
  266. // Interface: DAOErrors
  267. #undef INTERFACE
  268. #define INTERFACE DAOErrors
  269. DECLARE_INTERFACE_(DAOErrors, _DAOCollection)
  270.     {
  271.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOError FAR* FAR* pperr) PURE;
  272.     };
  273.  
  274. // Interface: DAOWorkspace
  275. #undef INTERFACE
  276. #define INTERFACE DAOWorkspace
  277. DECLARE_INTERFACE_(DAOWorkspace, _DAO)
  278.     {
  279.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  280.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  281.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  282.     STDMETHOD(put_UserName)                         (THIS_ BSTR UserName) PURE;
  283.     STDMETHOD(put_Password)                         (THIS_ BSTR Password) PURE;
  284.     STDMETHOD(get_IsolateODBCTrans)                 (THIS_ short FAR* ps) PURE;
  285.     STDMETHOD(put_IsolateODBCTrans)                 (THIS_ short s) PURE;
  286.     STDMETHOD(get_Databases)                     (THIS_ DAODatabases FAR* FAR* ppdbs) PURE;
  287.     STDMETHOD(get_Users)                         (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
  288.     STDMETHOD(get_Groups)                         (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
  289.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  290.     STDMETHOD(CommitTrans)                         (THIS) PURE;
  291.     STDMETHOD(Close)                             (THIS) PURE;
  292.     STDMETHOD(Rollback)                             (THIS) PURE;
  293.     STDMETHOD(OpenDatabase)                         (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
  294.     STDMETHOD(CreateDatabase)                     (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
  295.     STDMETHOD(CreateUser)                         (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
  296.     STDMETHOD(CreateGroup)                         (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
  297.     };
  298.  
  299. // Interface: DAOWorkspaces
  300. #undef INTERFACE
  301. #define INTERFACE DAOWorkspaces
  302. DECLARE_INTERFACE_(DAOWorkspaces, _DAODynaCollection)
  303.     {
  304.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOWorkspace FAR* FAR* ppwrk) PURE;
  305.     };
  306.  
  307. // Interface: _DAOTableDef
  308. #undef INTERFACE
  309. #define INTERFACE _DAOTableDef
  310. DECLARE_INTERFACE_(_DAOTableDef, _DAO)
  311.     {
  312.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  313.     STDMETHOD(put_Attributes)                     (THIS_ long Attributes) PURE;
  314.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  315.     STDMETHOD(put_Connect)                         (THIS_ BSTR Connection) PURE;
  316.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  317.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  318.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  319.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  320.     STDMETHOD(get_SourceTableName)                 (THIS_ BSTR FAR* pbstr) PURE;
  321.     STDMETHOD(put_SourceTableName)                 (THIS_ BSTR bstr) PURE;
  322.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  323.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  324.     STDMETHOD(put_ValidationText)                 (THIS_ BSTR bstr) PURE;
  325.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  326.     STDMETHOD(put_ValidationRule)                 (THIS_ BSTR bstr) PURE;
  327.     STDMETHOD(get_RecordCount)                     (THIS_ long FAR* pl) PURE;
  328.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  329.     STDMETHOD(get_Indexes)                         (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
  330.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  331.     STDMETHOD(RefreshLink)                         (THIS) PURE;
  332.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  333.     STDMETHOD(CreateIndex)                         (THIS_ VARIANT Name, DAOIndex FAR* FAR* ppidx) PURE;
  334.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  335.     STDMETHOD(get_ConflictTable)                 (THIS_ BSTR FAR* pbstr) PURE;
  336.     };
  337.  
  338. // Interface: DAOTableDefs
  339. #undef INTERFACE
  340. #define INTERFACE DAOTableDefs
  341. DECLARE_INTERFACE_(DAOTableDefs, _DAODynaCollection)
  342.     {
  343.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOTableDef FAR* FAR* pptdf) PURE;
  344.     };
  345.  
  346. // Interface: DAODatabase
  347. #undef INTERFACE
  348. #define INTERFACE DAODatabase
  349. DECLARE_INTERFACE_(DAODatabase, _DAO)
  350.     {
  351.     STDMETHOD(get_CollatingOrder)                 (THIS_ long FAR* pl) PURE;
  352.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  353.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  354.     STDMETHOD(get_QueryTimeout)                     (THIS_ short FAR* ps) PURE;
  355.     STDMETHOD(put_QueryTimeout)                     (THIS_ short Timeout) PURE;
  356.     STDMETHOD(get_Transactions)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  357.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  358.     STDMETHOD(get_Version)                         (THIS_ BSTR FAR* pbstr) PURE;
  359.     STDMETHOD(get_RecordsAffected)                 (THIS_ long FAR* pl) PURE;
  360.     STDMETHOD(get_TableDefs)                     (THIS_ DAOTableDefs FAR* FAR* pptdfs) PURE;
  361.     STDMETHOD(get_QueryDefs)                     (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
  362.     STDMETHOD(get_Relations)                     (THIS_ DAORelations FAR* FAR* pprls) PURE;
  363.     STDMETHOD(get_Containers)                     (THIS_ DAOContainers FAR* FAR* ppctns) PURE;
  364.     STDMETHOD(get_Recordsets)                     (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
  365.     STDMETHOD(Close)                             (THIS) PURE;
  366.     STDMETHOD(Execute)                             (THIS_ BSTR Query, VARIANT Options) PURE;
  367.     STDMETHOD(OpenRecordset)                     (THIS_ BSTR Name, VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  368.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  369.     STDMETHOD(CreateRelation)                     (THIS_ VARIANT Name, VARIANT Table, VARIANT ForeignTable, VARIANT Attributes, DAORelation FAR* FAR* pprel) PURE;
  370.     STDMETHOD(CreateTableDef)                     (THIS_ VARIANT Name, VARIANT Attributes, VARIANT SourceTablename, VARIANT Connect, DAOTableDef FAR* FAR* pptdf) PURE;
  371.     STDMETHOD(BeginTrans)                         (THIS) PURE;
  372.     STDMETHOD(CommitTrans)                         (THIS) PURE;
  373.     STDMETHOD(Rollback)                             (THIS) PURE;
  374.     STDMETHOD(CreateDynaset)                     (THIS_ BSTR Name, VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  375.     STDMETHOD(CreateQueryDef)                     (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
  376.     STDMETHOD(CreateSnapshot)                     (THIS_ BSTR Source, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  377.     STDMETHOD(DeleteQueryDef)                     (THIS_ BSTR Name) PURE;
  378.     STDMETHOD(ExecuteSQL)                         (THIS_ BSTR SQL, long FAR* pl) PURE;
  379.     STDMETHOD(ListFields)                         (THIS_ BSTR Name, DAORecordset FAR* FAR* pprst) PURE;
  380.     STDMETHOD(ListTables)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  381.     STDMETHOD(OpenQueryDef)                         (THIS_ BSTR Name, DAOQueryDef FAR* FAR* ppqdf) PURE;
  382.     STDMETHOD(OpenTable)                         (THIS_ BSTR Name, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  383.     STDMETHOD(get_ReplicaID)                     (THIS_ BSTR FAR* pbstr) PURE;
  384.     STDMETHOD(get_DesignMasterID)                 (THIS_ BSTR FAR* pbstr) PURE;
  385.     STDMETHOD(put_DesignMasterID)                 (THIS_ BSTR MasterID) PURE;
  386.     STDMETHOD(Synchronize)                         (THIS_ BSTR DbPathName, VARIANT ExchangeType) PURE;
  387.     STDMETHOD(MakeReplica)                         (THIS_ BSTR PathName, BSTR Description, VARIANT Options) PURE;
  388.     STDMETHOD(put_Connect)                         (THIS_ BSTR ODBCConnnect) PURE;
  389.     STDMETHOD(NewPassword)                         (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
  390.     };
  391.  
  392. // Interface: DAODatabases
  393. #undef INTERFACE
  394. #define INTERFACE DAODatabases
  395. DECLARE_INTERFACE_(DAODatabases, _DAOCollection)
  396.     {
  397.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAODatabase FAR* FAR* ppdb) PURE;
  398.     };
  399.  
  400. // Interface: _DAOQueryDef
  401. #undef INTERFACE
  402. #define INTERFACE _DAOQueryDef
  403. DECLARE_INTERFACE_(_DAOQueryDef, _DAO)
  404.     {
  405.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  406.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  407.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  408.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  409.     STDMETHOD(get_ODBCTimeout)                     (THIS_ short FAR* ps) PURE;
  410.     STDMETHOD(put_ODBCTimeout)                     (THIS_ short timeout) PURE;
  411.     STDMETHOD(get_Type)                             (THIS_ short FAR* pi) PURE;
  412.     STDMETHOD(get_SQL)                             (THIS_ BSTR FAR* pbstr) PURE;
  413.     STDMETHOD(put_SQL)                             (THIS_ BSTR bstr) PURE;
  414.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  415.     STDMETHOD(get_Connect)                         (THIS_ BSTR FAR* pbstr) PURE;
  416.     STDMETHOD(put_Connect)                         (THIS_ BSTR bstr) PURE;
  417.     STDMETHOD(get_ReturnsRecords)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  418.     STDMETHOD(put_ReturnsRecords)                 (THIS_ VARIANT_BOOL f) PURE;
  419.     STDMETHOD(get_RecordsAffected)                 (THIS_ long FAR* pl) PURE;
  420.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  421.     STDMETHOD(get_Parameters)                     (THIS_ DAOParameters FAR* FAR* ppprms) PURE;
  422.     STDMETHOD(Close)                             (THIS) PURE;
  423.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  424.     STDMETHOD(_OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  425.     STDMETHOD(_Copy)                             (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
  426.     STDMETHOD(Execute)                             (THIS_ VARIANT Options) PURE;
  427.     STDMETHOD(Compare)                             (THIS_ DAOQueryDef FAR* pQdef, short FAR* lps) PURE;
  428.     STDMETHOD(CreateDynaset)                     (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  429.     STDMETHOD(CreateSnapshot)                     (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  430.     STDMETHOD(ListParameters)                     (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  431.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  432.     };
  433.  
  434. // Interface: DAOQueryDefs
  435. #undef INTERFACE
  436. #define INTERFACE DAOQueryDefs
  437. DECLARE_INTERFACE_(DAOQueryDefs, _DAODynaCollection)
  438.     {
  439.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOQueryDef FAR* FAR* ppqdef) PURE;
  440.     };
  441.  
  442. // Interface: DAORecordset
  443. #undef INTERFACE
  444. #define INTERFACE DAORecordset
  445. DECLARE_INTERFACE_(DAORecordset, _DAO)
  446.     {
  447.     STDMETHOD(get_BOF)                             (THIS_ VARIANT_BOOL FAR* pb) PURE;
  448.     STDMETHOD(get_Bookmark)                         (THIS_ SAFEARRAY FAR* FAR* ppsach) PURE;
  449.     STDMETHOD(put_Bookmark)                         (THIS_ SAFEARRAY FAR* FAR* psach) PURE;
  450.     STDMETHOD(get_Bookmarkable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  451.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  452.     STDMETHOD(get_EOF)                             (THIS_ VARIANT_BOOL FAR* pb) PURE;
  453.     STDMETHOD(get_Filter)                         (THIS_ BSTR FAR* pbstr) PURE;
  454.     STDMETHOD(put_Filter)                         (THIS_ BSTR Filter) PURE;
  455.     STDMETHOD(get_Index)                         (THIS_ BSTR FAR* pbstr) PURE;
  456.     STDMETHOD(put_Index)                         (THIS_ BSTR bstr) PURE;
  457.     STDMETHOD(get_LastModified)                     (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
  458.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  459.     STDMETHOD(get_LockEdits)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  460.     STDMETHOD(put_LockEdits)                     (THIS_ VARIANT_BOOL Lock) PURE;
  461.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  462.     STDMETHOD(get_NoMatch)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  463.     STDMETHOD(get_Sort)                             (THIS_ BSTR FAR* pbstr) PURE;
  464.     STDMETHOD(put_Sort)                             (THIS_ BSTR Sort) PURE;
  465.     STDMETHOD(get_Transactions)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  466.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  467.     STDMETHOD(get_RecordCount)                     (THIS_ long FAR* pl) PURE;
  468.     STDMETHOD(get_Updatable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  469.     STDMETHOD(get_Restartable)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  470.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  471.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  472.     STDMETHOD(get_CacheStart)                     (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
  473.     STDMETHOD(put_CacheStart)                     (THIS_ SAFEARRAY FAR* FAR* psa) PURE;
  474.     STDMETHOD(get_CacheSize)                     (THIS_ long FAR* pl) PURE;
  475.     STDMETHOD(put_CacheSize)                     (THIS_ long CacheSize) PURE;
  476.     STDMETHOD(get_PercentPosition)                 (THIS_ float FAR* pd) PURE;
  477.     STDMETHOD(put_PercentPosition)                 (THIS_ float Position) PURE;
  478.     STDMETHOD(get_AbsolutePosition)                 (THIS_ long FAR* pl) PURE;
  479.     STDMETHOD(put_AbsolutePosition)                 (THIS_ long Position) PURE;
  480.     STDMETHOD(get_EditMode)                         (THIS_ short FAR* pi) PURE;
  481.     STDMETHOD(get_ODBCFetchCount)                 (THIS_ long FAR* pl) PURE;
  482.     STDMETHOD(get_ODBCFetchDelay)                 (THIS_ long FAR* pl) PURE;
  483.     STDMETHOD(get_Parent)                         (THIS_ DAODatabase FAR* FAR* pdb) PURE;
  484.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  485.     STDMETHOD(get_Indexes)                         (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
  486.     STDMETHOD(CancelUpdate)                         (THIS) PURE;
  487.     STDMETHOD(AddNew)                             (THIS) PURE;
  488.     STDMETHOD(Close)                             (THIS) PURE;
  489.     STDMETHOD(OpenRecordset)                     (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  490.     STDMETHOD(Delete)                             (THIS) PURE;
  491.     STDMETHOD(Edit)                                 (THIS) PURE;
  492.     STDMETHOD(FindFirst)                         (THIS_ BSTR Criteria) PURE;
  493.     STDMETHOD(FindLast)                             (THIS_ BSTR Criteria) PURE;
  494.     STDMETHOD(FindNext)                             (THIS_ BSTR Criteria) PURE;
  495.     STDMETHOD(FindPrevious)                         (THIS_ BSTR Criteria) PURE;
  496.     STDMETHOD(MoveFirst)                         (THIS) PURE;
  497.     STDMETHOD(MoveLast)                             (THIS) PURE;
  498.     STDMETHOD(MoveNext)                             (THIS) PURE;
  499.     STDMETHOD(MovePrevious)                         (THIS) PURE;
  500.     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;
  501.     STDMETHOD(Update)                             (THIS) PURE;
  502.     STDMETHOD(Clone)                             (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  503.     STDMETHOD(Requery)                             (THIS_ VARIANT NewQueryDef) PURE;
  504.     STDMETHOD(Move)                                 (THIS_ long Rows, VARIANT StartBookmark) PURE;
  505.     STDMETHOD(FillCache)                         (THIS_ VARIANT Rows, VARIANT StartBookmark) PURE;
  506.     STDMETHOD(CreateDynaset)                     (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
  507.     STDMETHOD(CreateSnapshot)                     (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
  508.     STDMETHOD(CopyQueryDef)                         (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
  509.     STDMETHOD(ListFields)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  510.     STDMETHOD(ListIndexes)                         (THIS_ DAORecordset FAR* FAR* pprst) PURE;
  511.     STDMETHOD(GetRows)                             (THIS_ VARIANT cRows, VARIANT FAR* pvar) PURE;
  512.     STDMETHOD(get_Collect)                         (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
  513.     STDMETHOD(put_Collect)                         (THIS_ VARIANT index, VARIANT value) PURE;
  514.     };
  515.  
  516. // Interface: DAORecordsets
  517. #undef INTERFACE
  518. #define INTERFACE DAORecordsets
  519. DECLARE_INTERFACE_(DAORecordsets, _DAOCollection)
  520.     {
  521.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAORecordset FAR* FAR* pprst) PURE;
  522.     };
  523.  
  524. // Interface: _DAOField
  525. #undef INTERFACE
  526. #define INTERFACE _DAOField
  527. DECLARE_INTERFACE_(_DAOField, _DAO)
  528.     {
  529.     STDMETHOD(get_CollatingOrder)                 (THIS_ long FAR* pl) PURE;
  530.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  531.     STDMETHOD(put_Type)                             (THIS_ short Type) PURE;
  532.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  533.     STDMETHOD(put_Name)                             (THIS_ BSTR Name) PURE;
  534.     STDMETHOD(get_Size)                             (THIS_ long FAR* pl) PURE;
  535.     STDMETHOD(put_Size)                             (THIS_ long Size) PURE;
  536.     STDMETHOD(get_SourceField)                     (THIS_ BSTR FAR* pbstr) PURE;
  537.     STDMETHOD(get_SourceTable)                     (THIS_ BSTR FAR* pbstr) PURE;
  538.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pvar) PURE;
  539.     STDMETHOD(put_Value)                         (THIS_ VARIANT Val) PURE;
  540.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  541.     STDMETHOD(put_Attributes)                     (THIS_ long Attr) PURE;
  542.     STDMETHOD(get_OrdinalPosition)                 (THIS_ short FAR* ps) PURE;
  543.     STDMETHOD(put_OrdinalPosition)                 (THIS_ short Pos) PURE;
  544.     STDMETHOD(get_ValidationText)                 (THIS_ BSTR FAR* pbstr) PURE;
  545.     STDMETHOD(put_ValidationText)                 (THIS_ BSTR bstr) PURE;
  546.     STDMETHOD(get_ValidateOnSet)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  547.     STDMETHOD(put_ValidateOnSet)                 (THIS_ VARIANT_BOOL Validate) PURE;
  548.     STDMETHOD(get_ValidationRule)                 (THIS_ BSTR FAR* pbstr) PURE;
  549.     STDMETHOD(put_ValidationRule)                 (THIS_ BSTR bstr) PURE;
  550.     STDMETHOD(get_DefaultValue)                     (THIS_ BSTR FAR* pbstr) PURE;
  551.     STDMETHOD(put_DefaultValue)                     (THIS_ BSTR bstr) PURE;
  552.     STDMETHOD(get_Required)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  553.     STDMETHOD(put_Required)                         (THIS_ VARIANT_BOOL fReq) PURE;
  554.     STDMETHOD(get_AllowZeroLength)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  555.     STDMETHOD(put_AllowZeroLength)                 (THIS_ VARIANT_BOOL fAllow) PURE;
  556.     STDMETHOD(get_DataUpdatable)                 (THIS_ VARIANT_BOOL FAR* pb) PURE;
  557.     STDMETHOD(get_ForeignName)                     (THIS_ BSTR FAR* pbstr) PURE;
  558.     STDMETHOD(put_ForeignName)                     (THIS_ BSTR bstr) PURE;
  559.     STDMETHOD(AppendChunk)                         (THIS_ VARIANT Val) PURE;
  560.     STDMETHOD(GetChunk)                             (THIS_ long Offset, long Bytes, VARIANT FAR* pvar) PURE;
  561.     STDMETHOD(FieldSize)                         (THIS_ long FAR* pl) PURE;
  562.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  563.     STDMETHOD(get_CollectionIndex)                 (THIS_ short FAR* i) PURE;
  564.     };
  565.  
  566. // Interface: DAOFields
  567. #undef INTERFACE
  568. #define INTERFACE DAOFields
  569. DECLARE_INTERFACE_(DAOFields, _DAODynaCollection)
  570.     {
  571.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOField FAR* FAR* ppfld) PURE;
  572.     };
  573.  
  574. // Interface: _DAOIndex
  575. #undef INTERFACE
  576. #define INTERFACE _DAOIndex
  577. DECLARE_INTERFACE_(_DAOIndex, _DAO)
  578.     {
  579.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  580.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  581.     STDMETHOD(get_Foreign)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  582.     STDMETHOD(get_Unique)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  583.     STDMETHOD(put_Unique)                         (THIS_ VARIANT_BOOL fUnique) PURE;
  584.     STDMETHOD(get_Clustered)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  585.     STDMETHOD(put_Clustered)                     (THIS_ VARIANT_BOOL fClustered) PURE;
  586.     STDMETHOD(get_Required)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  587.     STDMETHOD(put_Required)                         (THIS_ VARIANT_BOOL fRequired) PURE;
  588.     STDMETHOD(get_IgnoreNulls)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  589.     STDMETHOD(put_IgnoreNulls)                     (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
  590.     STDMETHOD(get_Primary)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  591.     STDMETHOD(put_Primary)                         (THIS_ VARIANT_BOOL fPrimary) PURE;
  592.     STDMETHOD(get_DistinctCount)                 (THIS_ long FAR* pl) PURE;
  593.     STDMETHOD(get_Fields)                         (THIS_ VARIANT FAR* pv) PURE;
  594.     STDMETHOD(put_Fields)                         (THIS_ VARIANT v) PURE;
  595.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  596.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  597.     };
  598.  
  599. // Interface: DAOIndexes
  600. #undef INTERFACE
  601. #define INTERFACE DAOIndexes
  602. DECLARE_INTERFACE_(DAOIndexes, _DAODynaCollection)
  603.     {
  604.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOIndex FAR* FAR* ppidx) PURE;
  605.     };
  606.  
  607. // Interface: DAOIndexFields
  608. #undef INTERFACE
  609. #define INTERFACE DAOIndexFields
  610. DECLARE_INTERFACE_(DAOIndexFields, _DAODynaCollection)
  611.     {
  612.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
  613.     };
  614.  
  615. // Interface: DAOParameter
  616. #undef INTERFACE
  617. #define INTERFACE DAOParameter
  618. DECLARE_INTERFACE_(DAOParameter, _DAO)
  619.     {
  620.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  621.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pvar) PURE;
  622.     STDMETHOD(put_Value)                         (THIS_ VARIANT val) PURE;
  623.     STDMETHOD(get_Type)                             (THIS_ short FAR* ps) PURE;
  624.     };
  625.  
  626. // Interface: DAOParameters
  627. #undef INTERFACE
  628. #define INTERFACE DAOParameters
  629. DECLARE_INTERFACE_(DAOParameters, _DAOCollection)
  630.     {
  631.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOParameter FAR* FAR* ppprm) PURE;
  632.     };
  633.  
  634. // Interface: _DAOUser
  635. #undef INTERFACE
  636. #define INTERFACE _DAOUser
  637. DECLARE_INTERFACE_(_DAOUser, _DAO)
  638.     {
  639.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  640.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  641.     STDMETHOD(put_PID)                             (THIS_ BSTR bstr) PURE;
  642.     STDMETHOD(put_Password)                         (THIS_ BSTR bstr) PURE;
  643.     STDMETHOD(get_Groups)                         (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
  644.     STDMETHOD(NewPassword)                         (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
  645.     STDMETHOD(CreateGroup)                         (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
  646.     };
  647.  
  648. // Interface: DAOUsers
  649. #undef INTERFACE
  650. #define INTERFACE DAOUsers
  651. DECLARE_INTERFACE_(DAOUsers, _DAODynaCollection)
  652.     {
  653.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOUser FAR* FAR* ppusr) PURE;
  654.     };
  655.  
  656. // Interface: _DAOGroup
  657. #undef INTERFACE
  658. #define INTERFACE _DAOGroup
  659. DECLARE_INTERFACE_(_DAOGroup, _DAO)
  660.     {
  661.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  662.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  663.     STDMETHOD(put_PID)                             (THIS_ BSTR bstr) PURE;
  664.     STDMETHOD(get_Users)                         (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
  665.     STDMETHOD(CreateUser)                         (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
  666.     };
  667.  
  668. // Interface: DAOGroups
  669. #undef INTERFACE
  670. #define INTERFACE DAOGroups
  671. DECLARE_INTERFACE_(DAOGroups, _DAODynaCollection)
  672.     {
  673.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOGroup FAR* FAR* ppgrp) PURE;
  674.     };
  675.  
  676. // Interface: _DAORelation
  677. #undef INTERFACE
  678. #define INTERFACE _DAORelation
  679. DECLARE_INTERFACE_(_DAORelation, _DAO)
  680.     {
  681.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  682.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  683.     STDMETHOD(get_Table)                         (THIS_ BSTR FAR* pbstr) PURE;
  684.     STDMETHOD(put_Table)                         (THIS_ BSTR bstr) PURE;
  685.     STDMETHOD(get_ForeignTable)                     (THIS_ BSTR FAR* pbstr) PURE;
  686.     STDMETHOD(put_ForeignTable)                     (THIS_ BSTR bstr) PURE;
  687.     STDMETHOD(get_Attributes)                     (THIS_ long FAR* pl) PURE;
  688.     STDMETHOD(put_Attributes)                     (THIS_ long attr) PURE;
  689.     STDMETHOD(get_Fields)                         (THIS_ DAOFields FAR* FAR* ppflds) PURE;
  690.     STDMETHOD(CreateField)                         (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
  691.     };
  692.  
  693. // Interface: DAORelations
  694. #undef INTERFACE
  695. #define INTERFACE DAORelations
  696. DECLARE_INTERFACE_(DAORelations, _DAODynaCollection)
  697.     {
  698.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAORelation FAR* FAR* pprel) PURE;
  699.     };
  700.  
  701. // Interface: DAOProperty
  702. #undef INTERFACE
  703. #define INTERFACE DAOProperty
  704. DECLARE_INTERFACE_(DAOProperty, _DAO)
  705.     {
  706.     STDMETHOD(get_Value)                         (THIS_ VARIANT FAR* pval) PURE;
  707.     STDMETHOD(put_Value)                         (THIS_ VARIANT val) PURE;
  708.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  709.     STDMETHOD(put_Name)                             (THIS_ BSTR bstr) PURE;
  710.     STDMETHOD(get_Type)                             (THIS_ short FAR* ptype) PURE;
  711.     STDMETHOD(put_Type)                             (THIS_ short type) PURE;
  712.     STDMETHOD(get_Inherited)                     (THIS_ VARIANT_BOOL FAR* pb) PURE;
  713.     };
  714.  
  715. // Interface: DAOProperties
  716. #undef INTERFACE
  717. #define INTERFACE DAOProperties
  718. DECLARE_INTERFACE_(DAOProperties, _DAODynaCollection)
  719.     {
  720.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOProperty FAR* FAR* ppprop) PURE;
  721.     };
  722.  
  723. // Interface: DAOContainer
  724. #undef INTERFACE
  725. #define INTERFACE DAOContainer
  726. DECLARE_INTERFACE_(DAOContainer, _DAO)
  727.     {
  728.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  729.     STDMETHOD(get_Owner)                         (THIS_ BSTR FAR* pbstr) PURE;
  730.     STDMETHOD(put_Owner)                         (THIS_ BSTR bstr) PURE;
  731.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  732.     STDMETHOD(put_UserName)                         (THIS_ BSTR bstr) PURE;
  733.     STDMETHOD(get_Permissions)                     (THIS_ long FAR* pl) PURE;
  734.     STDMETHOD(put_Permissions)                     (THIS_ long permissions) PURE;
  735.     STDMETHOD(get_Inherit)                         (THIS_ VARIANT_BOOL FAR* pb) PURE;
  736.     STDMETHOD(put_Inherit)                         (THIS_ VARIANT_BOOL fInherit) PURE;
  737.     STDMETHOD(get_Documents)                     (THIS_ DAODocuments FAR* FAR* ppdocs) PURE;
  738.     STDMETHOD(get_AllPermissions)                 (THIS_ long FAR* pl) PURE;
  739.     };
  740.  
  741. // Interface: DAOContainers
  742. #undef INTERFACE
  743. #define INTERFACE DAOContainers
  744. DECLARE_INTERFACE_(DAOContainers, _DAOCollection)
  745.     {
  746.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAOContainer FAR* FAR* ppctn) PURE;
  747.     };
  748.  
  749. // Interface: DAODocument
  750. #undef INTERFACE
  751. #define INTERFACE DAODocument
  752. DECLARE_INTERFACE_(DAODocument, _DAO)
  753.     {
  754.     STDMETHOD(get_Name)                             (THIS_ BSTR FAR* pbstr) PURE;
  755.     STDMETHOD(get_Owner)                         (THIS_ BSTR FAR* pbstr) PURE;
  756.     STDMETHOD(put_Owner)                         (THIS_ BSTR bstr) PURE;
  757.     STDMETHOD(get_Container)                     (THIS_ BSTR FAR* pbstr) PURE;
  758.     STDMETHOD(get_UserName)                         (THIS_ BSTR FAR* pbstr) PURE;
  759.     STDMETHOD(put_UserName)                         (THIS_ BSTR bstr) PURE;
  760.     STDMETHOD(get_Permissions)                     (THIS_ long FAR* pl) PURE;
  761.     STDMETHOD(put_Permissions)                     (THIS_ long permissions) PURE;
  762.     STDMETHOD(get_DateCreated)                     (THIS_ VARIANT FAR* pvar) PURE;
  763.     STDMETHOD(get_LastUpdated)                     (THIS_ VARIANT FAR* pvar) PURE;
  764.     STDMETHOD(get_AllPermissions)                 (THIS_ long FAR* pl) PURE;
  765.     STDMETHOD(CreateProperty)                     (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
  766.     };
  767.  
  768. // Interface: DAODocuments
  769. #undef INTERFACE
  770. #define INTERFACE DAODocuments
  771. DECLARE_INTERFACE_(DAODocuments, _DAOCollection)
  772.     {
  773.     STDMETHOD(get_Item)                             (THIS_ VARIANT index, DAODocument FAR* FAR* ppdoc) PURE;
  774.     };
  775.  
  776. #endif // _DBDAOINT_H_
  777.