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   STDMETHOD(get_Count) (THIS_ short *c) PURE;
    203   STDMETHOD(_NewEnum) (THIS_ IUnknown **ppunk) PURE;
    204   STDMETHOD(Refresh) (THIS) PURE;
    205 };
    206 
    207 #undef INTERFACE
    208 #define INTERFACE _DAODynaCollection
    209 DECLARE_INTERFACE_(_DAODynaCollection,_DAOCollection) {
    210   STDMETHOD(Append) (THIS_ IDispatch *Object) PURE;
    211   STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
    212 };
    213 
    214 #undef INTERFACE
    215 #define INTERFACE _DAO
    216 DECLARE_INTERFACE_(_DAO,IDispatch) {
    217   STDMETHOD(get_Properties) (THIS_ DAOProperties **ppprops) PURE;
    218 };
    219 
    220 #undef INTERFACE
    221 #define INTERFACE _DAODBEngine
    222 DECLARE_INTERFACE_(_DAODBEngine,_DAO) {
    223   STDMETHOD(get_Properties) (DAOProperties **ppprops);
    224   STDMETHOD(get_Version) (BSTR *pbstr) PURE;
    225   STDMETHOD(get_IniPath) (BSTR *pbstr) PURE;
    226   STDMETHOD(put_IniPath) (BSTR path) PURE;
    227   STDMETHOD(put_DefaultUser) (BSTR user) PURE;
    228   STDMETHOD(put_DefaultPassword) (BSTR pw) PURE;
    229   STDMETHOD(get_LoginTimeout) (short *ps) PURE;
    230   STDMETHOD(put_LoginTimeout) (short Timeout) PURE;
    231   STDMETHOD(get_Workspaces) (DAOWorkspaces **ppworks) PURE;
    232   STDMETHOD(get_Errors) (DAOErrors **pperrs) PURE;
    233   STDMETHOD(Idle) (VARIANT Action) PURE;
    234   STDMETHOD(CompactDatabase) (BSTR SrcName,BSTR DstName,VARIANT DstLocale,VARIANT Options,VARIANT SrcLocale) PURE;
    235   STDMETHOD(RepairDatabase) (BSTR Name) PURE;
    236   STDMETHOD(RegisterDatabase) (BSTR Dsn,BSTR Driver,VARIANT_BOOL Silent,BSTR Attributes) PURE;
    237   STDMETHOD(_30_CreateWorkspace) (BSTR Name,BSTR UserName,BSTR Password,DAOWorkspace **ppwrk) PURE;
    238   STDMETHOD(OpenDatabase) (BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect,DAODatabase **ppdb) PURE;
    239   STDMETHOD(CreateDatabase) (BSTR Name,BSTR Locale,VARIANT Option,DAODatabase **ppdb) PURE;
    240   STDMETHOD(FreeLocks) (VOID) PURE;
    241   STDMETHOD(BeginTrans) (VOID) PURE;
    242   STDMETHOD(CommitTrans) (__LONG32 Option) PURE;
    243   STDMETHOD(Rollback) (VOID) PURE;
    244   STDMETHOD(SetDefaultWorkspace) (BSTR Name,BSTR Password) PURE;
    245   STDMETHOD(SetDataAccessOption) (short Option,VARIANT Value) PURE;
    246   STDMETHOD(ISAMStats) (__LONG32 StatNum,VARIANT Reset,__LONG32 *pl) PURE;
    247   STDMETHOD(get_SystemDB) (BSTR *pbstr) PURE;
    248   STDMETHOD(put_SystemDB) (BSTR SystemDBPath) PURE;
    249   STDMETHOD(CreateWorkspace) (BSTR Name,BSTR UserName,BSTR Password,VARIANT UseType,DAOWorkspace **ppwrk) PURE;
    250   STDMETHOD(OpenConnection) (BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect,DAOConnection **ppconn) PURE;
    251   STDMETHOD(get_DefaultType) (__LONG32 *Option) PURE;
    252   STDMETHOD(put_DefaultType) (__LONG32 Option) PURE;
    253   STDMETHOD(SetOption) (LONG Option,VARIANT Value) PURE;
    254   STDMETHOD(DumpObjects) (BSTR *pbstr) PURE;
    255   STDMETHOD(DebugPrint) (BSTR bstr) PURE;
    256 };
    257 
    258 #undef INTERFACE
    259 #define INTERFACE DAOError
    260 DECLARE_INTERFACE_(DAOError,IDispatch) {
    261   STDMETHOD(get_Number) (__LONG32 *pl) PURE;
    262   STDMETHOD(get_Source) (BSTR *pbstr) PURE;
    263   STDMETHOD(get_Description) (BSTR *pbstr) PURE;
    264   STDMETHOD(get_HelpFile) (BSTR *pbstr) PURE;
    265   STDMETHOD(get_HelpContext) (__LONG32 *pl) PURE;
    266 };
    267 
    268 #undef INTERFACE
    269 #define INTERFACE DAOErrors
    270 DECLARE_INTERFACE_(DAOErrors,_DAOCollection) {
    271   STDMETHOD(get_Item) (VARIANT Item,DAOError **pperr) PURE;
    272 };
    273 
    274 #undef INTERFACE
    275 #define INTERFACE DAOProperty
    276 DECLARE_INTERFACE_(DAOProperty,_DAO) {
    277   STDMETHOD(get_Value) (VARIANT *pval) PURE;
    278   STDMETHOD(put_Value) (VARIANT val) PURE;
    279   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    280   STDMETHOD(put_Name) (BSTR bstr) PURE;
    281   STDMETHOD(get_Type) (short *ptype) PURE;
    282   STDMETHOD(put_Type) (short type) PURE;
    283   STDMETHOD(get_Inherited) (VARIANT_BOOL *pb) PURE;
    284 };
    285 
    286 #undef INTERFACE
    287 #define INTERFACE DAOProperties
    288 DECLARE_INTERFACE_(DAOProperties,_DAODynaCollection) {
    289   STDMETHOD(get_Item) (VARIANT Item,DAOProperty **ppprop) PURE;
    290 };
    291 
    292 #undef INTERFACE
    293 #define INTERFACE DAOWorkspace
    294 DECLARE_INTERFACE_(DAOWorkspace,_DAO) {
    295   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    296   STDMETHOD(put_Name) (BSTR Name) PURE;
    297   STDMETHOD(get_UserName) (BSTR *pbstr) PURE;
    298   STDMETHOD(put__30_UserName) (BSTR UserName) PURE;
    299   STDMETHOD(put__30_Password) (BSTR Password) PURE;
    300   STDMETHOD(get_IsolateODBCTrans) (short *ps) PURE;
    301   STDMETHOD(put_IsolateODBCTrans) (short s) PURE;
    302   STDMETHOD(get_Databases) (DAODatabases **ppdbs) PURE;
    303   STDMETHOD(get_Users) (DAOUsers **ppusrs) PURE;
    304   STDMETHOD(get_Groups) (DAOGroups **ppgrps) PURE;
    305   STDMETHOD(BeginTrans) (VOID) PURE;
    306   STDMETHOD(CommitTrans) (__LONG32 Options) PURE;
    307   STDMETHOD(Close) (VOID) PURE;
    308   STDMETHOD(Rollback) (VOID) PURE;
    309   STDMETHOD(OpenDatabase) (BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect,DAODatabase **ppdb) PURE;
    310   STDMETHOD(CreateDatabase) (BSTR Name,BSTR Connect,VARIANT Option,DAODatabase **ppdb) PURE;
    311   STDMETHOD(CreateUser) (VARIANT Name,VARIANT PID,VARIANT Password,DAOUser **ppusr) PURE;
    312   STDMETHOD(CreateGroup) (VARIANT Name,VARIANT PID,DAOGroup **ppgrp) PURE;
    313   STDMETHOD(OpenConnection) (BSTR Name,VARIANT Options,VARIANT ReadOnly,VARIANT Connect,DAOConnection **ppconn) PURE;
    314   STDMETHOD(get_LoginTimeout) (__LONG32 *pTimeout) PURE;
    315   STDMETHOD(put_LoginTimeout) (__LONG32 Timeout) PURE;
    316   STDMETHOD(get_DefaultCursorDriver) (__LONG32 *pCursorType) PURE;
    317   STDMETHOD(put_DefaultCursorDriver) (__LONG32 CursorType) PURE;
    318   STDMETHOD(get_hEnv) (LONG *phEnv) PURE;
    319   STDMETHOD(get_Type) (LONG *ptype) PURE;
    320   STDMETHOD(get_Connections) (DAOConnections **ppcns) PURE;
    321 };
    322 
    323 #undef INTERFACE
    324 #define INTERFACE DAOWorkspaces
    325 DECLARE_INTERFACE_(DAOWorkspaces,_DAODynaCollection) {
    326   STDMETHOD(get_Item) (VARIANT Item,DAOWorkspace **ppwrk) PURE;
    327 };
    328 
    329 #undef INTERFACE
    330 #define INTERFACE DAOConnection
    331 DECLARE_INTERFACE_(DAOConnection,IDispatch) {
    332   STDMETHOD(QueryInterface) (REFIID riid,LPVOID *ppvObj);
    333   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    334   STDMETHOD(get_Connect) (BSTR *pbstr) PURE;
    335   STDMETHOD(get_Database) (DAODatabase **ppDb) PURE;
    336   STDMETHOD(get_hDbc) (LONG *phDbc) PURE;
    337   STDMETHOD(get_QueryTimeout) (SHORT *pSeconds) PURE;
    338   STDMETHOD(put_QueryTimeout) (SHORT Seconds) PURE;
    339   STDMETHOD(get_Transactions) (VARIANT_BOOL *pb) PURE;
    340   STDMETHOD(get_RecordsAffected) (LONG *pRecords) PURE;
    341   STDMETHOD(get_StillExecuting) (VARIANT_BOOL *pStillExec) PURE;
    342   STDMETHOD(get_Updatable) (VARIANT_BOOL *pStillExec) PURE;
    343   STDMETHOD(get_QueryDefs) (DAOQueryDefs **ppqdfs) PURE;
    344   STDMETHOD(get_Recordsets) (DAORecordsets **pprsts) PURE;
    345   STDMETHOD(Cancel) (VOID) PURE;
    346   STDMETHOD(Close) (VOID) PURE;
    347   STDMETHOD(CreateQueryDef) (VARIANT Name,VARIANT SQLText,DAOQueryDef **ppqdf) PURE;
    348   STDMETHOD(Execute) (BSTR Query,VARIANT Options) PURE;
    349   STDMETHOD(OpenRecordset) (BSTR Name,VARIANT Type,VARIANT Options,VARIANT LockEdit,DAORecordset **pprst) PURE;
    350 };
    351 
    352 #undef INTERFACE
    353 #define INTERFACE DAOConnections
    354 DECLARE_INTERFACE_(DAOConnections,_DAOCollection) {
    355   STDMETHOD(get_Item) (VARIANT Item,DAOConnection **ppconn) PURE;
    356 };
    357 
    358 #undef INTERFACE
    359 #define INTERFACE DAODatabase
    360 DECLARE_INTERFACE_(DAODatabase,_DAO) {
    361   STDMETHOD(get_CollatingOrder) (LONG *pl) PURE;
    362   STDMETHOD(get_Connect) (BSTR *pbstr) PURE;
    363   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    364   STDMETHOD(get_QueryTimeout) (short *ps) PURE;
    365   STDMETHOD(put_QueryTimeout) (short Timeout) PURE;
    366   STDMETHOD(get_Transactions) (VARIANT_BOOL *pb) PURE;
    367   STDMETHOD(get_Updatable) (VARIANT_BOOL *pb) PURE;
    368   STDMETHOD(get_Version) (BSTR *pbstr) PURE;
    369   STDMETHOD(get_RecordsAffected) (__LONG32 *pl) PURE;
    370   STDMETHOD(get_TableDefs) (DAOTableDefs **pptdfs) PURE;
    371   STDMETHOD(get_QueryDefs) (DAOQueryDefs **ppqdfs) PURE;
    372   STDMETHOD(get_Relations) (DAORelations **pprls) PURE;
    373   STDMETHOD(get_Containers) (DAOContainers **ppctns) PURE;
    374   STDMETHOD(get_Recordsets) (DAORecordsets **pprsts) PURE;
    375   STDMETHOD(Close) (VOID) PURE;
    376   STDMETHOD(Execute) (BSTR Query,VARIANT Options) PURE;
    377   STDMETHOD(_30_OpenRecordset) (BSTR Name,VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    378   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    379   STDMETHOD(CreateRelation) (VARIANT Name,VARIANT Table,VARIANT ForeignTable,VARIANT Attributes,DAORelation **pprel) PURE;
    380   STDMETHOD(CreateTableDef) (VARIANT Name,VARIANT Attributes,VARIANT SourceTablename,VARIANT Connect,DAOTableDef **pptdf) PURE;
    381   STDMETHOD(BeginTrans) (VOID) PURE;
    382   STDMETHOD(CommitTrans) (__LONG32 Options) PURE;
    383   STDMETHOD(Rollback) (VOID) PURE;
    384   STDMETHOD(CreateDynaset) (BSTR Name,VARIANT Options,VARIANT Inconsistent,DAORecordset **pprst) PURE;
    385   STDMETHOD(CreateQueryDef) (VARIANT Name,VARIANT SQLText,DAOQueryDef **ppqdf) PURE;
    386   STDMETHOD(CreateSnapshot) (BSTR Source,VARIANT Options,DAORecordset **pprst) PURE;
    387   STDMETHOD(DeleteQueryDef) (BSTR Name) PURE;
    388   STDMETHOD(ExecuteSQL) (BSTR SQL,__LONG32 *pl) PURE;
    389   STDMETHOD(ListFields) (BSTR Name,DAORecordset **pprst) PURE;
    390   STDMETHOD(ListTables) (DAORecordset **pprst) PURE;
    391   STDMETHOD(OpenQueryDef) (BSTR Name,DAOQueryDef **ppqdf) PURE;
    392   STDMETHOD(OpenTable) (BSTR Name,VARIANT Options,DAORecordset **pprst) PURE;
    393   STDMETHOD(get_ReplicaID) (BSTR *pbstr) PURE;
    394   STDMETHOD(get_DesignMasterID) (BSTR *pbstr) PURE;
    395   STDMETHOD(put_DesignMasterID) (BSTR MasterID) PURE;
    396   STDMETHOD(Synchronize) (BSTR DbPathName,VARIANT ExchangeType) PURE;
    397   STDMETHOD(MakeReplica) (BSTR PathName,BSTR Description,VARIANT Options) PURE;
    398   STDMETHOD(put_Connect) (BSTR ODBCConnnect) PURE;
    399   STDMETHOD(NewPassword) (BSTR bstrOld,BSTR bstrNew) PURE;
    400   STDMETHOD(OpenRecordset) (BSTR Name,VARIANT Type,VARIANT Options,VARIANT LockEdit,DAORecordset **pprst) PURE;
    401   STDMETHOD(get_Connection) (DAOConnection **ppCn) PURE;
    402   STDMETHOD(PopulatePartial) (BSTR DbPathName) PURE;
    403 };
    404 
    405 #undef INTERFACE
    406 #define INTERFACE DAODatabases
    407 DECLARE_INTERFACE_(DAODatabases,_DAOCollection) {
    408   STDMETHOD(get_Item) (VARIANT Item,DAODatabase **ppdb) PURE;
    409 };
    410 
    411 #undef INTERFACE
    412 #define INTERFACE _DAOTableDef
    413 DECLARE_INTERFACE_(_DAOTableDef,_DAO) {
    414   STDMETHOD(get_Attributes) (__LONG32 *pl) PURE;
    415   STDMETHOD(put_Attributes) (__LONG32 Attributes) PURE;
    416   STDMETHOD(get_Connect) (BSTR *pbstr) PURE;
    417   STDMETHOD(put_Connect) (BSTR Connection) PURE;
    418   STDMETHOD(get_DateCreated) (VARIANT *pvar) PURE;
    419   STDMETHOD(get_LastUpdated) (VARIANT *pvar) PURE;
    420   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    421   STDMETHOD(put_Name) (BSTR Name) PURE;
    422   STDMETHOD(get_SourceTableName) (BSTR *pbstr) PURE;
    423   STDMETHOD(put_SourceTableName) (BSTR bstr) PURE;
    424   STDMETHOD(get_Updatable) (VARIANT_BOOL *pb) PURE;
    425   STDMETHOD(get_ValidationText) (BSTR *pbstr) PURE;
    426   STDMETHOD(put_ValidationText) (BSTR bstr) PURE;
    427   STDMETHOD(get_ValidationRule) (BSTR *pbstr) PURE;
    428   STDMETHOD(put_ValidationRule) (BSTR bstr) PURE;
    429   STDMETHOD(get_RecordCount) (__LONG32 *pl) PURE;
    430   STDMETHOD(get_Fields) (DAOFields **ppflds) PURE;
    431   STDMETHOD(get_Indexes) (DAOIndexes **ppidxs) PURE;
    432   STDMETHOD(OpenRecordset) (VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    433   STDMETHOD(RefreshLink) (VOID) PURE;
    434   STDMETHOD(CreateField) (VARIANT Name,VARIANT Type,VARIANT Size,DAOField **ppfld) PURE;
    435   STDMETHOD(CreateIndex) (VARIANT Name,DAOIndex **ppidx) PURE;
    436   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    437   STDMETHOD(get_ConflictTable) (BSTR *pbstr) PURE;
    438   STDMETHOD(get_ReplicaFilter) (VARIANT *pFilter) PURE;
    439   STDMETHOD(put_ReplicaFilter) (VARIANT Filter) PURE;
    440 };
    441 
    442 #undef INTERFACE
    443 #define INTERFACE DAOTableDefs
    444 DECLARE_INTERFACE_(DAOTableDefs,_DAODynaCollection) {
    445   STDMETHOD(get_Item) (VARIANT Item,DAOTableDef **pptdf) PURE;
    446 };
    447 
    448 #undef INTERFACE
    449 #define INTERFACE _DAOQueryDef
    450 DECLARE_INTERFACE_(_DAOQueryDef,_DAO) {
    451   STDMETHOD(get_DateCreated) (VARIANT *pvar) PURE;
    452   STDMETHOD(get_LastUpdated) (VARIANT *pvar) PURE;
    453   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    454   STDMETHOD(put_Name) (BSTR bstr) PURE;
    455   STDMETHOD(get_ODBCTimeout) (short *ps) PURE;
    456   STDMETHOD(put_ODBCTimeout) (short timeout) PURE;
    457   STDMETHOD(get_Type) (short *pi) PURE;
    458   STDMETHOD(get_SQL) (BSTR *pbstr) PURE;
    459   STDMETHOD(put_SQL) (BSTR bstr) PURE;
    460   STDMETHOD(get_Updatable) (VARIANT_BOOL *pb) PURE;
    461   STDMETHOD(get_Connect) (BSTR *pbstr) PURE;
    462   STDMETHOD(put_Connect) (BSTR bstr) PURE;
    463   STDMETHOD(get_ReturnsRecords) (VARIANT_BOOL *pb) PURE;
    464   STDMETHOD(put_ReturnsRecords) (VARIANT_BOOL f) PURE;
    465   STDMETHOD(get_RecordsAffected) (__LONG32 *pl) PURE;
    466   STDMETHOD(get_Fields) (DAOFields **ppflds) PURE;
    467   STDMETHOD(get_Parameters) (DAOParameters **ppprms) PURE;
    468   STDMETHOD(Close) (VOID) PURE;
    469   STDMETHOD(_30_OpenRecordset) (VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    470   STDMETHOD(_30__OpenRecordset) (VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    471   STDMETHOD(_Copy) (DAOQueryDef **ppqdf) PURE;
    472   STDMETHOD(Execute) (VARIANT Options) PURE;
    473   STDMETHOD(Compare) (DAOQueryDef *pQdef,SHORT *lps) PURE;
    474   STDMETHOD(CreateDynaset) (VARIANT Options,VARIANT Inconsistent,DAORecordset **pprst) PURE;
    475   STDMETHOD(CreateSnapshot) (VARIANT Options,DAORecordset **pprst) PURE;
    476   STDMETHOD(ListParameters) (DAORecordset **pprst) PURE;
    477   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    478   STDMETHOD(OpenRecordset) (VARIANT Type,VARIANT Options,VARIANT LockEdit,DAORecordset **pprst) PURE;
    479   STDMETHOD(_OpenRecordset) (VARIANT Type,VARIANT Options,VARIANT LockEdit,DAORecordset **pprst) PURE;
    480   STDMETHOD(Cancel) (VOID) PURE;
    481   STDMETHOD(get_hStmt) (LONG *phStmt) PURE;
    482   STDMETHOD(get_MaxRecords) (LONG *pMxRecs) PURE;
    483   STDMETHOD(put_MaxRecords) (LONG MxRecs) PURE;
    484   STDMETHOD(get_StillExecuting) (VARIANT_BOOL *pStillExec) PURE;
    485   STDMETHOD(get_CacheSize) (__LONG32 *lCacheSize) PURE;
    486   STDMETHOD(put_CacheSize) (__LONG32 lCacheSize) PURE;
    487   STDMETHOD(get_Prepare) (VARIANT *pb) PURE;
    488   STDMETHOD(put_Prepare) (VARIANT f) PURE;
    489 };
    490 
    491 #undef INTERFACE
    492 #define INTERFACE DAOQueryDefs
    493 DECLARE_INTERFACE_(DAOQueryDefs,_DAODynaCollection) {
    494   STDMETHOD(get_Item) (VARIANT Item,DAOQueryDef **ppqdef) PURE;
    495 };
    496 
    497 #undef INTERFACE
    498 #define INTERFACE DAORecordset
    499 DECLARE_INTERFACE_(DAORecordset,_DAO) {
    500   STDMETHOD(GetIDsOfNames) (REFIID riid,OLECHAR **rgszNames,UINT cNames,LCID lcid,DISPID *rgdispid);
    501   STDMETHOD(Invoke) (DISPID dispidMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pdispparams,VARIANT *pvarResult,EXCEPINFO *pexcepinfo,UINT *puArgErr);
    502   STDMETHOD(get_BOF) (VARIANT_BOOL *pb) PURE;
    503   STDMETHOD(get_Bookmark) (SAFEARRAY **ppsach) PURE;
    504   STDMETHOD(put_Bookmark) (SAFEARRAY **psach) PURE;
    505   STDMETHOD(get_Bookmarkable) (VARIANT_BOOL *pb) PURE;
    506   STDMETHOD(get_DateCreated) (VARIANT *pvar) PURE;
    507   STDMETHOD(get_EOF) (VARIANT_BOOL *pb) PURE;
    508   STDMETHOD(get_Filter) (BSTR *pbstr) PURE;
    509   STDMETHOD(put_Filter) (BSTR Filter) PURE;
    510   STDMETHOD(get_Index) (BSTR *pbstr) PURE;
    511   STDMETHOD(put_Index) (BSTR bstr) PURE;
    512   STDMETHOD(get_LastModified) (SAFEARRAY **ppsa) PURE;
    513   STDMETHOD(get_LastUpdated) (VARIANT *pvar) PURE;
    514   STDMETHOD(get_LockEdits) (VARIANT_BOOL *pb) PURE;
    515   STDMETHOD(put_LockEdits) (VARIANT_BOOL Lock) PURE;
    516   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    517   STDMETHOD(get_NoMatch) (VARIANT_BOOL *pb) PURE;
    518   STDMETHOD(get_Sort) (BSTR *pbstr) PURE;
    519   STDMETHOD(put_Sort) (BSTR Sort) PURE;
    520   STDMETHOD(get_Transactions) (VARIANT_BOOL *pb) PURE;
    521   STDMETHOD(get_Type) (short *ps) PURE;
    522   STDMETHOD(get_RecordCount) (__LONG32 *pl) PURE;
    523   STDMETHOD(get_Updatable) (VARIANT_BOOL *pb) PURE;
    524   STDMETHOD(get_Restartable) (VARIANT_BOOL *pb) PURE;
    525   STDMETHOD(get_ValidationText) (BSTR *pbstr) PURE;
    526   STDMETHOD(get_ValidationRule) (BSTR *pbstr) PURE;
    527   STDMETHOD(get_CacheStart) (SAFEARRAY **ppsa) PURE;
    528   STDMETHOD(put_CacheStart) (SAFEARRAY **psa) PURE;
    529   STDMETHOD(get_CacheSize) (__LONG32 *pl) PURE;
    530   STDMETHOD(put_CacheSize) (__LONG32 CacheSize) PURE;
    531   STDMETHOD(get_PercentPosition) (float *pd) PURE;
    532   STDMETHOD(put_PercentPosition) (float Position) PURE;
    533   STDMETHOD(get_AbsolutePosition) (__LONG32 *pl) PURE;
    534   STDMETHOD(put_AbsolutePosition) (__LONG32 Position) PURE;
    535   STDMETHOD(get_EditMode) (short *pi) PURE;
    536   STDMETHOD(get_ODBCFetchCount) (__LONG32 *pl) PURE;
    537   STDMETHOD(get_ODBCFetchDelay) (__LONG32 *pl) PURE;
    538   STDMETHOD(get_Parent) (DAODatabase **pdb) PURE;
    539   STDMETHOD(get_Fields) (DAOFields **ppflds) PURE;
    540   STDMETHOD(get_Indexes) (DAOIndexes **ppidxs) PURE;
    541   STDMETHOD(_30_CancelUpdate) (VOID) PURE;
    542   STDMETHOD(AddNew) (VOID) PURE;
    543   STDMETHOD(Close) (VOID) PURE;
    544   STDMETHOD(OpenRecordset) (VARIANT Type,VARIANT Options,DAORecordset **pprst) PURE;
    545   STDMETHOD(Delete) (VOID) PURE;
    546   STDMETHOD(Edit) (VOID) PURE;
    547   STDMETHOD(FindFirst) (BSTR Criteria) PURE;
    548   STDMETHOD(FindLast) (BSTR Criteria) PURE;
    549   STDMETHOD(FindNext) (BSTR Criteria) PURE;
    550   STDMETHOD(FindPrevious) (BSTR Criteria) PURE;
    551   STDMETHOD(MoveFirst) (VOID) PURE;
    552   STDMETHOD(_30_MoveLast) (VOID) PURE;
    553   STDMETHOD(MoveNext) (VOID) PURE;
    554   STDMETHOD(MovePrevious) (VOID) PURE;
    555   STDMETHOD(Seek) (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;
    556   STDMETHOD(_30_Update) (VOID) PURE;
    557   STDMETHOD(Clone) (DAORecordset **pprst) PURE;
    558   STDMETHOD(Requery) (VARIANT NewQueryDef) PURE;
    559   STDMETHOD(Move) (__LONG32 Rows,VARIANT StartBookmark) PURE;
    560   STDMETHOD(FillCache) (VARIANT Rows,VARIANT StartBookmark) PURE;
    561   STDMETHOD(CreateDynaset) (VARIANT Options,VARIANT Inconsistent,DAORecordset **pprst) PURE;
    562   STDMETHOD(CreateSnapshot) (VARIANT Options,DAORecordset **pprst) PURE;
    563   STDMETHOD(CopyQueryDef) (DAOQueryDef **ppqdf) PURE;
    564   STDMETHOD(ListFields) (DAORecordset **pprst) PURE;
    565   STDMETHOD(ListIndexes) (DAORecordset **pprst) PURE;
    566   STDMETHOD(GetRows) (VARIANT NumRows,VARIANT *pvar) PURE;
    567   STDMETHOD(get_Collect) (VARIANT Item,VARIANT *pvar) PURE;
    568   STDMETHOD(put_Collect) (VARIANT Item,VARIANT value) PURE;
    569   STDMETHOD(Cancel) (VOID) PURE;
    570   STDMETHOD(NextRecordset) (VARIANT_BOOL *pb) PURE;
    571   STDMETHOD(get_hStmt) (LONG *phStmt) PURE;
    572   STDMETHOD(get_StillExecuting) (VARIANT_BOOL *pStillExec) PURE;
    573   STDMETHOD(get_BatchSize) (__LONG32 *pl) PURE;
    574   STDMETHOD(put_BatchSize) (__LONG32 BatchSize) PURE;
    575   STDMETHOD(get_BatchCollisionCount) (__LONG32 *pl) PURE;
    576   STDMETHOD(get_BatchCollisions) (VARIANT *pvar) PURE;
    577   STDMETHOD(get_Connection) (DAOConnection **ppCn) PURE;
    578   STDMETHOD(putref_Connection) (DAOConnection *pNewCn) PURE;
    579   STDMETHOD(get_RecordStatus) (short *pi) PURE;
    580   STDMETHOD(get_UpdateOptions) (__LONG32 *pl) PURE;
    581   STDMETHOD(put_UpdateOptions) (__LONG32 l) PURE;
    582   STDMETHOD(CancelUpdate) (__LONG32 UpdateType) PURE;
    583   STDMETHOD(Update) (__LONG32 UpdateType,VARIANT_BOOL Force) PURE;
    584   STDMETHOD(MoveLast) (__LONG32 Options) PURE;
    585 };
    586 
    587 #undef INTERFACE
    588 #define INTERFACE DAORecordsets
    589 DECLARE_INTERFACE_(DAORecordsets,_DAOCollection) {
    590   STDMETHOD(get_Item) (VARIANT Item,DAORecordset **pprst) PURE;
    591 };
    592 
    593 #undef INTERFACE
    594 #define INTERFACE _DAOField
    595 DECLARE_INTERFACE_(_DAOField,_DAO) {
    596   STDMETHOD(get_CollatingOrder) (__LONG32 *pl) PURE;
    597   STDMETHOD(get_Type) (short *ps) PURE;
    598   STDMETHOD(put_Type) (short Type) PURE;
    599   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    600   STDMETHOD(put_Name) (BSTR Name) PURE;
    601   STDMETHOD(get_Size) (__LONG32 *pl) PURE;
    602   STDMETHOD(put_Size) (__LONG32 Size) PURE;
    603   STDMETHOD(get_SourceField) (BSTR *pbstr) PURE;
    604   STDMETHOD(get_SourceTable) (BSTR *pbstr) PURE;
    605   STDMETHOD(get_Value) (VARIANT *pvar) PURE;
    606   STDMETHOD(put_Value) (VARIANT Val) PURE;
    607   STDMETHOD(get_Attributes) (__LONG32 *pl) PURE;
    608   STDMETHOD(put_Attributes) (__LONG32 Attr) PURE;
    609   STDMETHOD(get_OrdinalPosition) (short *ps) PURE;
    610   STDMETHOD(put_OrdinalPosition) (short Pos) PURE;
    611   STDMETHOD(get_ValidationText) (BSTR *pbstr) PURE;
    612   STDMETHOD(put_ValidationText) (BSTR bstr) PURE;
    613   STDMETHOD(get_ValidateOnSet) (VARIANT_BOOL *pb) PURE;
    614   STDMETHOD(put_ValidateOnSet) (VARIANT_BOOL Validate) PURE;
    615   STDMETHOD(get_ValidationRule) (BSTR *pbstr) PURE;
    616   STDMETHOD(put_ValidationRule) (BSTR bstr) PURE;
    617   STDMETHOD(get_DefaultValue) (VARIANT *pvar) PURE;
    618   STDMETHOD(put_DefaultValue) (VARIANT var) PURE;
    619   STDMETHOD(get_Required) (VARIANT_BOOL *pb) PURE;
    620   STDMETHOD(put_Required) (VARIANT_BOOL fReq) PURE;
    621   STDMETHOD(get_AllowZeroLength) (VARIANT_BOOL *pb) PURE;
    622   STDMETHOD(put_AllowZeroLength) (VARIANT_BOOL fAllow) PURE;
    623   STDMETHOD(get_DataUpdatable) (VARIANT_BOOL *pb) PURE;
    624   STDMETHOD(get_ForeignName) (BSTR *pbstr) PURE;
    625   STDMETHOD(put_ForeignName) (BSTR bstr) PURE;
    626   STDMETHOD(AppendChunk) (VARIANT Val) PURE;
    627   STDMETHOD(GetChunk) (__LONG32 Offset,__LONG32 Bytes,VARIANT *pvar) PURE;
    628   STDMETHOD(_30_FieldSize) (__LONG32 *pl) PURE;
    629   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    630   STDMETHOD(get_CollectionIndex) (short *i) PURE;
    631   STDMETHOD(get_OriginalValue) (VARIANT *pvar) PURE;
    632   STDMETHOD(get_VisibleValue) (VARIANT *pvar) PURE;
    633   STDMETHOD(get_FieldSize) (__LONG32 *pl) PURE;
    634 };
    635 
    636 #undef INTERFACE
    637 #define INTERFACE DAOFields
    638 DECLARE_INTERFACE_(DAOFields,_DAODynaCollection) {
    639   STDMETHOD(get_Item) (VARIANT Item,DAOField **ppfld) PURE;
    640 };
    641 
    642 #undef INTERFACE
    643 #define INTERFACE _DAOIndex
    644 DECLARE_INTERFACE_(_DAOIndex,_DAO) {
    645   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    646   STDMETHOD(put_Name) (BSTR bstr) PURE;
    647   STDMETHOD(get_Foreign) (VARIANT_BOOL *pb) PURE;
    648   STDMETHOD(get_Unique) (VARIANT_BOOL *pb) PURE;
    649   STDMETHOD(put_Unique) (VARIANT_BOOL fUnique) PURE;
    650   STDMETHOD(get_Clustered) (VARIANT_BOOL *pb) PURE;
    651   STDMETHOD(put_Clustered) (VARIANT_BOOL fClustered) PURE;
    652   STDMETHOD(get_Required) (VARIANT_BOOL *pb) PURE;
    653   STDMETHOD(put_Required) (VARIANT_BOOL fRequired) PURE;
    654   STDMETHOD(get_IgnoreNulls) (VARIANT_BOOL *pb) PURE;
    655   STDMETHOD(put_IgnoreNulls) (VARIANT_BOOL fIgnoreNulls) PURE;
    656   STDMETHOD(get_Primary) (VARIANT_BOOL *pb) PURE;
    657   STDMETHOD(put_Primary) (VARIANT_BOOL fPrimary) PURE;
    658   STDMETHOD(get_DistinctCount) (__LONG32 *pl) PURE;
    659   STDMETHOD(get_Fields) (VARIANT *pv) PURE;
    660   STDMETHOD(put_Fields) (VARIANT v) PURE;
    661   STDMETHOD(CreateField) (VARIANT Name,VARIANT Type,VARIANT Size,DAOField **ppfld) PURE;
    662   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    663 };
    664 
    665 #undef INTERFACE
    666 #define INTERFACE DAOIndexes
    667 DECLARE_INTERFACE_(DAOIndexes,_DAODynaCollection) {
    668   STDMETHOD(get_Item) (VARIANT Item,DAOIndex **ppidx) PURE;
    669 };
    670 
    671 #undef INTERFACE
    672 #define INTERFACE DAOParameter
    673 DECLARE_INTERFACE_(DAOParameter,_DAO) {
    674   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    675   STDMETHOD(get_Value) (VARIANT *pvar) PURE;
    676   STDMETHOD(put_Value) (VARIANT val) PURE;
    677   STDMETHOD(get_Type) (short *ps) PURE;
    678   STDMETHOD(put_Type) (short s) PURE;
    679   STDMETHOD(get_Direction) (short *pOption) PURE;
    680   STDMETHOD(put_Direction) (short Option) PURE;
    681 };
    682 
    683 #undef INTERFACE
    684 #define INTERFACE DAOParameters
    685 DECLARE_INTERFACE_(DAOParameters,_DAOCollection) {
    686   STDMETHOD(get_Item) (VARIANT Item,DAOParameter **ppprm) PURE;
    687 };
    688 
    689 #undef INTERFACE
    690 #define INTERFACE _DAOUser
    691 DECLARE_INTERFACE_(_DAOUser,_DAO) {
    692   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    693   STDMETHOD(put_Name) (BSTR bstr) PURE;
    694   STDMETHOD(put_PID) (BSTR bstr) PURE;
    695   STDMETHOD(put_Password) (BSTR bstr) PURE;
    696   STDMETHOD(get_Groups) (DAOGroups **ppgrps) PURE;
    697   STDMETHOD(NewPassword) (BSTR bstrOld,BSTR bstrNew) PURE;
    698   STDMETHOD(CreateGroup) (VARIANT Name,VARIANT PID,DAOGroup **ppgrp) PURE;
    699 };
    700 
    701 #undef INTERFACE
    702 #define INTERFACE DAOUsers
    703 DECLARE_INTERFACE_(DAOUsers,_DAODynaCollection) {
    704   STDMETHOD(get_Item) (VARIANT Item,DAOUser **ppusr) PURE;
    705 };
    706 
    707 #undef INTERFACE
    708 #define INTERFACE _DAOGroup
    709 DECLARE_INTERFACE_(_DAOGroup,_DAO) {
    710   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    711   STDMETHOD(put_Name) (BSTR bstr) PURE;
    712   STDMETHOD(put_PID) (BSTR bstr) PURE;
    713   STDMETHOD(get_Users) (DAOUsers **ppusrs) PURE;
    714   STDMETHOD(CreateUser) (VARIANT Name,VARIANT PID,VARIANT Password,DAOUser **ppusr) PURE;
    715 };
    716 
    717 #undef INTERFACE
    718 #define INTERFACE DAOGroups
    719 DECLARE_INTERFACE_(DAOGroups,_DAODynaCollection) {
    720   STDMETHOD(get_Item) (VARIANT Item,DAOGroup **ppgrp) PURE;
    721 };
    722 
    723 #undef INTERFACE
    724 #define INTERFACE _DAORelation
    725 DECLARE_INTERFACE_(_DAORelation,_DAO) {
    726   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    727   STDMETHOD(put_Name) (BSTR bstr) PURE;
    728   STDMETHOD(get_Table) (BSTR *pbstr) PURE;
    729   STDMETHOD(put_Table) (BSTR bstr) PURE;
    730   STDMETHOD(get_ForeignTable) (BSTR *pbstr) PURE;
    731   STDMETHOD(put_ForeignTable) (BSTR bstr) PURE;
    732   STDMETHOD(get_Attributes) (__LONG32 *pl) PURE;
    733   STDMETHOD(put_Attributes) (__LONG32 attr) PURE;
    734   STDMETHOD(get_Fields) (DAOFields **ppflds) PURE;
    735   STDMETHOD(CreateField) (VARIANT Name,VARIANT Type,VARIANT Size,DAOField **ppfld) PURE;
    736   STDMETHOD(get_PartialReplica) (VARIANT_BOOL *pfPartialReplica) PURE;
    737   STDMETHOD(put_PartialReplica) (VARIANT_BOOL fPartialReplica) PURE;
    738 };
    739 
    740 #undef INTERFACE
    741 #define INTERFACE DAORelations
    742 DECLARE_INTERFACE_(DAORelations,_DAODynaCollection) {
    743   STDMETHOD(get_Item) (VARIANT Item,DAORelation **pprel) PURE;
    744 };
    745 
    746 #undef INTERFACE
    747 #define INTERFACE DAOContainer
    748 DECLARE_INTERFACE_(DAOContainer,_DAO) {
    749   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    750   STDMETHOD(get_Owner) (BSTR *pbstr) PURE;
    751   STDMETHOD(put_Owner) (BSTR bstr) PURE;
    752   STDMETHOD(get_UserName) (BSTR *pbstr) PURE;
    753   STDMETHOD(put_UserName) (BSTR bstr) PURE;
    754   STDMETHOD(get_Permissions) (__LONG32 *pl) PURE;
    755   STDMETHOD(put_Permissions) (__LONG32 permissions) PURE;
    756   STDMETHOD(get_Inherit) (VARIANT_BOOL *pb) PURE;
    757   STDMETHOD(put_Inherit) (VARIANT_BOOL fInherit) PURE;
    758   STDMETHOD(get_Documents) (DAODocuments **ppdocs) PURE;
    759   STDMETHOD(get_AllPermissions) (__LONG32 *pl) PURE;
    760 };
    761 
    762 #undef INTERFACE
    763 #define INTERFACE DAOContainers
    764 DECLARE_INTERFACE_(DAOContainers,_DAOCollection) {
    765   STDMETHOD(get_Item) (VARIANT Item,DAOContainer **ppctn) PURE;
    766 };
    767 
    768 #undef INTERFACE
    769 #define INTERFACE DAODocument
    770 DECLARE_INTERFACE_(DAODocument,_DAO) {
    771   STDMETHOD(get_Name) (BSTR *pbstr) PURE;
    772   STDMETHOD(get_Owner) (BSTR *pbstr) PURE;
    773   STDMETHOD(put_Owner) (BSTR bstr) PURE;
    774   STDMETHOD(get_Container) (BSTR *pbstr) PURE;
    775   STDMETHOD(get_UserName) (BSTR *pbstr) PURE;
    776   STDMETHOD(put_UserName) (BSTR bstr) PURE;
    777   STDMETHOD(get_Permissions) (__LONG32 *pl) PURE;
    778   STDMETHOD(put_Permissions) (__LONG32 permissions) PURE;
    779   STDMETHOD(get_DateCreated) (VARIANT *pvar) PURE;
    780   STDMETHOD(get_LastUpdated) (VARIANT *pvar) PURE;
    781   STDMETHOD(get_AllPermissions) (__LONG32 *pl) PURE;
    782   STDMETHOD(CreateProperty) (VARIANT Name,VARIANT Type,VARIANT Value,VARIANT DDL,DAOProperty **pprp) PURE;
    783 };
    784 
    785 #undef INTERFACE
    786 #define INTERFACE DAODocuments
    787 DECLARE_INTERFACE_(DAODocuments,_DAOCollection) {
    788   STDMETHOD(get_Item) (VARIANT Item,DAODocument **ppdoc) PURE;
    789 };
    790 
    791 #undef INTERFACE
    792 #define INTERFACE DAOIndexFields
    793 DECLARE_INTERFACE_(DAOIndexFields,_DAODynaCollection) {
    794   STDMETHOD(get_Item) (VARIANT Item,VARIANT *pvar) PURE;
    795 };
    796 #endif
    797