Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _DBDAOINT_H_
      7 #define _DBDAOINT_H_
      8 
      9 #include <tchar.h>
     10 
     11 struct _DAODBEngine;
     12 #define DAODBEngine _DAODBEngine
     13 struct DAOError;
     14 struct _DAOCollection;
     15 #define DAOCollection _DAOCollection
     16 struct DAOErrors;
     17 struct DAOProperty;
     18 struct _DAODynaCollection;
     19 #define DAODynaCollection _DAODynaCollection
     20 struct DAOProperties;
     21 struct DAOWorkspace;
     22 struct DAOWorkspaces;
     23 struct DAOConnection;
     24 struct DAOConnections;
     25 struct DAODatabase;
     26 struct DAODatabases;
     27 struct _DAOTableDef;
     28 #define DAOTableDef _DAOTableDef
     29 struct DAOTableDefs;
     30 struct _DAOQueryDef;
     31 #define DAOQueryDef _DAOQueryDef
     32 struct DAOQueryDefs;
     33 struct DAORecordset;
     34 struct DAORecordsets;
     35 struct _DAOField;
     36 #define DAOField _DAOField
     37 struct DAOFields;
     38 struct _DAOIndex;
     39 #define DAOIndex _DAOIndex
     40 struct DAOIndexes;
     41 struct DAOParameter;
     42 struct DAOParameters;
     43 struct _DAOUser;
     44 #define DAOUser _DAOUser
     45 struct DAOUsers;
     46 struct _DAOGroup;
     47 #define DAOGroup _DAOGroup
     48 struct DAOGroups;
     49 struct _DAORelation;
     50 #define DAORelation _DAORelation
     51 struct DAORelations;
     52 struct DAOContainer;
     53 struct DAOContainers;
     54 struct DAODocument;
     55 struct DAODocuments;
     56 struct DAOIndexFields;
     57 
     58 typedef enum RecordsetTypeEnum {
     59   dbOpenTable = 1,dbOpenDynaset = 2,dbOpenSnapshot = 4,dbOpenForwardOnly = 8,dbOpenDynamic = 16
     60 } RecordsetTypeEnum;
     61 
     62 typedef enum EditModeEnum {
     63   dbEditNone = 0,dbEditInProgress = 1,dbEditAdd = 2,dbEditChanged = 4,dbEditDeleted = 8,dbEditNew = 16
     64 } EditModeEnum;
     65 
     66 typedef enum RecordsetOptionEnum {
     67   dbDenyWrite = 0x1,dbDenyRead = 0x2,dbReadOnly = 0x4,dbAppendOnly = 0x8,dbInconsistent = 0x10,dbConsistent = 0x20,dbSQLPassThrough = 0x40,
     68   dbFailOnError = 0x80,dbForwardOnly = 0x100,dbSeeChanges = 0x200,dbRunAsync = 0x400,dbExecDirect = 0x800
     69 } RecordsetOptionEnum;
     70 
     71 typedef enum LockTypeEnum {
     72   dbPessimistic = 0x2,dbOptimistic = 0x3,dbOptimisticValue = 0x1,dbOptimisticBatch = 0x5
     73 } LockTypeEnum;
     74 
     75 typedef enum UpdateCriteriaEnum {
     76   dbCriteriaKey = 0x1,dbCriteriaModValues = 0x2,dbCriteriaAllCols = 0x4,dbCriteriaTimestamp = 0x8,dbCriteriaDeleteInsert = 0x10,
     77   dbCriteriaUpdate = 0x20
     78 } UpdateCriteriaEnum;
     79 
     80 typedef enum FieldAttributeEnum {
     81   dbFixedField = 0x1,dbVariableField = 0x2,dbAutoIncrField = 0x10,dbUpdatableField = 0x20,dbSystemField = 0x2000,dbHyperlinkField = 0x8000,
     82   dbDescending = 0x1
     83 } FieldAttributeEnum;
     84 
     85 typedef enum DataTypeEnum {
     86   dbBoolean = 1,dbByte = 2,dbInteger = 3,dbLong = 4,dbCurrency = 5,dbSingle = 6,dbDouble = 7,dbDate = 8,dbBinary = 9,dbText = 10,
     87   dbLongBinary = 11,dbMemo = 12,dbGUID = 15,dbBigInt = 16,dbVarBinary = 17,dbChar = 18,dbNumeric = 19,dbDecimal = 20,dbFloat = 21,
     88   dbTime = 22,dbTimeStamp = 23
     89 } DataTypeEnum;
     90 
     91 typedef enum RelationAttributeEnum {
     92   dbRelationUnique = 0x1,dbRelationDontEnforce = 0x2,dbRelationInherited = 0x4,dbRelationUpdateCascade = 0x100,dbRelationDeleteCascade = 0x1000,
     93   dbRelationLeft = 0x1000000,dbRelationRight = 0x2000000
     94 } RelationAttributeEnum;
     95 
     96 typedef enum TableDefAttributeEnum {
     97   dbAttachExclusive = 0x10000,dbAttachSavePWD = 0x20000,dbSystemObject = 0x80000002,dbAttachedTable = 0x40000000,dbAttachedODBC = 0x20000000,
     98   dbHiddenObject = 0x1
     99 } TableDefAttributeEnum;
    100 
    101 typedef enum QueryDefTypeEnum {
    102   dbQSelect = 0,dbQProcedure = 0xe0,dbQAction = 0xf0,dbQCrosstab = 0x10,dbQDelete = 0x20,dbQUpdate = 0x30,dbQAppend = 0x40,
    103   dbQMakeTable = 0x50,dbQDDL = 0x60,dbQSQLPassThrough = 0x70,dbQSetOperation = 0x80,dbQSPTBulk = 0x90,dbQCompound = 0xa0
    104 } QueryDefTypeEnum;
    105 
    106 typedef enum QueryDefStateEnum {
    107   dbQPrepare = 1,dbQUnprepare = 2
    108 } QueryDefStateEnum;
    109 
    110 typedef enum DatabaseTypeEnum {
    111   dbVersion10 = 1,dbEncrypt = 2,dbDecrypt = 4,dbVersion11 = 8,dbVersion20 = 16,dbVersion30 = 32,dbVersion40 = 64
    112 } DatabaseTypeEnum;
    113 
    114 typedef enum CollatingOrderEnum {
    115   dbSortNeutral = 0x400,dbSortArabic = 0x401,dbSortCyrillic = 0x419,dbSortCzech = 0x405,dbSortDutch = 0x413,dbSortGeneral = 0x409,
    116   dbSortGreek = 0x408,dbSortHebrew = 0x40d,dbSortHungarian = 0x40e,dbSortIcelandic = 0x40f,dbSortNorwdan = 0x406,dbSortPDXIntl = 0x409,
    117   dbSortPDXNor = 0x406,dbSortPDXSwe = 0x41d,dbSortPolish = 0x415,dbSortSpanish = 0x40a,dbSortSwedFin = 0x41d,dbSortTurkish = 0x41f,
    118   dbSortJapanese = 0x411,dbSortChineseSimplified = 0x804,dbSortChineseTraditional = 0x404,dbSortKorean = 0x412,dbSortThai = 0x41e,
    119   dbSortSlovenian = 0x424,dbSortUndefined = -1
    120 } CollatingOrderEnum;
    121 
    122 typedef enum IdleEnum {
    123   dbFreeLocks = 1,dbRefreshCache = 8
    124 } IdleEnum;
    125 
    126 typedef enum PermissionEnum {
    127   dbSecNoAccess = 0,dbSecFullAccess = 0xfffff,dbSecDelete = 0x10000,dbSecReadSec = 0x20000,dbSecWriteSec = 0x40000,dbSecWriteOwner = 0x80000,
    128   dbSecDBCreate = 0x1,dbSecDBOpen = 0x2,dbSecDBExclusive = 0x4,dbSecDBAdmin = 0x8,dbSecCreate = 0x1,dbSecReadDef = 0x4,dbSecWriteDef = 0x1000c,
    129   dbSecRetrieveData = 0x14,dbSecInsertData = 0x20,dbSecReplaceData = 0x40,dbSecDeleteData = 0x80
    130 } PermissionEnum;
    131 
    132 typedef enum SynchronizeTypeEnum {
    133   dbRepExportChanges = 0x1,dbRepImportChanges = 0x2,dbRepImpExpChanges = 0x4,dbRepSyncInternet = 0x10
    134 } SynchronizeTypeEnum;
    135 
    136 typedef enum ReplicaTypeEnum {
    137   dbRepMakeReadOnly = 0x2,dbRepMakePartial = 0x1
    138 } ReplicaTypeEnum;
    139 
    140 typedef enum WorkspaceTypeEnum {
    141   dbUseODBC = 1,dbUseJet = 2
    142 } WorkspaceTypeEnum;
    143 
    144 typedef enum CursorDriverEnum {
    145   dbUseDefaultCursor = -1,dbUseODBCCursor = 1,dbUseServerCursor = 2,dbUseClientBatchCursor = 3,dbUseNoCursor = 4
    146 } CursorDriverEnum;
    147 
    148 typedef enum DriverPromptEnum {
    149   dbDriverPrompt = 2,dbDriverNoPrompt = 1,dbDriverComplete = 0,dbDriverCompleteRequired = 3
    150 } DriverPromptEnum;
    151 
    152 typedef enum SetOptionEnum {
    153   dbPageTimeout = 6,dbLockRetry = 57,dbMaxBufferSize = 8,dbUserCommitSync = 58,dbImplicitCommitSync = 59,dbExclusiveAsyncDelay = 60,
    154   dbSharedAsyncDelay = 61,dbMaxLocksPerFile = 62,dbLockDelay = 63,dbRecycleLVs = 65,dbFlushTransactionTimeout = 66
    155 } SetOptionEnum;
    156 
    157 typedef enum ParameterDirectionEnum {
    158   dbParamInput = 1,dbParamOutput = 2,dbParamInputOutput = 3,dbParamReturnValue = 4
    159 } ParameterDirectionEnum;
    160 
    161 typedef enum UpdateTypeEnum {
    162   dbUpdateBatch = 4,dbUpdateRegular = 1,dbUpdateCurrentRecord = 2
    163 } UpdateTypeEnum;
    164 
    165 typedef enum RecordStatusEnum {
    166   dbRecordUnmodified = 0,dbRecordModified = 1,dbRecordNew = 2,dbRecordDeleted = 3,dbRecordDBDeleted = 4
    167 } RecordStatusEnum;
    168 
    169 typedef enum CommitTransOptionsEnum {
    170   dbForceOSFlush = 1
    171 } CommitTransOptionsEnum;
    172 
    173 typedef enum _DAOSuppHelp {
    174   LogMessages = 0,KeepLocal = 0,Replicable = 0,ReplicableBool = 0,V1xNullBehavior = 0
    175 } _DAOSuppHelp;
    176 
    177 #define dbLangArabic _T(";LANGID=0x0401;CP=1256;COUNTRY=0")
    178 #define dbLangCzech _T(";LANGID=0x0405;CP=1250;COUNTRY=0")
    179 #define dbLangDutch _T(";LANGID=0x0413;CP=1252;COUNTRY=0")
    180 #define dbLangGeneral _T(";LANGID=0x0409;CP=1252;COUNTRY=0")
    181 #define dbLangGreek _T(";LANGID=0x0408;CP=1253;COUNTRY=0")
    182 #define dbLangHebrew _T(";LANGID=0x040D;CP=1255;COUNTRY=0")
    183 #define dbLangHungarian _T(";LANGID=0x040E;CP=1250;COUNTRY=0")
    184 #define dbLangIcelandic _T(";LANGID=0x040F;CP=1252;COUNTRY=0")
    185 #define dbLangNordic _T(";LANGID=0x041D;CP=1252;COUNTRY=0")
    186 #define dbLangNorwDan _T(";LANGID=0x0414;CP=1252;COUNTRY=0")
    187 #define dbLangPolish _T(";LANGID=0x0415;CP=1250;COUNTRY=0")
    188 #define dbLangCyrillic _T(";LANGID=0x0419;CP=1251;COUNTRY=0")
    189 #define dbLangSpanish _T(";LANGID=0x040A;CP=1252;COUNTRY=0")
    190 #define dbLangSwedFin _T(";LANGID=0x040B;CP=1252;COUNTRY=0")
    191 #define dbLangTurkish _T(";LANGID=0x041F;CP=1254;COUNTRY=0")
    192 #define dbLangJapanese _T(";LANGID=0x0411;CP=932;COUNTRY=0")
    193 #define dbLangChineseSimplified _T(";LANGID=0x0804;CP=936;COUNTRY=0")
    194 #define dbLangChineseTraditional _T(";LANGID=0x0404;CP=950;COUNTRY=0")
    195 #define dbLangKorean _T(";LANGID=0x0412;CP=949;COUNTRY=0")
    196 #define dbLangThai _T(";LANGID=0x041E;CP=874;COUNTRY=0")
    197 #define dbLangSlovenian _T(";LANGID=0x0424;CP=1250;COUNTRY=0")
    198 
    199 #undef INTERFACE
    200 #define INTERFACE _DAOCollection
    201 DECLARE_INTERFACE_(_DAOCollection,IDispatch) {
    202 #ifndef __cplusplus
    203   /* IUnknown methods */
    204   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    205   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    206   STDMETHOD_(ULONG, Release)(THIS) PURE;
    207   /*** IDispatch methods ***/
    208   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    209   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    210   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    211   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    212 #endif
    213   /*** _DAOCollection ***/
    214   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    215   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    216   STDMETHOD(Refresh) (THIS) PURE;
    217 };
    218 
    219 #undef INTERFACE
    220 #define INTERFACE _DAODynaCollection
    221 DECLARE_INTERFACE_(_DAODynaCollection,_DAOCollection) {
    222 #ifndef __cplusplus
    223   /* IUnknown methods */
    224   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    225   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    226   STDMETHOD_(ULONG, Release)(THIS) PURE;
    227   /*** IDispatch methods ***/
    228   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    229   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    230   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    231   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    232   /*** _DAOCollection ***/
    233   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    234   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    235   STDMETHOD(Refresh) (THIS) PURE;
    236 #endif
    237   /*** _DAODynaCollection ***/
    238   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    239   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    240 };
    241 
    242 #undef INTERFACE
    243 #define INTERFACE _DAO
    244 DECLARE_INTERFACE_(_DAO,IDispatch) {
    245 #ifndef __cplusplus
    246   /* IUnknown methods */
    247   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    248   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    249   STDMETHOD_(ULONG, Release)(THIS) PURE;
    250   /*** IDispatch methods ***/
    251   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    252   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    253   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    254   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    255 #endif
    256   /*** _DAO ***/
    257   STDMETHOD(get_Properties) (THIS_ interface DAOProperties **ppprops) PURE;
    258 };
    259 
    260 #undef INTERFACE
    261 #define INTERFACE _DAODBEngine
    262 DECLARE_INTERFACE_(_DAODBEngine,_DAO) {
    263 #ifndef __cplusplus
    264   /* IUnknown methods */
    265   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    266   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    267   STDMETHOD_(ULONG, Release)(THIS) PURE;
    268   /*** IDispatch methods ***/
    269   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    270   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    271   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    272   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    273   /*** _DAO ***/
    274   STDMETHOD(get_Properties) (THIS_ interface DAOProperties **ppprops) PURE;
    275 #endif
    276   STDMETHOD(get_Version) (THIS_ BSTR *pbstr) PURE;
    277   STDMETHOD(get_IniPath) (THIS_ BSTR *pbstr) PURE;
    278   STDMETHOD(put_IniPath) (THIS_ BSTR path) PURE;
    279   STDMETHOD(put_DefaultUser) (THIS_ BSTR user) PURE;
    280   STDMETHOD(put_DefaultPassword) (THIS_ BSTR pw) PURE;
    281   STDMETHOD(get_LoginTimeout) (THIS_ short *ps) PURE;
    282   STDMETHOD(put_LoginTimeout) (THIS_ short Timeout) PURE;
    283   STDMETHOD(get_Workspaces) (THIS_ interface DAOWorkspaces **ppworks) PURE;
    284   STDMETHOD(get_Errors) (THIS_ interface DAOErrors **pperrs) PURE;
    285   STDMETHOD(Idle) (THIS_ VARIANT Action) PURE;
    286   STDMETHOD(CompactDatabase) (THIS_ BSTR SrcName,BSTR DstName,VARIANT DstLocale,VARIANT Options,VARIANT SrcLocale) PURE;
    287   STDMETHOD(RepairDatabase) (THIS_ BSTR Name) PURE;
    288   STDMETHOD(RegisterDatabase) (THIS_ BSTR Dsn,BSTR Driver,VARIANT_BOOL Silent,BSTR Attributes) PURE;
    289   STDMETHOD(_30_CreateWorkspace) (THIS_ BSTR Name,BSTR UserName,BSTR Password, interface DAOWorkspace **ppwrk) PURE;
    290   STDMETHOD(OpenDatabase) (THIS_ BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect, interface DAODatabase **ppdb) PURE;
    291   STDMETHOD(CreateDatabase) (THIS_ BSTR Name,BSTR Locale,VARIANT Option, interface DAODatabase **ppdb) PURE;
    292   STDMETHOD(FreeLocks) (THIS) PURE;
    293   STDMETHOD(BeginTrans) (THIS) PURE;
    294   STDMETHOD(CommitTrans) (THIS_ __LONG32 Option) PURE;
    295   STDMETHOD(Rollback) (THIS) PURE;
    296   STDMETHOD(SetDefaultWorkspace) (THIS_ BSTR Name,BSTR Password) PURE;
    297   STDMETHOD(SetDataAccessOption) (THIS_ short Option,VARIANT Value) PURE;
    298   STDMETHOD(ISAMStats) (THIS_ __LONG32 StatNum,VARIANT Reset,__LONG32 *pl) PURE;
    299   STDMETHOD(get_SystemDB) (THIS_ BSTR *pbstr) PURE;
    300   STDMETHOD(put_SystemDB) (THIS_ BSTR SystemDBPath) PURE;
    301   STDMETHOD(CreateWorkspace) (THIS_ BSTR Name,BSTR UserName,BSTR Password,VARIANT UseType, interface DAOWorkspace **ppwrk) PURE;
    302   STDMETHOD(OpenConnection) (THIS_ BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect, interface DAOConnection **ppconn) PURE;
    303   STDMETHOD(get_DefaultType) (THIS_ __LONG32 *Option) PURE;
    304   STDMETHOD(put_DefaultType) (THIS_ __LONG32 Option) PURE;
    305   STDMETHOD(SetOption) (THIS_ LONG Option,VARIANT Value) PURE;
    306   STDMETHOD(DumpObjects) (THIS_ BSTR *pbstr) PURE;
    307   STDMETHOD(DebugPrint) (THIS_ BSTR bstr) PURE;
    308 };
    309 
    310 #undef INTERFACE
    311 #define INTERFACE DAOError
    312 DECLARE_INTERFACE_(DAOError,IDispatch) {
    313 #ifndef __cplusplus
    314   /* IUnknown methods */
    315   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    316   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    317   STDMETHOD_(ULONG, Release)(THIS) PURE;
    318   /*** IDispatch methods ***/
    319   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    320   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    321   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    322   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    323 #endif
    324   /*** DAOError ***/
    325   STDMETHOD(get_Number) (THIS_ __LONG32 *pl) PURE;
    326   STDMETHOD(get_Source) (THIS_ BSTR *pbstr) PURE;
    327   STDMETHOD(get_Description) (THIS_ BSTR *pbstr) PURE;
    328   STDMETHOD(get_HelpFile) (THIS_ BSTR *pbstr) PURE;
    329   STDMETHOD(get_HelpContext) (THIS_ __LONG32 *pl) PURE;
    330 };
    331 
    332 #undef INTERFACE
    333 #define INTERFACE DAOErrors
    334 DECLARE_INTERFACE_(DAOErrors,_DAOCollection) {
    335 #ifndef __cplusplus
    336   /* IUnknown methods */
    337   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    338   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    339   STDMETHOD_(ULONG, Release)(THIS) PURE;
    340   /*** IDispatch methods ***/
    341   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    342   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    343   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    344   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    345   /*** _DAOCollection ***/
    346   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    347   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    348   STDMETHOD(Refresh) (THIS) PURE;
    349 #endif
    350   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOError **pperr) PURE;
    351 };
    352 
    353 #undef INTERFACE
    354 #define INTERFACE DAOProperty
    355 DECLARE_INTERFACE_(DAOProperty,_DAO) {
    356 #ifndef __cplusplus
    357   /* IUnknown methods */
    358   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    359   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    360   STDMETHOD_(ULONG, Release)(THIS) PURE;
    361   /*** IDispatch methods ***/
    362   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    363   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    364   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    365   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    366   /*** _DAO ***/
    367   STDMETHOD(get_Properties) (THIS_ interface DAOProperties **ppprops) PURE;
    368 #endif
    369   STDMETHOD(get_Value) (THIS_ VARIANT *pval) PURE;
    370   STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
    371   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    372   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
    373   STDMETHOD(get_Type) (THIS_ short *ptype) PURE;
    374   STDMETHOD(put_Type) (THIS_ short type) PURE;
    375   STDMETHOD(get_Inherited) (THIS_ VARIANT_BOOL *pb) PURE;
    376 };
    377 
    378 #undef INTERFACE
    379 #define INTERFACE DAOProperties
    380 DECLARE_INTERFACE_(DAOProperties,_DAODynaCollection) {
    381 #ifndef __cplusplus
    382   /* IUnknown methods */
    383   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    384   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    385   STDMETHOD_(ULONG, Release)(THIS) PURE;
    386   /*** IDispatch methods ***/
    387   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    388   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    389   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    390   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    391   /*** _DAOCollection ***/
    392   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    393   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    394   STDMETHOD(Refresh) (THIS) PURE;
    395   /*** _DAODynaCollection ***/
    396   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    397   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    398 #endif
    399   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOProperty **ppprop) PURE;
    400 };
    401 
    402 #undef INTERFACE
    403 #define INTERFACE DAOWorkspace
    404 DECLARE_INTERFACE_(DAOWorkspace,_DAO) {
    405 #ifndef __cplusplus
    406   /* IUnknown methods */
    407   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    408   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    409   STDMETHOD_(ULONG, Release)(THIS) PURE;
    410   /*** IDispatch methods ***/
    411   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    412   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    413   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    414   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    415   /*** _DAO ***/
    416   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    417 #endif
    418   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    419   STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
    420   STDMETHOD(get_UserName) (THIS_ BSTR *pbstr) PURE;
    421   STDMETHOD(put__30_UserName) (THIS_ BSTR UserName) PURE;
    422   STDMETHOD(put__30_Password) (THIS_ BSTR Password) PURE;
    423   STDMETHOD(get_IsolateODBCTrans) (THIS_ short *ps) PURE;
    424   STDMETHOD(put_IsolateODBCTrans) (THIS_ short s) PURE;
    425   STDMETHOD(get_Databases) (THIS_ interface DAODatabases **ppdbs) PURE;
    426   STDMETHOD(get_Users) (THIS_ interface DAOUsers **ppusrs) PURE;
    427   STDMETHOD(get_Groups) (THIS_ interface DAOGroups **ppgrps) PURE;
    428   STDMETHOD(BeginTrans) (THIS) PURE;
    429   STDMETHOD(CommitTrans) (THIS_ __LONG32 Options) PURE;
    430   STDMETHOD(Close) (THIS) PURE;
    431   STDMETHOD(Rollback) (THIS) PURE;
    432   STDMETHOD(OpenDatabase) (THIS_ BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect, interface DAODatabase **ppdb) PURE;
    433   STDMETHOD(CreateDatabase) (THIS_ BSTR Name,BSTR Connect,VARIANT Option, interface DAODatabase **ppdb) PURE;
    434   STDMETHOD(CreateUser) (THIS_ VARIANT Name,VARIANT PID,VARIANT Password, interface DAOUser **ppusr) PURE;
    435   STDMETHOD(CreateGroup) (THIS_ VARIANT Name,VARIANT PID, interface DAOGroup **ppgrp) PURE;
    436   STDMETHOD(OpenConnection) (THIS_ BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect, interface DAOConnection **ppconn) PURE;
    437   STDMETHOD(get_LoginTimeout) (THIS_ __LONG32 *pTimeout) PURE;
    438   STDMETHOD(put_LoginTimeout) (THIS_ __LONG32 Timeout) PURE;
    439   STDMETHOD(get_DefaultCursorDriver) (THIS_ __LONG32 *pCursorType) PURE;
    440   STDMETHOD(put_DefaultCursorDriver) (THIS_ __LONG32 CursorType) PURE;
    441   STDMETHOD(get_hEnv) (THIS_ LONG *phEnv) PURE;
    442   STDMETHOD(get_Type) (THIS_ LONG *ptype) PURE;
    443   STDMETHOD(get_Connections) (THIS_ interface DAOConnections **ppcns) PURE;
    444 };
    445 
    446 #undef INTERFACE
    447 #define INTERFACE DAOWorkspaces
    448 DECLARE_INTERFACE_(DAOWorkspaces,_DAODynaCollection) {
    449 #ifndef __cplusplus
    450   /* IUnknown methods */
    451   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    452   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    453   STDMETHOD_(ULONG, Release)(THIS) PURE;
    454   /*** IDispatch methods ***/
    455   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    456   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    457   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    458   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    459   /*** _DAOCollection ***/
    460   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    461   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    462   STDMETHOD(Refresh) (THIS) PURE;
    463   /*** _DAODynaCollection ***/
    464   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    465   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    466 #endif
    467   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOWorkspace **ppwrk) PURE;
    468 };
    469 
    470 #undef INTERFACE
    471 #define INTERFACE DAOConnection
    472 DECLARE_INTERFACE_(DAOConnection,IDispatch) {
    473 #ifndef __cplusplus
    474   /* IUnknown methods */
    475   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    476   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    477   STDMETHOD_(ULONG, Release)(THIS) PURE;
    478   /*** IDispatch methods ***/
    479   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    480   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    481   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    482   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    483 #endif
    484   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    485   STDMETHOD(get_Connect) (THIS_ BSTR *pbstr) PURE;
    486   STDMETHOD(get_Database) (THIS_ interface DAODatabase **ppDb) PURE;
    487   STDMETHOD(get_hDbc) (THIS_ LONG *phDbc) PURE;
    488   STDMETHOD(get_QueryTimeout) (THIS_ SHORT *pSeconds) PURE;
    489   STDMETHOD(put_QueryTimeout) (THIS_ SHORT Seconds) PURE;
    490   STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL *pb) PURE;
    491   STDMETHOD(get_RecordsAffected) (THIS_ LONG *pRecords) PURE;
    492   STDMETHOD(get_StillExecuting) (THIS_ VARIANT_BOOL *pStillExec) PURE;
    493   STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL *pStillExec) PURE;
    494   STDMETHOD(get_QueryDefs) (THIS_ interface DAOQueryDefs **ppqdfs) PURE;
    495   STDMETHOD(get_Recordsets) (THIS_ interface DAORecordsets **pprsts) PURE;
    496   STDMETHOD(Cancel) (THIS) PURE;
    497   STDMETHOD(Close) (THIS) PURE;
    498   STDMETHOD(CreateQueryDef) (THIS_ VARIANT Name,VARIANT SQLText, interface DAOQueryDef **ppqdf) PURE;
    499   STDMETHOD(Execute) (THIS_ BSTR Query,VARIANT Options) PURE;
    500   STDMETHOD(OpenRecordset) (THIS_ BSTR Name,VARIANT Type,VARIANT Options,VARIANT LockEdit, interface DAORecordset **pprst) PURE;
    501 };
    502 
    503 #undef INTERFACE
    504 #define INTERFACE DAOConnections
    505 DECLARE_INTERFACE_(DAOConnections,_DAOCollection) {
    506 #ifndef __cplusplus
    507   /* IUnknown methods */
    508   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    509   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    510   STDMETHOD_(ULONG, Release)(THIS) PURE;
    511   /*** IDispatch methods ***/
    512   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    513   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    514   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    515   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    516   /*** _DAOCollection ***/
    517   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    518   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    519   STDMETHOD(Refresh) (THIS) PURE;
    520 #endif
    521   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOConnection **ppconn) PURE;
    522 };
    523 
    524 #undef INTERFACE
    525 #define INTERFACE DAODatabase
    526 DECLARE_INTERFACE_(DAODatabase,_DAO) {
    527 #ifndef __cplusplus
    528   /* IUnknown methods */
    529   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    530   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    531   STDMETHOD_(ULONG, Release)(THIS) PURE;
    532   /*** IDispatch methods ***/
    533   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    534   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    535   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    536   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    537   /*** _DAO ***/
    538   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    539 #endif
    540   STDMETHOD(get_CollatingOrder) (THIS_ LONG *pl) PURE;
    541   STDMETHOD(get_Connect) (THIS_ BSTR *pbstr) PURE;
    542   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    543   STDMETHOD(get_QueryTimeout) (THIS_ short *ps) PURE;
    544   STDMETHOD(put_QueryTimeout) (THIS_ short Timeout) PURE;
    545   STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL *pb) PURE;
    546   STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL *pb) PURE;
    547   STDMETHOD(get_Version) (THIS_ BSTR *pbstr) PURE;
    548   STDMETHOD(get_RecordsAffected) (THIS_ __LONG32 *pl) PURE;
    549   STDMETHOD(get_TableDefs) (THIS_ interface DAOTableDefs **pptdfs) PURE;
    550   STDMETHOD(get_QueryDefs) (THIS_ interface DAOQueryDefs **ppqdfs) PURE;
    551   STDMETHOD(get_Relations) (THIS_ interface DAORelations **pprls) PURE;
    552   STDMETHOD(get_Containers) (THIS_ interface DAOContainers **ppctns) PURE;
    553   STDMETHOD(get_Recordsets) (THIS_ interface DAORecordsets **pprsts) PURE;
    554   STDMETHOD(Close) (THIS) PURE;
    555   STDMETHOD(Execute) (THIS_ BSTR Query,VARIANT Options) PURE;
    556   STDMETHOD(_30_OpenRecordset) (THIS_ BSTR Name,VARIANT Type,VARIANT Options, interface DAORecordset **pprst) PURE;
    557   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    558   STDMETHOD(CreateRelation) (THIS_ VARIANT Name,VARIANT Table,VARIANT ForeignTable,VARIANT Attributes, interface DAORelation **pprel) PURE;
    559   STDMETHOD(CreateTableDef) (THIS_ VARIANT Name,VARIANT Attributes,VARIANT SourceTablename,VARIANT Connect, interface DAOTableDef **pptdf) PURE;
    560   STDMETHOD(BeginTrans) (THIS) PURE;
    561   STDMETHOD(CommitTrans) (THIS_ __LONG32 Options) PURE;
    562   STDMETHOD(Rollback) (THIS) PURE;
    563   STDMETHOD(CreateDynaset) (THIS_ BSTR Name,VARIANT Options,VARIANT Inconsistent, interface DAORecordset **pprst) PURE;
    564   STDMETHOD(CreateQueryDef) (THIS_ VARIANT Name,VARIANT SQLText, interface DAOQueryDef **ppqdf) PURE;
    565   STDMETHOD(CreateSnapshot) (THIS_ BSTR Source,VARIANT Options, interface DAORecordset **pprst) PURE;
    566   STDMETHOD(DeleteQueryDef) (THIS_ BSTR Name) PURE;
    567   STDMETHOD(ExecuteSQL) (THIS_ BSTR SQL,__LONG32 *pl) PURE;
    568   STDMETHOD(ListFields) (THIS_ BSTR Name, interface DAORecordset **pprst) PURE;
    569   STDMETHOD(ListTables) (THIS_ interface DAORecordset **pprst) PURE;
    570   STDMETHOD(OpenQueryDef) (THIS_ BSTR Name, interface DAOQueryDef **ppqdf) PURE;
    571   STDMETHOD(OpenTable) (THIS_ BSTR Name,VARIANT Options, interface DAORecordset **pprst) PURE;
    572   STDMETHOD(get_ReplicaID) (THIS_ BSTR *pbstr) PURE;
    573   STDMETHOD(get_DesignMasterID) (THIS_ BSTR *pbstr) PURE;
    574   STDMETHOD(put_DesignMasterID) (THIS_ BSTR MasterID) PURE;
    575   STDMETHOD(Synchronize) (THIS_ BSTR DbPathName,VARIANT ExchangeType) PURE;
    576   STDMETHOD(MakeReplica) (THIS_ BSTR PathName,BSTR Description,VARIANT Options) PURE;
    577   STDMETHOD(put_Connect) (THIS_ BSTR ODBCConnnect) PURE;
    578   STDMETHOD(NewPassword) (THIS_ BSTR bstrOld,BSTR bstrNew) PURE;
    579   STDMETHOD(OpenRecordset) (THIS_ BSTR Name,VARIANT Type,VARIANT Options,VARIANT LockEdit, interface DAORecordset **pprst) PURE;
    580   STDMETHOD(get_Connection) (THIS_ DAOConnection **ppCn) PURE;
    581   STDMETHOD(PopulatePartial) (THIS_ BSTR DbPathName) PURE;
    582 };
    583 
    584 #undef INTERFACE
    585 #define INTERFACE DAODatabases
    586 DECLARE_INTERFACE_(DAODatabases,_DAOCollection) {
    587 #ifndef __cplusplus
    588   /* IUnknown methods */
    589   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    590   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    591   STDMETHOD_(ULONG, Release)(THIS) PURE;
    592   /*** IDispatch methods ***/
    593   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    594   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    595   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    596   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    597   /*** _DAOCollection ***/
    598   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    599   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    600   STDMETHOD(Refresh) (THIS) PURE;
    601 #endif
    602   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAODatabase **ppdb) PURE;
    603 };
    604 
    605 #undef INTERFACE
    606 #define INTERFACE _DAOTableDef
    607 DECLARE_INTERFACE_(_DAOTableDef,_DAO) {
    608 #ifndef __cplusplus
    609   /* IUnknown methods */
    610   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    611   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    612   STDMETHOD_(ULONG, Release)(THIS) PURE;
    613   /*** IDispatch methods ***/
    614   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    615   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    616   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    617   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    618   /*** _DAO ***/
    619   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    620 #endif
    621   STDMETHOD(get_Attributes) (THIS_ __LONG32 *pl) PURE;
    622   STDMETHOD(put_Attributes) (THIS_ __LONG32 Attributes) PURE;
    623   STDMETHOD(get_Connect) (THIS_ BSTR *pbstr) PURE;
    624   STDMETHOD(put_Connect) (THIS_ BSTR Connection) PURE;
    625   STDMETHOD(get_DateCreated) (THIS_ VARIANT *pvar) PURE;
    626   STDMETHOD(get_LastUpdated) (THIS_ VARIANT *pvar) PURE;
    627   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    628   STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
    629   STDMETHOD(get_SourceTableName) (THIS_ BSTR *pbstr) PURE;
    630   STDMETHOD(put_SourceTableName) (THIS_ BSTR bstr) PURE;
    631   STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL *pb) PURE;
    632   STDMETHOD(get_ValidationText) (THIS_ BSTR *pbstr) PURE;
    633   STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
    634   STDMETHOD(get_ValidationRule) (THIS_ BSTR *pbstr) PURE;
    635   STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
    636   STDMETHOD(get_RecordCount) (THIS_ __LONG32 *pl) PURE;
    637   STDMETHOD(get_Fields) (THIS_ interface DAOFields **ppflds) PURE;
    638   STDMETHOD(get_Indexes) (THIS_ interface DAOIndexes **ppidxs) PURE;
    639   STDMETHOD(OpenRecordset) (THIS_ VARIANT Type,VARIANT Options, interface DAORecordset **pprst) PURE;
    640   STDMETHOD(RefreshLink) (THIS) PURE;
    641   STDMETHOD(CreateField) (THIS_ VARIANT Name,VARIANT Type,VARIANT Size, interface DAOField **ppfld) PURE;
    642   STDMETHOD(CreateIndex) (THIS_ VARIANT Name, interface DAOIndex **ppidx) PURE;
    643   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    644   STDMETHOD(get_ConflictTable) (THIS_ BSTR *pbstr) PURE;
    645   STDMETHOD(get_ReplicaFilter) (THIS_ VARIANT *pFilter) PURE;
    646   STDMETHOD(put_ReplicaFilter) (THIS_ VARIANT Filter) PURE;
    647 };
    648 
    649 #undef INTERFACE
    650 #define INTERFACE DAOTableDefs
    651 DECLARE_INTERFACE_(DAOTableDefs,_DAODynaCollection) {
    652 #ifndef __cplusplus
    653   /* IUnknown methods */
    654   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    655   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    656   STDMETHOD_(ULONG, Release)(THIS) PURE;
    657   /*** IDispatch methods ***/
    658   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    659   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    660   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    661   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    662   /*** _DAOCollection ***/
    663   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    664   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    665   STDMETHOD(Refresh) (THIS) PURE;
    666   /*** _DAODynaCollection ***/
    667   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    668   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    669 #endif
    670   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOTableDef **pptdf) PURE;
    671 };
    672 
    673 #undef INTERFACE
    674 #define INTERFACE _DAOQueryDef
    675 DECLARE_INTERFACE_(_DAOQueryDef,_DAO) {
    676 #ifndef __cplusplus
    677   /* IUnknown methods */
    678   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    679   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    680   STDMETHOD_(ULONG, Release)(THIS) PURE;
    681   /*** IDispatch methods ***/
    682   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    683   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    684   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    685   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    686   /*** _DAO ***/
    687   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    688 #endif
    689   STDMETHOD(get_DateCreated) (THIS_ VARIANT *pvar) PURE;
    690   STDMETHOD(get_LastUpdated) (THIS_ VARIANT *pvar) PURE;
    691   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    692   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
    693   STDMETHOD(get_ODBCTimeout) (THIS_ short *ps) PURE;
    694   STDMETHOD(put_ODBCTimeout) (THIS_ short timeout) PURE;
    695   STDMETHOD(get_Type) (THIS_ short *pi) PURE;
    696   STDMETHOD(get_SQL) (THIS_ BSTR *pbstr) PURE;
    697   STDMETHOD(put_SQL) (THIS_ BSTR bstr) PURE;
    698   STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL *pb) PURE;
    699   STDMETHOD(get_Connect) (THIS_ BSTR *pbstr) PURE;
    700   STDMETHOD(put_Connect) (THIS_ BSTR bstr) PURE;
    701   STDMETHOD(get_ReturnsRecords) (THIS_ VARIANT_BOOL *pb) PURE;
    702   STDMETHOD(put_ReturnsRecords) (THIS_ VARIANT_BOOL f) PURE;
    703   STDMETHOD(get_RecordsAffected) (THIS_ __LONG32 *pl) PURE;
    704   STDMETHOD(get_Fields) (THIS_ interface DAOFields **ppflds) PURE;
    705   STDMETHOD(get_Parameters) (THIS_ interface DAOParameters **ppprms) PURE;
    706   STDMETHOD(Close) (THIS) PURE;
    707   STDMETHOD(_30_OpenRecordset) (THIS_ VARIANT Type,VARIANT Options, interface DAORecordset **pprst) PURE;
    708   STDMETHOD(_30__OpenRecordset) (THIS_ VARIANT Type,VARIANT Options, interface DAORecordset **pprst) PURE;
    709   STDMETHOD(_Copy) (THIS_ DAOQueryDef **ppqdf) PURE;
    710   STDMETHOD(Execute) (THIS_ VARIANT Options) PURE;
    711   STDMETHOD(Compare) (THIS_ DAOQueryDef *pQdef,SHORT *lps) PURE;
    712   STDMETHOD(CreateDynaset) (THIS_ VARIANT Options,VARIANT Inconsistent, interface DAORecordset **pprst) PURE;
    713   STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, interface DAORecordset **pprst) PURE;
    714   STDMETHOD(ListParameters) (THIS_ interface DAORecordset **pprst) PURE;
    715   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    716   STDMETHOD(OpenRecordset) (THIS_ VARIANT Type,VARIANT Options,VARIANT LockEdit, interface DAORecordset **pprst) PURE;
    717   STDMETHOD(_OpenRecordset) (THIS_ VARIANT Type,VARIANT Options,VARIANT LockEdit, interface DAORecordset **pprst) PURE;
    718   STDMETHOD(Cancel) (THIS) PURE;
    719   STDMETHOD(get_hStmt) (THIS_ LONG *phStmt) PURE;
    720   STDMETHOD(get_MaxRecords) (THIS_ LONG *pMxRecs) PURE;
    721   STDMETHOD(put_MaxRecords) (THIS_ LONG MxRecs) PURE;
    722   STDMETHOD(get_StillExecuting) (THIS_ VARIANT_BOOL *pStillExec) PURE;
    723   STDMETHOD(get_CacheSize) (THIS_ __LONG32 *lCacheSize) PURE;
    724   STDMETHOD(put_CacheSize) (THIS_ __LONG32 lCacheSize) PURE;
    725   STDMETHOD(get_Prepare) (THIS_ VARIANT *pb) PURE;
    726   STDMETHOD(put_Prepare) (THIS_ VARIANT f) PURE;
    727 };
    728 
    729 #undef INTERFACE
    730 #define INTERFACE DAOQueryDefs
    731 DECLARE_INTERFACE_(DAOQueryDefs,_DAODynaCollection) {
    732 #ifndef __cplusplus
    733   /* IUnknown methods */
    734   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    735   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    736   STDMETHOD_(ULONG, Release)(THIS) PURE;
    737   /*** IDispatch methods ***/
    738   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    739   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    740   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    741   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    742   /*** _DAOCollection ***/
    743   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    744   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    745   STDMETHOD(Refresh) (THIS) PURE;
    746   /*** _DAODynaCollection ***/
    747   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    748   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    749 #endif
    750   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOQueryDef **ppqdef) PURE;
    751 };
    752 
    753 #undef INTERFACE
    754 #define INTERFACE DAORecordset
    755 DECLARE_INTERFACE_(DAORecordset,_DAO) {
    756 #ifndef __cplusplus
    757   /* IUnknown methods */
    758   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    759   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    760   STDMETHOD_(ULONG, Release)(THIS) PURE;
    761   /*** IDispatch methods ***/
    762   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    763   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    764   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    765   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    766   /*** _DAO ***/
    767   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    768 #endif
    769   STDMETHOD(get_BOF) (THIS_ VARIANT_BOOL *pb) PURE;
    770   STDMETHOD(get_Bookmark) (THIS_ SAFEARRAY **ppsach) PURE;
    771   STDMETHOD(put_Bookmark) (THIS_ SAFEARRAY **psach) PURE;
    772   STDMETHOD(get_Bookmarkable) (THIS_ VARIANT_BOOL *pb) PURE;
    773   STDMETHOD(get_DateCreated) (THIS_ VARIANT *pvar) PURE;
    774   STDMETHOD(get_EOF) (THIS_ VARIANT_BOOL *pb) PURE;
    775   STDMETHOD(get_Filter) (THIS_ BSTR *pbstr) PURE;
    776   STDMETHOD(put_Filter) (THIS_ BSTR Filter) PURE;
    777   STDMETHOD(get_Index) (THIS_ BSTR *pbstr) PURE;
    778   STDMETHOD(put_Index) (THIS_ BSTR bstr) PURE;
    779   STDMETHOD(get_LastModified) (THIS_ SAFEARRAY **ppsa) PURE;
    780   STDMETHOD(get_LastUpdated) (THIS_ VARIANT *pvar) PURE;
    781   STDMETHOD(get_LockEdits) (THIS_ VARIANT_BOOL *pb) PURE;
    782   STDMETHOD(put_LockEdits) (THIS_ VARIANT_BOOL Lock) PURE;
    783   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    784   STDMETHOD(get_NoMatch) (THIS_ VARIANT_BOOL *pb) PURE;
    785   STDMETHOD(get_Sort) (THIS_ BSTR *pbstr) PURE;
    786   STDMETHOD(put_Sort) (THIS_ BSTR Sort) PURE;
    787   STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL *pb) PURE;
    788   STDMETHOD(get_Type) (THIS_ short *ps) PURE;
    789   STDMETHOD(get_RecordCount) (THIS_ __LONG32 *pl) PURE;
    790   STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL *pb) PURE;
    791   STDMETHOD(get_Restartable) (THIS_ VARIANT_BOOL *pb) PURE;
    792   STDMETHOD(get_ValidationText) (THIS_ BSTR *pbstr) PURE;
    793   STDMETHOD(get_ValidationRule) (THIS_ BSTR *pbstr) PURE;
    794   STDMETHOD(get_CacheStart) (THIS_ SAFEARRAY **ppsa) PURE;
    795   STDMETHOD(put_CacheStart) (THIS_ SAFEARRAY **psa) PURE;
    796   STDMETHOD(get_CacheSize) (THIS_ __LONG32 *pl) PURE;
    797   STDMETHOD(put_CacheSize) (THIS_ __LONG32 CacheSize) PURE;
    798   STDMETHOD(get_PercentPosition) (THIS_ float *pd) PURE;
    799   STDMETHOD(put_PercentPosition) (THIS_ float Position) PURE;
    800   STDMETHOD(get_AbsolutePosition) (THIS_ __LONG32 *pl) PURE;
    801   STDMETHOD(put_AbsolutePosition) (THIS_ __LONG32 Position) PURE;
    802   STDMETHOD(get_EditMode) (THIS_ short *pi) PURE;
    803   STDMETHOD(get_ODBCFetchCount) (THIS_ __LONG32 *pl) PURE;
    804   STDMETHOD(get_ODBCFetchDelay) (THIS_ __LONG32 *pl) PURE;
    805   STDMETHOD(get_Parent) (THIS_ DAODatabase **pdb) PURE;
    806   STDMETHOD(get_Fields) (THIS_ interface DAOFields **ppflds) PURE;
    807   STDMETHOD(get_Indexes) (THIS_ interface DAOIndexes **ppidxs) PURE;
    808   STDMETHOD(_30_CancelUpdate) (THIS) PURE;
    809   STDMETHOD(AddNew) (THIS) PURE;
    810   STDMETHOD(Close) (THIS) PURE;
    811   STDMETHOD(OpenRecordset) (THIS_ VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    812   STDMETHOD(Delete) (THIS) PURE;
    813   STDMETHOD(Edit) (THIS) PURE;
    814   STDMETHOD(FindFirst) (THIS_ BSTR Criteria) PURE;
    815   STDMETHOD(FindLast) (THIS_ BSTR Criteria) PURE;
    816   STDMETHOD(FindNext) (THIS_ BSTR Criteria) PURE;
    817   STDMETHOD(FindPrevious) (THIS_ BSTR Criteria) PURE;
    818   STDMETHOD(MoveFirst) (THIS) PURE;
    819   STDMETHOD(_30_MoveLast) (THIS) PURE;
    820   STDMETHOD(MoveNext) (THIS) PURE;
    821   STDMETHOD(MovePrevious) (THIS) PURE;
    822   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;
    823   STDMETHOD(_30_Update) (THIS) PURE;
    824   STDMETHOD(Clone) (THIS_ DAORecordset **pprst) PURE;
    825   STDMETHOD(Requery) (THIS_ VARIANT NewQueryDef) PURE;
    826   STDMETHOD(Move) (THIS_ __LONG32 Rows,VARIANT StartBookmark) PURE;
    827   STDMETHOD(FillCache) (THIS_ VARIANT Rows,VARIANT StartBookmark) PURE;
    828   STDMETHOD(CreateDynaset) (THIS_ VARIANT Options,VARIANT Inconsistent,DAORecordset **pprst) PURE;
    829   STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options,DAORecordset **pprst) PURE;
    830   STDMETHOD(CopyQueryDef) (THIS_ DAOQueryDef **ppqdf) PURE;
    831   STDMETHOD(ListFields) (THIS_ DAORecordset **pprst) PURE;
    832   STDMETHOD(ListIndexes) (THIS_ DAORecordset **pprst) PURE;
    833   STDMETHOD(GetRows) (THIS_ VARIANT NumRows,VARIANT *pvar) PURE;
    834   STDMETHOD(get_Collect) (THIS_ VARIANT Item,VARIANT *pvar) PURE;
    835   STDMETHOD(put_Collect) (THIS_ VARIANT Item,VARIANT value) PURE;
    836   STDMETHOD(Cancel) (THIS) PURE;
    837   STDMETHOD(NextRecordset) (THIS_ VARIANT_BOOL *pb) PURE;
    838   STDMETHOD(get_hStmt) (THIS_ LONG *phStmt) PURE;
    839   STDMETHOD(get_StillExecuting) (THIS_ VARIANT_BOOL *pStillExec) PURE;
    840   STDMETHOD(get_BatchSize) (THIS_ __LONG32 *pl) PURE;
    841   STDMETHOD(put_BatchSize) (THIS_ __LONG32 BatchSize) PURE;
    842   STDMETHOD(get_BatchCollisionCount) (THIS_ __LONG32 *pl) PURE;
    843   STDMETHOD(get_BatchCollisions) (THIS_ VARIANT *pvar) PURE;
    844   STDMETHOD(get_Connection) (THIS_ DAOConnection **ppCn) PURE;
    845   STDMETHOD(putref_Connection) (THIS_ DAOConnection *pNewCn) PURE;
    846   STDMETHOD(get_RecordStatus) (THIS_ short *pi) PURE;
    847   STDMETHOD(get_UpdateOptions) (THIS_ __LONG32 *pl) PURE;
    848   STDMETHOD(put_UpdateOptions) (THIS_ __LONG32 l) PURE;
    849   STDMETHOD(CancelUpdate) (THIS_ __LONG32 UpdateType) PURE;
    850   STDMETHOD(Update) (THIS_ __LONG32 UpdateType,VARIANT_BOOL Force) PURE;
    851   STDMETHOD(MoveLast) (THIS_ __LONG32 Options) PURE;
    852 };
    853 
    854 #undef INTERFACE
    855 #define INTERFACE DAORecordsets
    856 DECLARE_INTERFACE_(DAORecordsets,_DAOCollection) {
    857 #ifndef __cplusplus
    858   /* IUnknown methods */
    859   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    860   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    861   STDMETHOD_(ULONG, Release)(THIS) PURE;
    862   /*** IDispatch methods ***/
    863   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    864   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    865   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    866   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    867   /*** _DAOCollection ***/
    868   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    869   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    870   STDMETHOD(Refresh) (THIS) PURE;
    871 #endif
    872   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAORecordset **pprst) PURE;
    873 };
    874 
    875 #undef INTERFACE
    876 #define INTERFACE _DAOField
    877 DECLARE_INTERFACE_(_DAOField,_DAO) {
    878 #ifndef __cplusplus
    879   /* IUnknown methods */
    880   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    881   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    882   STDMETHOD_(ULONG, Release)(THIS) PURE;
    883   /*** IDispatch methods ***/
    884   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    885   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    886   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    887   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    888   /*** _DAO ***/
    889   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    890 #endif
    891   STDMETHOD(get_CollatingOrder) (THIS_ __LONG32 *pl) PURE;
    892   STDMETHOD(get_Type) (THIS_ short *ps) PURE;
    893   STDMETHOD(put_Type) (THIS_ short Type) PURE;
    894   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    895   STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
    896   STDMETHOD(get_Size) (THIS_ __LONG32 *pl) PURE;
    897   STDMETHOD(put_Size) (THIS_ __LONG32 Size) PURE;
    898   STDMETHOD(get_SourceField) (THIS_ BSTR *pbstr) PURE;
    899   STDMETHOD(get_SourceTable) (THIS_ BSTR *pbstr) PURE;
    900   STDMETHOD(get_Value) (THIS_ VARIANT *pvar) PURE;
    901   STDMETHOD(put_Value) (THIS_ VARIANT Val) PURE;
    902   STDMETHOD(get_Attributes) (THIS_ __LONG32 *pl) PURE;
    903   STDMETHOD(put_Attributes) (THIS_ __LONG32 Attr) PURE;
    904   STDMETHOD(get_OrdinalPosition) (THIS_ short *ps) PURE;
    905   STDMETHOD(put_OrdinalPosition) (THIS_ short Pos) PURE;
    906   STDMETHOD(get_ValidationText) (THIS_ BSTR *pbstr) PURE;
    907   STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
    908   STDMETHOD(get_ValidateOnSet) (THIS_ VARIANT_BOOL *pb) PURE;
    909   STDMETHOD(put_ValidateOnSet) (THIS_ VARIANT_BOOL Validate) PURE;
    910   STDMETHOD(get_ValidationRule) (THIS_ BSTR *pbstr) PURE;
    911   STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
    912   STDMETHOD(get_DefaultValue) (THIS_ VARIANT *pvar) PURE;
    913   STDMETHOD(put_DefaultValue) (THIS_ VARIANT var) PURE;
    914   STDMETHOD(get_Required) (THIS_ VARIANT_BOOL *pb) PURE;
    915   STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fReq) PURE;
    916   STDMETHOD(get_AllowZeroLength) (THIS_ VARIANT_BOOL *pb) PURE;
    917   STDMETHOD(put_AllowZeroLength) (THIS_ VARIANT_BOOL fAllow) PURE;
    918   STDMETHOD(get_DataUpdatable) (THIS_ VARIANT_BOOL *pb) PURE;
    919   STDMETHOD(get_ForeignName) (THIS_ BSTR *pbstr) PURE;
    920   STDMETHOD(put_ForeignName) (THIS_ BSTR bstr) PURE;
    921   STDMETHOD(AppendChunk) (THIS_ VARIANT Val) PURE;
    922   STDMETHOD(GetChunk) (THIS_ __LONG32 Offset,__LONG32 Bytes,VARIANT *pvar) PURE;
    923   STDMETHOD(_30_FieldSize) (THIS_ __LONG32 *pl) PURE;
    924   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    925   STDMETHOD(get_CollectionIndex) (THIS_ short *i) PURE;
    926   STDMETHOD(get_OriginalValue) (THIS_ VARIANT *pvar) PURE;
    927   STDMETHOD(get_VisibleValue) (THIS_ VARIANT *pvar) PURE;
    928   STDMETHOD(get_FieldSize) (THIS_ __LONG32 *pl) PURE;
    929 };
    930 
    931 #undef INTERFACE
    932 #define INTERFACE DAOFields
    933 DECLARE_INTERFACE_(DAOFields,_DAODynaCollection) {
    934 #ifndef __cplusplus
    935   /* IUnknown methods */
    936   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    937   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    938   STDMETHOD_(ULONG, Release)(THIS) PURE;
    939   /*** IDispatch methods ***/
    940   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    941   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    942   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    943   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    944   /*** _DAOCollection ***/
    945   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    946   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    947   STDMETHOD(Refresh) (THIS) PURE;
    948   /*** _DAODynaCollection ***/
    949   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    950   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    951 #endif
    952   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOField **ppfld) PURE;
    953 };
    954 
    955 #undef INTERFACE
    956 #define INTERFACE _DAOIndex
    957 DECLARE_INTERFACE_(_DAOIndex,_DAO) {
    958 #ifndef __cplusplus
    959   /* IUnknown methods */
    960   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    961   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    962   STDMETHOD_(ULONG, Release)(THIS) PURE;
    963   /*** IDispatch methods ***/
    964   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
    965   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
    966   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
    967   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
    968   /*** _DAO ***/
    969   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    970 #endif
    971   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
    972   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
    973   STDMETHOD(get_Foreign) (THIS_ VARIANT_BOOL *pb) PURE;
    974   STDMETHOD(get_Unique) (THIS_ VARIANT_BOOL *pb) PURE;
    975   STDMETHOD(put_Unique) (THIS_ VARIANT_BOOL fUnique) PURE;
    976   STDMETHOD(get_Clustered) (THIS_ VARIANT_BOOL *pb) PURE;
    977   STDMETHOD(put_Clustered) (THIS_ VARIANT_BOOL fClustered) PURE;
    978   STDMETHOD(get_Required) (THIS_ VARIANT_BOOL *pb) PURE;
    979   STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fRequired) PURE;
    980   STDMETHOD(get_IgnoreNulls) (THIS_ VARIANT_BOOL *pb) PURE;
    981   STDMETHOD(put_IgnoreNulls) (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
    982   STDMETHOD(get_Primary) (THIS_ VARIANT_BOOL *pb) PURE;
    983   STDMETHOD(put_Primary) (THIS_ VARIANT_BOOL fPrimary) PURE;
    984   STDMETHOD(get_DistinctCount) (THIS_ __LONG32 *pl) PURE;
    985   STDMETHOD(get_Fields) (THIS_ VARIANT *pv) PURE;
    986   STDMETHOD(put_Fields) (THIS_ VARIANT v) PURE;
    987   STDMETHOD(CreateField) (THIS_ VARIANT Name,VARIANT Type,VARIANT Size,DAOField **ppfld) PURE;
    988   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    989 };
    990 
    991 #undef INTERFACE
    992 #define INTERFACE DAOIndexes
    993 DECLARE_INTERFACE_(DAOIndexes,_DAODynaCollection) {
    994 #ifndef __cplusplus
    995   /* IUnknown methods */
    996   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    997   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    998   STDMETHOD_(ULONG, Release)(THIS) PURE;
    999   /*** IDispatch methods ***/
   1000   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1001   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1002   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1003   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1004   /*** _DAOCollection ***/
   1005   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1006   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1007   STDMETHOD(Refresh) (THIS) PURE;
   1008   /*** _DAODynaCollection ***/
   1009   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
   1010   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
   1011 #endif
   1012   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOIndex **ppidx) PURE;
   1013 };
   1014 
   1015 #undef INTERFACE
   1016 #define INTERFACE DAOParameter
   1017 DECLARE_INTERFACE_(DAOParameter,_DAO) {
   1018 #ifndef __cplusplus
   1019   /* IUnknown methods */
   1020   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1021   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1022   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1023   /*** IDispatch methods ***/
   1024   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1025   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1026   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1027   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1028   /*** _DAO ***/
   1029   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1030 #endif
   1031   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1032   STDMETHOD(get_Value) (THIS_ VARIANT *pvar) PURE;
   1033   STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
   1034   STDMETHOD(get_Type) (THIS_ short *ps) PURE;
   1035   STDMETHOD(put_Type) (THIS_ short s) PURE;
   1036   STDMETHOD(get_Direction) (THIS_ short *pOption) PURE;
   1037   STDMETHOD(put_Direction) (THIS_ short Option) PURE;
   1038 };
   1039 
   1040 #undef INTERFACE
   1041 #define INTERFACE DAOParameters
   1042 DECLARE_INTERFACE_(DAOParameters,_DAOCollection) {
   1043 #ifndef __cplusplus
   1044   /* IUnknown methods */
   1045   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1046   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1047   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1048   /*** IDispatch methods ***/
   1049   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1050   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1051   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1052   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1053   /*** _DAOCollection ***/
   1054   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1055   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1056   STDMETHOD(Refresh) (THIS) PURE;
   1057 #endif
   1058   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOParameter **ppprm) PURE;
   1059 };
   1060 
   1061 #undef INTERFACE
   1062 #define INTERFACE _DAOUser
   1063 DECLARE_INTERFACE_(_DAOUser,_DAO) {
   1064 #ifndef __cplusplus
   1065   /* IUnknown methods */
   1066   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1067   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1068   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1069   /*** IDispatch methods ***/
   1070   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1071   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1072   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1073   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1074   /*** _DAO ***/
   1075   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1076 #endif
   1077   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1078   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
   1079   STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
   1080   STDMETHOD(put_Password) (THIS_ BSTR bstr) PURE;
   1081   STDMETHOD(get_Groups) (THIS_ interface DAOGroups **ppgrps) PURE;
   1082   STDMETHOD(NewPassword) (THIS_ BSTR bstrOld,BSTR bstrNew) PURE;
   1083   STDMETHOD(CreateGroup) (THIS_ VARIANT Name,VARIANT PID, interface DAOGroup **ppgrp) PURE;
   1084 };
   1085 
   1086 #undef INTERFACE
   1087 #define INTERFACE DAOUsers
   1088 DECLARE_INTERFACE_(DAOUsers,_DAODynaCollection) {
   1089 #ifndef __cplusplus
   1090   /* IUnknown methods */
   1091   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1092   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1093   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1094   /*** IDispatch methods ***/
   1095   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1096   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1097   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1098   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1099   /*** _DAOCollection ***/
   1100   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1101   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1102   STDMETHOD(Refresh) (THIS) PURE;
   1103   /*** _DAODynaCollection ***/
   1104   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
   1105   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
   1106 #endif
   1107   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOUser **ppusr) PURE;
   1108 };
   1109 
   1110 #undef INTERFACE
   1111 #define INTERFACE _DAOGroup
   1112 DECLARE_INTERFACE_(_DAOGroup,_DAO) {
   1113 #ifndef __cplusplus
   1114   /* IUnknown methods */
   1115   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1116   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1117   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1118   /*** IDispatch methods ***/
   1119   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1120   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1121   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1122   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1123   /*** _DAO ***/
   1124   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1125 #endif
   1126   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1127   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
   1128   STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
   1129   STDMETHOD(get_Users) (THIS_ DAOUsers **ppusrs) PURE;
   1130   STDMETHOD(CreateUser) (THIS_ VARIANT Name,VARIANT PID,VARIANT Password,DAOUser **ppusr) PURE;
   1131 };
   1132 
   1133 #undef INTERFACE
   1134 #define INTERFACE DAOGroups
   1135 DECLARE_INTERFACE_(DAOGroups,_DAODynaCollection) {
   1136 #ifndef __cplusplus
   1137   /* IUnknown methods */
   1138   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1139   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1140   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1141   /*** IDispatch methods ***/
   1142   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1143   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1144   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1145   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1146   /*** _DAOCollection ***/
   1147   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1148   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1149   STDMETHOD(Refresh) (THIS) PURE;
   1150   /*** _DAODynaCollection ***/
   1151   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
   1152   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
   1153 #endif
   1154   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOGroup **ppgrp) PURE;
   1155 };
   1156 
   1157 #undef INTERFACE
   1158 #define INTERFACE _DAORelation
   1159 DECLARE_INTERFACE_(_DAORelation,_DAO) {
   1160 #ifndef __cplusplus
   1161   /* IUnknown methods */
   1162   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1163   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1164   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1165   /*** IDispatch methods ***/
   1166   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1167   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1168   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1169   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1170   /*** _DAO ***/
   1171   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1172 #endif
   1173   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1174   STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
   1175   STDMETHOD(get_Table) (THIS_ BSTR *pbstr) PURE;
   1176   STDMETHOD(put_Table) (THIS_ BSTR bstr) PURE;
   1177   STDMETHOD(get_ForeignTable) (THIS_ BSTR *pbstr) PURE;
   1178   STDMETHOD(put_ForeignTable) (THIS_ BSTR bstr) PURE;
   1179   STDMETHOD(get_Attributes) (THIS_ __LONG32 *pl) PURE;
   1180   STDMETHOD(put_Attributes) (THIS_ __LONG32 attr) PURE;
   1181   STDMETHOD(get_Fields) (THIS_ DAOFields **ppflds) PURE;
   1182   STDMETHOD(CreateField) (THIS_ VARIANT Name,VARIANT Type,VARIANT Size,DAOField **ppfld) PURE;
   1183   STDMETHOD(get_PartialReplica) (THIS_ VARIANT_BOOL *pfPartialReplica) PURE;
   1184   STDMETHOD(put_PartialReplica) (THIS_ VARIANT_BOOL fPartialReplica) PURE;
   1185 };
   1186 
   1187 #undef INTERFACE
   1188 #define INTERFACE DAORelations
   1189 DECLARE_INTERFACE_(DAORelations,_DAODynaCollection) {
   1190 #ifndef __cplusplus
   1191   /* IUnknown methods */
   1192   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1193   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1194   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1195   /*** IDispatch methods ***/
   1196   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1197   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1198   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1199   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1200   /*** _DAOCollection ***/
   1201   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1202   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1203   STDMETHOD(Refresh) (THIS) PURE;
   1204   /*** _DAODynaCollection ***/
   1205   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
   1206   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
   1207 #endif
   1208   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAORelation **pprel) PURE;
   1209 };
   1210 
   1211 #undef INTERFACE
   1212 #define INTERFACE DAOContainer
   1213 DECLARE_INTERFACE_(DAOContainer,_DAO) {
   1214 #ifndef __cplusplus
   1215   /* IUnknown methods */
   1216   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1217   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1218   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1219   /*** IDispatch methods ***/
   1220   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1221   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1222   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1223   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1224   /*** _DAO ***/
   1225   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1226 #endif
   1227   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1228   STDMETHOD(get_Owner) (THIS_ BSTR *pbstr) PURE;
   1229   STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
   1230   STDMETHOD(get_UserName) (THIS_ BSTR *pbstr) PURE;
   1231   STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
   1232   STDMETHOD(get_Permissions) (THIS_ __LONG32 *pl) PURE;
   1233   STDMETHOD(put_Permissions) (THIS_ __LONG32 permissions) PURE;
   1234   STDMETHOD(get_Inherit) (THIS_ VARIANT_BOOL *pb) PURE;
   1235   STDMETHOD(put_Inherit) (THIS_ VARIANT_BOOL fInherit) PURE;
   1236   STDMETHOD(get_Documents) (THIS_ struct DAODocuments **ppdocs) PURE;
   1237   STDMETHOD(get_AllPermissions) (THIS_ __LONG32 *pl) PURE;
   1238 };
   1239 
   1240 #undef INTERFACE
   1241 #define INTERFACE DAOContainers
   1242 DECLARE_INTERFACE_(DAOContainers,_DAOCollection) {
   1243 #ifndef __cplusplus
   1244   /* IUnknown methods */
   1245   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1246   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1247   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1248   /*** IDispatch methods ***/
   1249   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1250   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1251   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1252   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1253   /*** _DAOCollection ***/
   1254   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1255   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1256   STDMETHOD(Refresh) (THIS) PURE;
   1257 #endif
   1258   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAOContainer **ppctn) PURE;
   1259 };
   1260 
   1261 #undef INTERFACE
   1262 #define INTERFACE DAODocument
   1263 DECLARE_INTERFACE_(DAODocument,_DAO) {
   1264 #ifndef __cplusplus
   1265   /* IUnknown methods */
   1266   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1267   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1268   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1269   /*** IDispatch methods ***/
   1270   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1271   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1272   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1273   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1274   /*** _DAO ***/
   1275   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
   1276 #endif
   1277   STDMETHOD(get_Name) (THIS_ BSTR *pbstr) PURE;
   1278   STDMETHOD(get_Owner) (THIS_ BSTR *pbstr) PURE;
   1279   STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
   1280   STDMETHOD(get_Container) (THIS_ BSTR *pbstr) PURE;
   1281   STDMETHOD(get_UserName) (THIS_ BSTR *pbstr) PURE;
   1282   STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
   1283   STDMETHOD(get_Permissions) (THIS_ __LONG32 *pl) PURE;
   1284   STDMETHOD(put_Permissions) (THIS_ __LONG32 permissions) PURE;
   1285   STDMETHOD(get_DateCreated) (THIS_ VARIANT *pvar) PURE;
   1286   STDMETHOD(get_LastUpdated) (THIS_ VARIANT *pvar) PURE;
   1287   STDMETHOD(get_AllPermissions) (THIS_ __LONG32 *pl) PURE;
   1288   STDMETHOD(CreateProperty) (THIS_ VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
   1289 };
   1290 
   1291 #undef INTERFACE
   1292 #define INTERFACE DAODocuments
   1293 DECLARE_INTERFACE_(DAODocuments,_DAOCollection) {
   1294 #ifndef __cplusplus
   1295   /* IUnknown methods */
   1296   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1297   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1298   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1299   /*** IDispatch methods ***/
   1300   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1301   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1302   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1303   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1304   /*** _DAOCollection ***/
   1305   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1306   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1307   STDMETHOD(Refresh) (THIS) PURE;
   1308 #endif
   1309   STDMETHOD(get_Item) (THIS_ VARIANT Item,DAODocument **ppdoc) PURE;
   1310 };
   1311 
   1312 #undef INTERFACE
   1313 #define INTERFACE DAOIndexFields
   1314 DECLARE_INTERFACE_(DAOIndexFields,_DAODynaCollection) {
   1315 #ifndef __cplusplus
   1316   /* IUnknown methods */
   1317   STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1318   STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1319   STDMETHOD_(ULONG, Release)(THIS) PURE;
   1320   /*** IDispatch methods ***/
   1321   STDMETHOD(GetTypeInfoCount)(THIS_ UINT *pctinfo);
   1322   STDMETHOD(GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
   1323   STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
   1324   STDMETHOD(Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
   1325   /*** _DAOCollection ***/
   1326   STDMETHOD(get_Count) (THIS_ short *c) PURE;
   1327   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
   1328   STDMETHOD(Refresh) (THIS) PURE;
   1329   /*** _DAODynaCollection ***/
   1330   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
   1331   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
   1332 #endif
   1333   STDMETHOD(get_Item) (THIS_ VARIANT Item,VARIANT *pvar) PURE;
   1334 };
   1335 #endif
   1336