/************************************************************************ ** D B D A O . H * ** * ************************************************************************* ** Copyright (C) 1996 by Microsoft Corporation * ** All Rights Reserved * ************************************************************************/ /* DBDAO.H Class definitions for ddao SDK. This is a part of the Microsoft Data Access Objects SDK library. See the DAO SDK help information for detailed information regarding the Microsoft Data Access Objects SDK product. */ #ifndef _DBDAO_H_ #define _DBDAO_H_ // Ignore warning "non dll-interface class 'X' used as base for dll-interface class 'Y' #pragma warning( disable : 4275 ) //DAO must be built with an MFC version >= 4.2 (or you'll get memory problems with CStrings) #if _MFC_VER < 0x0420 #error The DAOSDK 3.5 libraries will not operate correctly if built with MFC older than 4.2 #endif #ifndef DAO35 #define DAO35 #endif #include #include #include // Decorations #define CONSTRUCTOR #define DESTRUCTOR //Disable export #ifndef DLLEXPORT #define DLLEXPORT __declspec( dllexport ) #endif //Macro to convert HRESULT to IDA #define DBERR(x) SCODE_CODE(GetScode(x)) // Include internal DAO definitions #include <_dbdao.h> // DAO Recordset::GetRowsEx() binding definitions #define dbBindIndexINT 1 #define dbBindIndexSTR 2 #define dbBindI2 DAO_I2 // long #define dbBindI4 DAO_I4 // short #define dbBindR4 DAO_R4 // float #define dbBindR8 DAO_R8 // double #define dbBindCY DAO_CURRENCY // Currency #define dbBindDATE DAO_DATE // DATE #define dbBindBOOL DAO_BOOL // VARIANT_BOOL #define dbBindUI1 DAO_CHAR // unsigned char #define dbBindVARIANT DAO_ANYVARIANT // VARIANT #define dbBindWCHAR DAO_WCHAR // wchar_t[] (inline) #define dbBindBookmark DAO_BOOKMARK // bookmark psuedo field #define dbBindLPSTR DAO_LPSTR // \0 string in pvVarBuffer #define dbBindLPWSTR DAO_LPWSTR // wide string in pvVarBuffer #define dbBindBlob DAO_BLOB // #ifdef _UNICODE #define dbBindSTRING dbBindWCHAR #define dbBindLPSTRING dbBindLPWSTR #else #define dbBindSTRING dbBindUI1 #define dbBindLPSTRING dbBindLPSTR #endif // Binding structure (Used with GetRowsEX) typedef struct { DWORD dwBindIndexType; union { LONG i; LPCTSTR pstr; }; DWORD dwType; DWORD dwOffset; DWORD cb; } DAORSETBINDING, *LPDAORSETBINDING; /***************************************************************************** * Forwards */ class COleVariant; class CdbBookmark; class CdbException; class CdbOleObject; class CdbObject; class CdbError; class CdbProperty; class CdbDBEngine; class CdbWorkspace; class CdbDatabase; class CdbConnection; class CdbRecordset; class CdbGetRowsEx; class CdbQueryDef; class CdbTableDef; class CdbField; class CdbRelation; class CdbIndex; class CdbUser; class CdbGroup; class CdbDocument; class CdbContainer; class CdbParameter; class CdbCollection; class CdbErrors; class CdbProperties; class CdbWorkspaces; class CdbDatabases; class CdbConnections; class CdbRecordsets; class CdbQueryDefs; class CdbTableDefs; class CdbFields; class CdbRelations; class CdbIndexes; class CdbUsers; class CdbGroups; class CdbDocuments; class CdbContainers; class CdbParameters; /***************************************************************************** * CdbException */ class DLLEXPORT CdbException { public: CONSTRUCTOR CdbException (HRESULT hr); HRESULT m_hr; }; /***************************************************************************** * CdbBookmark */ class DLLEXPORT CdbBookmark : public COleVariant { public: CONSTRUCTOR CdbBookmark (LPSAFEARRAY psa); CONSTRUCTOR CdbBookmark (); CONSTRUCTOR CdbBookmark (const CdbBookmark &); CdbBookmark & operator = (const CdbBookmark &); operator LPSAFEARRAY (VOID); }; /***************************************************************************** * CdbIndexFields (special case for index fields) */ class DLLEXPORT CdbIndexFields : public CdbFields { public: CdbField Item (LPCTSTR pstr); CdbField Item (LONG i); CdbObject ObItem (LPCTSTR pstr); CdbObject ObItem (LONG i); }; /***************************************************************************** * CdbLastOLEError */ class DLLEXPORT CdbLastOLEError : public CdbOleObject { public: CONSTRUCTOR CdbLastOLEError (VOID); CString GetSource (VOID); CString GetDescription (VOID); CString GetHelpFile (VOID); DWORD GetHelpContext (VOID); }; /***************************************************************************** * CdbDBEngine */ class DLLEXPORT CdbDBEngine : public CdbObject { public: // Administration CONSTRUCTOR CdbDBEngine (DAODBEngine *peng, BOOL bAddRef=FALSE); CONSTRUCTOR CdbDBEngine (BOOL bPrivate=FALSE, BOOL bStart=TRUE, LPCTSTR pstrIniPath=NULL, LPCTSTR pstrDefUser=NULL, LPCTSTR pstrDefPW=NULL, LONG lType=dbUseJet); CONSTRUCTOR CdbDBEngine (const CdbDBEngine &); CdbDBEngine & operator = (const CdbDBEngine &); inline CdbWorkspace operator [] (LONG lIndex); inline CdbWorkspace operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties VOID SetDefaultPassword (LPCTSTR pstr); VOID SetDefaultUser (LPCTSTR pstr); VOID SetIniPath (LPCTSTR pstr); CString GetIniPath (VOID); VOID SetDefaultType (LONG l); LONG GetDefaultType (VOID); VOID SetLoginTimeout (SHORT s); SHORT GetLoginTimeout (VOID); CString GetVersion (VOID); CString GetSystemDB (VOID); VOID SetSystemDB (LPCTSTR pstr); // Methods CdbWorkspace CreateWorkspace (LPCTSTR pstrName, LPCTSTR pstrUser, LPCTSTR pstrPassword, LONG lType=-1); CdbDatabase OpenDatabase (LPCTSTR pstrName, BOOL bExclusive, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); CdbDatabase OpenDatabase (LPCTSTR pstrName, LONG lOption=0L, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); CdbConnection OpenConnection (LPCTSTR pstrName, LONG lOption=-1L, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); VOID CompactDatabase (LPCTSTR pstrOldDatabase, LPCTSTR pstrNewDatabase, LPCTSTR pstrDstConnect = NULL, LONG lOptions=-1, LPCTSTR pstrSrcConnect = NULL); VOID RepairDatabase (LPCTSTR pstrDatabase); VOID RegisterDatabase (LPCTSTR pstrDatabase, LPCTSTR pstrDriver, BOOL bSilent, LPCTSTR pstrAttributes); VOID Idle (LONG lOptions=-1); VOID Start (VOID); VOID SetOption (long lOption, LPVARIANT pvValue); // Collections CdbWorkspaces Workspaces; CdbErrors Errors; private: BOOL m_bStarted; }; /***************************************************************************** * CdbWorkspace */ class DLLEXPORT CdbWorkspace : public CdbObject { public: // Administration CONSTRUCTOR CdbWorkspace (VOID); CONSTRUCTOR CdbWorkspace (DAOWorkspace *pwrk, BOOL bAddRef=FALSE); CONSTRUCTOR CdbWorkspace (const CdbWorkspace &); CdbWorkspace & operator = (const CdbWorkspace &); inline CdbDatabase operator [] (LONG lIndex); inline CdbDatabase operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); VOID SetName (LPCTSTR pstr); CString GetUserName (VOID); BOOL GetIsolateODBCTrans (VOID); VOID SetIsolateODBCTrans (BOOL b); LONG GetType (VOID); LONG GetDefaultCursorDriver (VOID); VOID SetDefaultCursorDriver (LONG l); LONG GetLoginTimeout (VOID); VOID SetLoginTimeout (LONG l); // Methods VOID BeginTrans (VOID); VOID CommitTrans (LONG lOptions=-1); VOID Close (VOID); VOID Rollback (VOID); CdbDatabase OpenDatabase (LPCTSTR pstrName, BOOL bExclusive, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); CdbDatabase OpenDatabase (LPCTSTR pstrName, LONG lOption=0L, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); CdbConnection OpenConnection (LPCTSTR pstrName, LONG lOption=-1L, BOOL bReadOnly=FALSE, LPCTSTR pstrConnect=NULL); CdbDatabase CreateDatabase (LPCTSTR pstrName, LPCTSTR pstrConnect, LONG lOption=-1); CdbUser CreateUser (LPCTSTR pstrName=NULL, LPCTSTR pstrPID=NULL, LPCTSTR pstrPassword=NULL); CdbGroup CreateGroup (LPCTSTR pstrName=NULL, LPCTSTR pstrPID=NULL); // Collections CdbDatabases Databases; CdbConnections Connections; CdbUsers Users; CdbGroups Groups; }; /***************************************************************************** * CdbDatabase */ class DLLEXPORT CdbDatabase : public CdbObject { public: // Administration CONSTRUCTOR CdbDatabase (VOID); CONSTRUCTOR CdbDatabase (DAODatabase *pdb, BOOL bAddRef=FALSE); CONSTRUCTOR CdbDatabase (const CdbDatabase &); CdbDatabase & operator = (const CdbDatabase &); inline CdbTableDef operator [] (LONG lIndex); inline CdbTableDef operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties LONG GetCollatingOrder (VOID); CString GetConnect (VOID); VOID SetConnect (LPCTSTR pstrConnect); CString GetName (VOID); SHORT GetQueryTimeout (VOID); VOID SetQueryTimeout (SHORT s); BOOL GetTransactions (VOID); BOOL GetUpdatable (VOID); CString GetVersion (VOID); LONG GetRecordsAffected (VOID); CdbConnection GetConnection (VOID); //Replication properties CString GetReplicaID (VOID); CString GetDesignMasterID (VOID); VOID SetDesignMasterID (LPCTSTR pstrMasterID); // Methods VOID Close (VOID); VOID Execute (LPCTSTR pstrQuery, LONG lOption=-1); CdbRecordset OpenRecordset (LPCTSTR pstrName, LONG lType=-1, LONG lOptions=-1, LONG lLockEdit=-1); CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); CdbRelation CreateRelation (LPCTSTR pstrName=NULL, LPCTSTR pstrTable=NULL, LPCTSTR pstrForiegn=NULL, LONG lAttributes=-1); CdbTableDef CreateTableDef (LPCTSTR pstrName=NULL, LONG lAttributes=-1, LPCTSTR pstrSource=NULL, LPCTSTR pstrConnect=NULL); CdbQueryDef CreateQueryDef (LPCTSTR pstrName=NULL, LPCTSTR pstrSQL=NULL); VOID NewPassword (LPCTSTR pstrOld, LPCTSTR pstrNew); //Replication methods VOID Synchronize (LPCTSTR pstrReplica, LONG lType=-1); VOID MakeReplica (LPCTSTR pstrPath, LPCTSTR pstrDescription, LONG lOptions=-1); VOID PopulatePartial (LPCTSTR pstrDbPathName); // Collections CdbTableDefs TableDefs; CdbQueryDefs QueryDefs; CdbRelations Relations; CdbContainers Containers; CdbRecordsets Recordsets; }; /***************************************************************************** * CdbConnection */ class DLLEXPORT CdbConnection : public CdbObject { public: // Administration CONSTRUCTOR CdbConnection (VOID); CONSTRUCTOR CdbConnection (DAOConnection *pconn, BOOL bAddRef=FALSE); CONSTRUCTOR CdbConnection (const CdbConnection &); CdbConnection & operator = (const CdbConnection &); inline CdbQueryDef operator [] (LONG lIndex); inline CdbQueryDef operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetConnect (VOID); CString GetName (VOID); CdbDatabase GetDatabase (VOID); SHORT GetQueryTimeout (VOID); VOID SetQueryTimeout (SHORT s); LONG GetRecordsAffected (VOID); BOOL GetStillExecuting (VOID); BOOL GetTransactions (VOID); BOOL GetUpdatable (VOID); // Methods VOID Cancel (VOID); VOID Close (VOID); CdbQueryDef CreateQueryDef (LPCTSTR pstrName=NULL, LPCTSTR pstrSQL=NULL); VOID Execute (LPCTSTR pstrQuery, LONG lOption=-1); CdbRecordset OpenRecordset (LPCTSTR pstrName, LONG lType=-1, LONG lOptions=-1, LONG lLockEdit=-1); // Collections CdbQueryDefs QueryDefs; CdbRecordsets Recordsets; }; /***************************************************************************** * CdbRecordset */ class DLLEXPORT CdbRecordset : public CdbObject { public: // Administration CONSTRUCTOR CdbRecordset (VOID); CONSTRUCTOR CdbRecordset (DAORecordset *prs, BOOL bAddRef=FALSE); CONSTRUCTOR CdbRecordset (const CdbRecordset &); CdbRecordset & operator = (const CdbRecordset &); inline CdbField operator [] (LONG lIndex); inline CdbField operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); VOID SetGetRowsExInt (VOID); // Properties BOOL GetBOF (VOID); CdbBookmark GetBookmark (VOID); VOID SetBookmark (class CdbBookmark); BOOL GetBookmarkable (VOID); COleDateTime GetDateCreated (VOID); COleDateTime GetLastUpdated (VOID); BOOL GetEOF (VOID); CString GetFilter (VOID); VOID SetFilter (LPCTSTR pstr); CString GetIndex (VOID); VOID SetIndex (LPCTSTR pstr); CdbBookmark GetLastModified (VOID); BOOL GetLockEdits (VOID); VOID SetLockEdits (BOOL b); CString GetName (VOID); BOOL GetNoMatch (VOID); CString GetSort (VOID); VOID SetSort (LPCTSTR pstr); BOOL GetTransactions (VOID); SHORT GetType (VOID); LONG GetRecordCount (VOID); BOOL GetUpdatable (VOID); BOOL GetRestartable (VOID); CString GetValidationText (VOID); CString GetValidationRule (VOID); CdbBookmark GetCacheStart (VOID); VOID SetCacheStart (CdbBookmark &pbm); LONG GetCacheSize (VOID); VOID SetCacheSize (LONG l); FLOAT GetPercentPosition (VOID); VOID SetPercentPosition (FLOAT f); LONG GetAbsolutePosition (VOID); VOID SetAbsolutePosition (LONG l); SHORT GetEditMode (VOID); LONG GetUpdateOptions (VOID); VOID SetUpdateOptions (LONG l); SHORT GetRecordStatus (VOID); BOOL GetStillExecuting (VOID); LONG GetBatchSize (VOID); VOID SetBatchSize (LONG l); LONG GetBatchCollisionCount (VOID); COleVariant GetBatchCollisions (VOID); CdbConnection GetConnection (VOID); // Methods VOID CancelUpdate (short sType = dbUpdateRegular); VOID AddNew (VOID); VOID Close (VOID); CdbRecordset OpenRecordset (LONG lType=-1, LONG lOption=-1); VOID Delete (VOID); VOID Edit (VOID); VOID FindFirst (LPCTSTR pstrCriteria); VOID FindLast (LPCTSTR pstrCriteria); VOID FindNext (LPCTSTR pstrCriteria); VOID FindPrevious (LPCTSTR pstrCriteria); VOID MoveFirst (VOID); VOID MoveLast (LONG lOptions=-1); VOID MoveNext (VOID); VOID MovePrevious (VOID); VOID Seek (LPCTSTR pstrComparison, LONG lNumFields, COleVariant cKey, ...); VOID Update (short sType = dbUpdateRegular, VARIANT_BOOL bForce = FALSE); CdbRecordset Clone (VOID); VOID Requery (CdbQueryDef *pq = NULL); VOID Move (LONG lRows, CdbBookmark *bm=NULL); VOID FillCache (LONG lRows=-1, CdbBookmark *pbm=NULL); CdbQueryDef CopyQueryDef (VOID); COleVariant GetRows (LONG lRows=-1); LONG GetRowsEx (LPVOID pvBuffer, LONG cbRow, LPDAORSETBINDING prb, LONG cBinding, LPVOID pvVarBuffer = NULL, LONG cbVarBuffer = 0, LONG lRows = -1); VOID Cancel (VOID); BOOL NextRecordset (VOID); inline VOID GetFieldV (COleVariant &vIndex, COleVariant &vValue); inline VOID SetFieldV (COleVariant &vIndex, LPVARIANT pv); COleVariant GetField (LPCTSTR pstrIndex); COleVariant GetField (LONG lIndex); COleVariant GetField (COleVariant &vIndex); COleVariant GetField (CString &str){return GetField((LPCTSTR)str);} VOID SetField (LPCTSTR pstrIndex, LPVARIANT pv); VOID SetField (LONG lIndex, LPVARIANT pv); VOID SetField (COleVariant &vIndex, LPVARIANT pv); VOID SetField (CString &str, LPVARIANT pv){SetField((LPCTSTR)str, pv);} // Collections CdbFields Fields; protected: // GetRowsEx interface CdbGetRowsEx m_GetRowsInt; }; /***************************************************************************** * CdbField */ class DLLEXPORT CdbField : public CdbObject { public: // Administration CONSTRUCTOR CdbField (VOID); CONSTRUCTOR CdbField (DAOField *pfld, BOOL bAddRef=FALSE); CONSTRUCTOR CdbField (const CdbField &); CdbField & operator = (const CdbField &); VOID OnInterfaceChange (VOID); // Properties LONG GetCollatingOrder (VOID); SHORT GetType (VOID); VOID SetType (SHORT s); CString GetName (VOID); VOID SetName (LPCTSTR pstr); LONG GetSize (VOID); VOID SetSize (LONG l); CString GetSourceField (VOID); CString GetSourceTable (VOID); COleVariant GetValue (VOID); VOID SetValue (LPVARIANT pv); LONG GetAttributes (VOID); VOID SetAttributes (LONG l); SHORT GetOrdinalPosition (VOID); VOID SetOrdinalPosition (SHORT s); CString GetValidationText (VOID); VOID SetValidationText (LPCTSTR pstr); BOOL GetValidateOnSet (VOID); VOID SetValidateOnSet (BOOL b); CString GetValidationRule (VOID); VOID SetValidationRule (LPCTSTR pstr); CString GetDefaultValue (VOID); VOID SetDefaultValue (LPCTSTR pstr); VOID SetDefaultValue (LPVARIANT pv); BOOL GetRequired (VOID); VOID SetRequired (BOOL b); BOOL GetAllowZeroLength (VOID); VOID SetAllowZeroLength (BOOL b); BOOL GetDataUpdatable (VOID); CString GetForeignName (VOID); VOID SetForeignName (LPCTSTR pstr); COleVariant GetOriginalValue (VOID); COleVariant GetVisibleValue (VOID); // Methods VOID AppendChunk (LPVARIANT pv); COleVariant GetChunk (LONG lOffset, LONG lBytes); LONG FieldSize (VOID); CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); }; /***************************************************************************** * CdbQueryDef */ class DLLEXPORT CdbQueryDef : public CdbObject { public: // Administration CONSTRUCTOR CdbQueryDef (VOID); CONSTRUCTOR CdbQueryDef (DAOQueryDef *pqd, BOOL bAddRef=FALSE); CONSTRUCTOR CdbQueryDef (const CdbQueryDef &); CdbQueryDef & operator = (const CdbQueryDef &); inline CdbField operator [] (LONG lIndex); inline CdbField operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties COleDateTime GetDateCreated (VOID); COleDateTime GetLastUpdated (VOID); CString GetName (VOID); VOID SetName (LPCTSTR pstr); SHORT GetODBCTimeout (VOID); VOID SetODBCTimeout (SHORT s); SHORT GetType (VOID); CString GetSQL (VOID); VOID SetSQL (LPCTSTR pstr); BOOL GetUpdatable (VOID); CString GetConnect (VOID); VOID SetConnect (LPCTSTR pstr); BOOL GetReturnsRecords (VOID); VOID SetReturnsRecords (BOOL b); LONG GetRecordsAffected (VOID); LONG GetMaxRecords (VOID); VOID SetMaxRecords (LONG l); BOOL GetStillExecuting (VOID); LONG GetCacheSize (VOID); VOID SetCacheSize (LONG l); COleVariant GetPrepare (VOID); VOID SetPrepare (LPVARIANT pv); // Methods CdbRecordset OpenRecordset (LONG lType=-1, LONG lOption=-1, LONG lLockEdit=-1); VOID Execute (LONG lOption=-1); CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); VOID Close (VOID); VOID Cancel (VOID); // Collections CdbFields Fields; CdbParameters Parameters; }; /***************************************************************************** * CdbTableDef */ class DLLEXPORT CdbTableDef : public CdbObject { public: // Administration CONSTRUCTOR CdbTableDef (VOID); CONSTRUCTOR CdbTableDef (DAOTableDef *ptd, BOOL bAddRef=FALSE); CONSTRUCTOR CdbTableDef (const CdbTableDef &); CdbTableDef & operator = (const CdbTableDef &); inline CdbField operator [] (LONG lIndex); inline CdbField operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties LONG GetAttributes (VOID); VOID SetAttributes (LONG l); CString GetConnect (VOID); VOID SetConnect (LPCTSTR pstr); COleDateTime GetDateCreated (VOID); COleDateTime GetLastUpdated (VOID); CString GetName (VOID); VOID SetName (LPCTSTR pstr); CString GetSourceTableName (VOID); VOID SetSourceTableName (LPCTSTR pstr); BOOL GetUpdatable (VOID); CString GetValidationText (VOID); VOID SetValidationText (LPCTSTR pstr); CString GetValidationRule (VOID); VOID SetValidationRule (LPCTSTR pstr); LONG GetRecordCount (VOID); CString GetConflictTable (VOID); COleVariant GetReplicaFilter (VOID); VOID SetReplicaFilter (LPVARIANT pv); // Methods CdbRecordset OpenRecordset (LONG lType=-1, LONG lOption=-1); VOID RefreshLink (VOID); CdbField CreateField (LPCTSTR pstrName=NULL, LONG lType=-1, LONG lSize=-1); CdbIndex CreateIndex (LPCTSTR pstrName=NULL); CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); // Collections CdbFields Fields; CdbIndexes Indexes; }; /***************************************************************************** * CdbIndex */ class DLLEXPORT CdbIndex : public CdbObject { public: // Administration CONSTRUCTOR CdbIndex (VOID); CONSTRUCTOR CdbIndex (DAOIndex *pidx, BOOL bAddRef=FALSE); CONSTRUCTOR CdbIndex (const CdbIndex &); CdbIndex & operator = (const CdbIndex &); inline CdbField operator [] (LONG lIndex); inline CdbField operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); VOID SetName (LPCTSTR pstr); BOOL GetForeign (VOID); BOOL GetUnique (VOID); VOID SetUnique (BOOL b); BOOL GetClustered (VOID); VOID SetClustered (BOOL b); BOOL GetRequired (VOID); VOID SetRequired (BOOL b); BOOL GetIgnoreNulls (VOID); VOID SetIgnoreNulls (BOOL b); BOOL GetPrimary (VOID); VOID SetPrimary (BOOL b); LONG GetDistinctCount (VOID); // Methods CdbField CreateField (LPCTSTR pstrName=NULL, LONG lType=-1, LONG lSize=-1); CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); // Collections CdbIndexFields Fields; }; /***************************************************************************** * CdbParameter */ class DLLEXPORT CdbParameter : public CdbObject { public: // Administration CONSTRUCTOR CdbParameter (VOID); CONSTRUCTOR CdbParameter (DAOParameter *pprm, BOOL bAddRef=FALSE); CONSTRUCTOR CdbParameter (const CdbParameter &); CdbParameter & operator = (const CdbParameter &); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); COleVariant GetValue (VOID); VOID SetValue (LPVARIANT pv); SHORT GetType (VOID); VOID SetType (SHORT i); SHORT GetDirection (VOID); VOID SetDirection (SHORT i); }; /***************************************************************************** * CdbRelation */ class DLLEXPORT CdbRelation : public CdbObject { public: // Administration CONSTRUCTOR CdbRelation (VOID); CONSTRUCTOR CdbRelation (DAORelation *prl, BOOL bAddRef=FALSE); CONSTRUCTOR CdbRelation (const CdbRelation &); CdbRelation & operator = (const CdbRelation &); inline CdbField operator [] (LONG lIndex); inline CdbField operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); VOID SetName (LPCTSTR pstr); CString GetTable (VOID); VOID SetTable (LPCTSTR pstr); CString GetForeignTable (VOID); VOID SetForeignTable (LPCTSTR pstr); LONG GetAttributes (VOID); VOID SetAttributes (LONG); BOOL GetPartialReplica (VOID); VOID SetPartialReplica (BOOL b); // Methods CdbField CreateField (LPCTSTR pstrName=NULL, LONG lType=-1, LONG lSize=-1); // Collections CdbFields Fields; }; /***************************************************************************** * CdbUser */ class DLLEXPORT CdbUser : public CdbObject { public: // Administration CONSTRUCTOR CdbUser (VOID); CONSTRUCTOR CdbUser (DAOUser *pusr, BOOL bAddRef=FALSE); CONSTRUCTOR CdbUser (const CdbUser &); CdbUser & operator = (const CdbUser &); inline CdbGroup operator [] (LONG lIndex); inline CdbGroup operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); VOID SetName (LPCTSTR pstr); VOID SetPID (LPCTSTR pstr); VOID SetPassword (LPCTSTR pstr); // Methods VOID NewPassword (LPCTSTR pstrOld, LPCTSTR pstrNew); CdbGroup CreateGroup (LPCTSTR pstrName=NULL, LPCTSTR pstrPID=NULL); // Collections CdbGroups Groups; }; /***************************************************************************** * CdbGroup */ class DLLEXPORT CdbGroup : public CdbObject { public: // Administration CONSTRUCTOR CdbGroup (VOID); CONSTRUCTOR CdbGroup (DAOGroup *pgrp, BOOL bAddRef=FALSE); CONSTRUCTOR CdbGroup (const CdbGroup &); CdbGroup & operator = (const CdbGroup &); inline CdbUser operator [] (LONG lIndex); inline CdbUser operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); VOID SetName (LPCTSTR pstr); VOID SetPID (LPCTSTR pstr); // Methods CdbUser CreateUser (LPCTSTR pstrName=NULL, LPCTSTR pstrPID=NULL, LPCTSTR pstrPassword=NULL); // Collections CdbUsers Users; }; /***************************************************************************** * CdbDocument */ class DLLEXPORT CdbDocument : public CdbObject { public: // Administration CONSTRUCTOR CdbDocument (VOID); CONSTRUCTOR CdbDocument (DAODocument *pdoc, BOOL bAddRef=FALSE); CONSTRUCTOR CdbDocument (const CdbDocument &); CdbDocument & operator = (const CdbDocument &); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); CString GetOwner (VOID); VOID SetOwner (LPCTSTR pstr); CString GetContainer (VOID); CString GetUserName (VOID); VOID SetUserName (LPCTSTR pstr); LONG GetPermissions (VOID); VOID SetPermissions (LONG l); COleDateTime GetDateCreated (VOID); COleDateTime GetLastUpdated (VOID); LONG GetAllPermissions (VOID); //Methods CdbProperty CreateProperty (LPCTSTR pstrName=NULL, LONG lType=-1, LPVARIANT pvValue=NULL, BOOL bDDL=FALSE); }; /***************************************************************************** * CdbContainer */ class DLLEXPORT CdbContainer : public CdbObject { public: // Administration CONSTRUCTOR CdbContainer (VOID); CONSTRUCTOR CdbContainer (DAOContainer *pctn, BOOL bAddRef=FALSE); CONSTRUCTOR CdbContainer (const CdbContainer &); CdbContainer & operator = (const CdbContainer &); inline CdbDocument operator [] (LONG lIndex); inline CdbDocument operator [] (LPCTSTR pstrIndex); VOID OnInterfaceChange (VOID); // Properties CString GetName (VOID); CString GetOwner (VOID); VOID SetOwner (LPCTSTR pstr); CString GetUserName (VOID); VOID SetUserName (LPCTSTR pstr); LONG GetPermissions (VOID); VOID SetPermissions (LONG l); BOOL GetInherit (VOID); VOID SetInherit (BOOL b); LONG GetAllPermissions (VOID); // Collections CdbDocuments Documents; }; /***************************************************************************** * CdbError */ class DLLEXPORT CdbError : public CdbObject { public: // Administration CONSTRUCTOR CdbError (VOID); CONSTRUCTOR CdbError (DAOError *perr, BOOL bAddRef=FALSE); CONSTRUCTOR CdbError (const CdbError &); CdbError & operator = (const CdbError &); VOID OnInterfaceChange (VOID); // Properties LONG GetNumber (VOID); CString GetSource (VOID); CString GetDescription (VOID); CString GetHelpFile (VOID); LONG GetHelpContext (VOID); }; /***************************************************************************** * CdbProperty */ class DLLEXPORT CdbProperty : public CdbObject { public: // Administration CONSTRUCTOR CdbProperty (VOID); CONSTRUCTOR CdbProperty (DAOProperty *pprp, BOOL bAddRef=FALSE); CONSTRUCTOR CdbProperty (const CdbProperty &); CdbProperty & operator = (const CdbProperty &); // Properties COleVariant GetValue (VOID); VOID SetValue (LPVARIANT pv); CString GetName (VOID); VOID SetName (LPCTSTR pstrName); SHORT GetType (VOID); VOID SetType (SHORT sType); BOOL GetInherited (VOID); }; /***************************************************************************** * Inline functions */ inline BOOL CdbOleObject::Exists(void) { return (m_punkInterface ? TRUE : FALSE); } /***************************************************************************** * Recordset GetField functions */ inline VOID CdbRecordset::GetFieldV( COleVariant &vIndex, COleVariant &vValue) { DAORecordset * prs = (DAORecordset *)GetInterface(); if (!prs) { DAOVINIT(vValue); return; } DAOMFC_CALL(prs->get_Collect(vIndex, &vValue)); return; } inline VOID CdbRecordset::SetFieldV( COleVariant &vIndex, LPVARIANT pv) { DAORecordset * prs = (DAORecordset *)GetInterface(); if (!prs) return; DAOMFC_CALL(prs->put_Collect(vIndex, *pv)); } /***************************************************************************** * Default collection operators */ inline CdbWorkspace CdbDBEngine::operator [] (LONG lIndex) { return Workspaces[lIndex]; } inline CdbWorkspace CdbDBEngine::operator [] (LPCTSTR pstrIndex) { return Workspaces[pstrIndex]; } inline CdbDatabase CdbWorkspace::operator [] (LONG lIndex) { return Databases[lIndex]; } inline CdbDatabase CdbWorkspace::operator [] (LPCTSTR pstrIndex) { return Databases[pstrIndex]; } inline CdbTableDef CdbDatabase::operator [] (LONG lIndex) { return TableDefs[lIndex]; } inline CdbTableDef CdbDatabase::operator [] (LPCTSTR pstrIndex) { return TableDefs[pstrIndex]; } inline CdbQueryDef CdbConnection::operator [] (LONG lIndex) { return QueryDefs[lIndex]; } inline CdbQueryDef CdbConnection::operator [] (LPCTSTR pstrIndex) { return QueryDefs[pstrIndex]; } inline CdbField CdbRecordset::operator [] (LONG lIndex) { return Fields[lIndex]; } inline CdbField CdbRecordset::operator [] (LPCTSTR pstrIndex) { return Fields[pstrIndex]; } inline CdbField CdbTableDef::operator [] (LONG lIndex) { return Fields[lIndex]; } inline CdbField CdbTableDef::operator [] (LPCTSTR pstrIndex) { return Fields[pstrIndex]; } inline CdbField CdbQueryDef::operator [] (LONG lIndex) { return Fields[lIndex]; } inline CdbField CdbQueryDef::operator [] (LPCTSTR pstrIndex) { return Fields[pstrIndex]; } inline CdbField CdbIndex::operator [] (LONG lIndex) { return Fields[lIndex]; } inline CdbField CdbIndex::operator [] (LPCTSTR pstrIndex) { return Fields[pstrIndex]; } inline CdbField CdbRelation::operator [] (LONG lIndex) { return Fields[lIndex]; } inline CdbField CdbRelation::operator [] (LPCTSTR pstrIndex) { return Fields[pstrIndex]; } inline CdbGroup CdbUser::operator [] (LONG lIndex) { return Groups[lIndex]; } inline CdbGroup CdbUser::operator [] (LPCTSTR pstrIndex) { return Groups[pstrIndex]; } inline CdbUser CdbGroup::operator [] (LONG lIndex) { return Users[lIndex]; } inline CdbUser CdbGroup::operator [] (LPCTSTR pstrIndex) { return Users[pstrIndex]; } inline CdbDocument CdbContainer::operator [] (LONG lIndex) { return Documents[lIndex]; } inline CdbDocument CdbContainer::operator [] (LPCTSTR pstrIndex) { return Documents[pstrIndex]; } /***************************************************************************** * Use different DAO interface for wide (UNICODE) versions */ #ifdef _UNICODE #define dbIID_IDAODBEngine IID_IDAODBEngineW #define dbIID_IDAOError IID_IDAOErrorW #define dbIID_IDAOErrors IID_IDAOErrorsW #define dbIID_IDAOProperty IID_IDAOPropertyW #define dbIID_IDAOProperties IID_IDAOPropertiesW #define dbIID_IDAORecordset IID_IDAORecordsetW #define dbIID_IDAORecordsets IID_IDAORecordsetsW #define dbIID_IDAOWorkspace IID_IDAOWorkspaceW #define dbIID_IDAOWorkspaces IID_IDAOWorkspacesW #define dbIID_IDAOConnection IID_IDAOConnectionW #define dbIID_IDAOConnections IID_IDAOConnectionsW #define dbIID_IDAOTableDef IID_IDAOTableDefW #define dbIID_IDAOTableDefs IID_IDAOTableDefsW #define dbIID_IDAOField IID_IDAOFieldW #define dbIID_IDAOFields IID_IDAOFieldsW #define dbIID_IDAOIndex IID_IDAOIndexW #define dbIID_IDAOIndexes IID_IDAOIndexesW #define dbIID_IDAOIndexFields IID_IDAOIndexFieldsW #define dbIID_IDAOGroup IID_IDAOGroupW #define dbIID_IDAOGroups IID_IDAOGroupsW #define dbIID_IDAOUser IID_IDAOUserW #define dbIID_IDAOUsers IID_IDAOUsersW #define dbIID_IDAODatabase IID_IDAODatabaseW #define dbIID_IDAODatabases IID_IDAODatabasesW #define dbIID_IDAOQueryDef IID_IDAOQueryDefW #define dbIID_IDAOQueryDefs IID_IDAOQueryDefsW #define dbIID_IDAOParameter IID_IDAOParameterW #define dbIID_IDAOParameters IID_IDAOParametersW #define dbIID_IDAORelation IID_IDAORelationW #define dbIID_IDAORelations IID_IDAORelationsW #define dbIID_IDAOContainer IID_IDAOContainerW #define dbIID_IDAOContainers IID_IDAOContainersW #define dbIID_IDAODocument IID_IDAODocumentW #define dbIID_IDAODocuments IID_IDAODocumentsW #else #define dbIID_IDAODBEngine IID_IDAODBEngine #define dbIID_IDAOError IID_IDAOError #define dbIID_IDAOErrors IID_IDAOErrors #define dbIID_IDAOProperty IID_IDAOProperty #define dbIID_IDAOProperties IID_IDAOProperties #define dbIID_IDAORecordset IID_IDAORecordset #define dbIID_IDAORecordsets IID_IDAORecordsets #define dbIID_IDAOWorkspace IID_IDAOWorkspace #define dbIID_IDAOWorkspaces IID_IDAOWorkspaces #define dbIID_IDAOConnection IID_IDAOConnection #define dbIID_IDAOConnections IID_IDAOConnections #define dbIID_IDAOTableDef IID_IDAOTableDef #define dbIID_IDAOTableDefs IID_IDAOTableDefs #define dbIID_IDAOField IID_IDAOField #define dbIID_IDAOFields IID_IDAOFields #define dbIID_IDAOIndex IID_IDAOIndex #define dbIID_IDAOIndexes IID_IDAOIndexes #define dbIID_IDAOIndexFields IID_IDAOIndexFields #define dbIID_IDAOGroup IID_IDAOGroup #define dbIID_IDAOGroups IID_IDAOGroups #define dbIID_IDAOUser IID_IDAOUser #define dbIID_IDAOUsers IID_IDAOUsers #define dbIID_IDAODatabase IID_IDAODatabase #define dbIID_IDAODatabases IID_IDAODatabases #define dbIID_IDAOQueryDef IID_IDAOQueryDef #define dbIID_IDAOQueryDefs IID_IDAOQueryDefs #define dbIID_IDAOParameter IID_IDAOParameter #define dbIID_IDAOParameters IID_IDAOParameters #define dbIID_IDAORelation IID_IDAORelation #define dbIID_IDAORelations IID_IDAORelations #define dbIID_IDAOContainer IID_IDAOContainer #define dbIID_IDAOContainers IID_IDAOContainers #define dbIID_IDAODocument IID_IDAODocument #define dbIID_IDAODocuments IID_IDAODocuments #endif #endif // _DBDAO_H_