summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc40/afxdao.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/mfc40/afxdao.h1318
1 files changed, 1318 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc40/afxdao.h b/public/sdk/inc/mfc40/afxdao.h
new file mode 100644
index 000000000..1e5ff4443
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdao.h
@@ -0,0 +1,1318 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDAO_H
+#define __AFXDAO_H
+
+#ifdef _AFX_NO_DAO_SUPPORT
+ #error DAO Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h> // Must include this before dao headers
+#endif
+#ifndef _DBDAOINT_H_
+ #include <dbdaoint.h>
+#endif
+#ifndef _DAOGETRW_H_
+ #include <daogetrw.h>
+#endif
+#ifndef _DBDAOID_H_
+ #include <dbdaoid.h>
+#endif
+#ifndef _DBDAOERR_H_
+ #include <dbdaoerr.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header with ODBC database classes
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco40d.lib")
+ #pragma comment(lib, "mfcd40d.lib")
+ #else
+ #pragma comment(lib, "mfco40ud.lib")
+ #pragma comment(lib, "mfcd40ud.lib")
+ #endif
+ #endif
+
+#endif
+
+// DAO GUIDs in uuid2.lib
+#pragma comment(lib, "uuid2.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+////////////////////////////////////////////////////////////////////////
+// AFXDAO - MFC Database support using DAO
+
+// Classes declared in this file
+
+ // CException
+ class CDaoException; // DAO error/exception handling
+
+ // CObject
+ class CDaoRecordView;
+ class CDaoWorkspace; // DAO engine/transaction/security manager
+ class CDaoDatabase; // DAO database manager
+ class CDaoRecordset; // DAO result set manager
+ class CDaoTableDef; // DAO base table manager
+ class CDaoQueryDef; // DAO query manager
+
+ // Non-CObject classes
+ class CDaoFieldExchange;
+ struct CDaoFieldCache;
+ struct CDaoErrorInfo;
+ struct CDaoWorkspaceInfo;
+ struct CDaoDatabaseInfo;
+ struct CDaoTableDefInfo;
+ struct CDaoFieldInfo;
+ struct CDaoIndexInfo;
+ struct CDaoRelationInfo;
+ struct CDaoQueryDefInfo;
+ struct CDaoParameterInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLL support
+
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+////////////////////////////////////////////////////////////////////////
+// Data caching structures
+struct CDaoFieldCache
+{
+ void* m_pvData; // Pointer to cached data of any supported type.
+ BYTE m_nStatus; // (NULL) status cache.
+ BYTE m_nDataType; // Type of data cached.
+};
+
+////////////////////////////////////////////////////////////////////////
+// Info structures
+
+struct CDaoErrorInfo
+{
+// Attributes
+ long m_lErrorCode;
+ CString m_strSource;
+ CString m_strDescription;
+ CString m_strHelpFile;
+ long m_lHelpContext;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoWorkspaceInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strUserName; // Secondary
+ BOOL m_bIsolateODBCTrans; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoDatabaseInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ BOOL m_bTransactions; // Primary
+ CString m_strVersion; // Secondary
+ long m_lCollatingOrder; // Secondary
+ short m_nQueryTimeout; // Secondary
+ CString m_strConnect; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoTableDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ long m_lAttributes; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ CString m_strSrcTableName; // Secondary
+ CString m_strConnect; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ long m_lRecordCount; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ long m_lSize; // Primary
+ long m_lAttributes; // Primary
+ short m_nOrdinalPosition; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bAllowZeroLength; // Secondary
+ long m_lCollatingOrder; // Secondary
+ CString m_strForeignName; // Secondary
+ CString m_strSourceField; // Secondary
+ CString m_strSourceTable; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ CString m_strDefaultValue; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bDescending; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexInfo
+{
+// Constructors
+ CDaoIndexInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CDaoIndexFieldInfo* m_pFieldInfos; // Primary
+ short m_nFields; // Primary
+ BOOL m_bPrimary; // Secondary
+ BOOL m_bUnique; // Secondary
+ BOOL m_bClustered; // Secondary
+ BOOL m_bIgnoreNulls; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bForeign; // Secondary
+ long m_lDistinctCount; // All
+
+// Implementation
+ virtual ~CDaoIndexInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strForeignName; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationInfo
+{
+// Constructor
+ CDaoRelationInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CString m_strTable; // Primary
+ CString m_strForeignTable; // Primary
+ long m_lAttributes; // Secondary
+ CDaoRelationFieldInfo* m_pFieldInfos; // Secondary
+ short m_nFields; // Secondary
+
+// Implementation
+ virtual ~CDaoRelationInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoQueryDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ BOOL m_bUpdatable; // Secondary
+ BOOL m_bReturnsRecords; // Secondary
+ CString m_strSQL; // All
+ CString m_strConnect; // All
+ short m_nODBCTimeout; // See readme
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoParameterInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleVariant m_varValue; // Secondary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+////////////////////////////////////////////////////////////////////////
+// DAO Helpers
+//
+
+// Flags for getting and/or setting object properties
+#define AFX_DAO_PRIMARY_INFO 0x00000001 // Get only primary
+#define AFX_DAO_SECONDARY_INFO 0x00000002 // Get primary & secondary
+#define AFX_DAO_ALL_INFO 0x00000004 // Get All info
+
+// Jet engine TRUE/FALSE definitions
+#define AFX_DAO_TRUE (-1L)
+#define AFX_DAO_FALSE 0
+
+// Set CDaoRecordset::Open option to use m_nDefaultType
+#define AFX_DAO_USE_DEFAULT_TYPE (-1L)
+
+// Flags used for Move/Find
+#define AFX_DAO_NEXT (+1L)
+#define AFX_DAO_PREV (-1L)
+#define AFX_DAO_FIRST LONG_MIN
+#define AFX_DAO_LAST LONG_MAX
+
+// Default sizes for DFX function PreAlloc sizes
+#define AFX_DAO_TEXT_DEFAULT_SIZE 255
+#define AFX_DAO_BINARY_DEFAULT_SIZE 2048
+#define AFX_DAO_LONGBINARY_DEFAULT_SIZE 32768
+
+// Flag used for DFX functions dwBindOptions bitmask
+#define AFX_DAO_ENABLE_FIELD_CACHE 0x01
+#define AFX_DAO_DISABLE_FIELD_CACHE 0
+
+// Field Flags, used to indicate status of fields
+#define AFX_DAO_FIELD_FLAG_DIRTY 0x01
+#define AFX_DAO_FIELD_FLAG_NULL 0x02
+#define AFX_DAO_FIELD_FLAG_NULLABLE_KNOWN 0x04
+#define AFX_DAO_FIELD_FLAG_NULLABLE 0x08
+
+// Extended error codes
+#define NO_AFX_DAO_ERROR 0
+#define AFX_DAO_ERROR_MIN 2000
+#define AFX_DAO_ERROR_ENGINE_INITIALIZATION AFX_DAO_ERROR_MIN + 0
+#define AFX_DAO_ERROR_DFX_BIND AFX_DAO_ERROR_MIN + 1
+#define AFX_DAO_ERROR_OBJECT_NOT_OPEN AFX_DAO_ERROR_MIN + 2
+#define AFX_DAO_ERROR_MAX AFX_DAO_ERROR_MIN + 2
+
+// Object status flags
+#define AFX_DAO_IMPLICIT_WS 0x01
+#define AFX_DAO_IMPLICIT_DB 0x02
+#define AFX_DAO_IMPLICIT_QD 0x04
+#define AFX_DAO_IMPLICIT_TD 0x08
+#define AFX_DAO_IMPLICIT_CLOSE 0x40
+#define AFX_DAO_DEFAULT_WS 0x80
+
+// CDaoRecordView status flags
+#define AFX_DAOVIEW_SCROLL_NEXT 0x01
+#define AFX_DAOVIEW_SCROLL_LAST 0x02
+#define AFX_DAOVIEW_SCROLL_BACKWARD 0x04
+
+// Logging helpers
+void AFXAPI AfxDaoCheck(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine, int nError = NO_AFX_DAO_ERROR,
+ BOOL bMemOnly = FALSE);
+
+#ifdef _DEBUG
+void AFXAPI AfxDaoTrace(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine);
+#endif
+
+#ifdef _DEBUG
+#define DAO_CHECK(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) AfxDaoTrace(f, #f, THIS_FILE, __LINE__)
+#else
+#define DAO_CHECK(f) AfxDaoCheck(f, NULL, NULL, 0)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, NULL, NULL, 0, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, NULL, NULL, 0, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) f
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoFieldExchange - for field exchange
+class CDaoFieldExchange
+{
+// Attributes
+public:
+ enum DFX_Operation
+ {
+ AddToParameterList, // builds PARAMETERS clause
+ AddToSelectList, // builds SELECT clause
+ BindField, // sets up binding structure
+ BindParam, // sets parameter values
+ Fixup, // sets NULL status
+ AllocCache, // allocates cache used for dirty check
+ StoreField, // saves current record to cache
+ LoadField, // restores cached data to member vars
+ FreeCache, // frees cache
+ SetFieldNull, // sets field status & value to NULL
+ MarkForAddNew, // marks fields dirty if not PSEUDO NULL
+ MarkForEdit, // marks fields dirty if don't match cache
+ SetDirtyField, // sets field values marked as dirty
+#ifdef _DEBUG
+ DumpField,
+#endif
+ MaxDFXOperation, // dummy operation type for input checking
+ };
+
+ UINT m_nOperation; // type of exchange operation
+ CDaoRecordset* m_prs; // recordset handle
+
+// Operations
+public:
+ enum FieldType
+ {
+ none,
+ outputColumn,
+ param,
+ };
+
+ void SetFieldType(UINT nFieldType);
+ BOOL IsValidOperation();
+
+// Implementation
+public:
+ CDaoFieldExchange(UINT nOperation, CDaoRecordset* prs,
+ void* pvField = NULL);
+
+ void Default(LPCTSTR lpszName, void* pv, DWORD dwFieldType,
+ DWORD dwBindOptions = 0);
+
+ static void PASCAL AppendParamType(CString& strParamList, DWORD dwParamType);
+ static CDaoFieldCache* PASCAL GetCacheValue(CDaoRecordset* prs, void* pv);
+ static void PASCAL SetNullValue(void* pv, DWORD dwDataType);
+ static BOOL PASCAL IsNullValue(void* pv, DWORD dwDataType);
+ static void PASCAL AllocCacheValue(CDaoFieldCache*& pCache, DWORD dwDataType);
+ static void PASCAL DeleteCacheValue(CDaoFieldCache* pCache, DWORD dwDataType);
+ static void PASCAL CopyValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static BOOL PASCAL CompareValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static void PASCAL FillVariant(void* pvValue, DWORD dwDataType, COleVariant** ppVar);
+
+ // Current type of field
+ UINT m_nFieldType;
+ void* m_pvField;
+ UINT m_nField;
+ UINT m_nParam;
+ UINT m_nFieldFound;
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// variable length data
+void AFXAPI DFX_Text(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CString& value, int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
+ DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Binary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CByteArray& value, int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
+ DWORD dwBindOptions = 0);
+void AFXAPI DFX_LongBinary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CLongBinary& value, DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
+ DWORD dwBndOptions = 0);
+
+//fixed length data
+void AFXAPI DFX_Bool(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BOOL& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Byte(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BYTE& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Short(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ short& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Long(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ long& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Currency(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleCurrency& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Single(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ float& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Double(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ double& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_DateTime(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleDateTime& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+
+//////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BOOL& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, short& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleCurrency& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleDateTime& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+
+////////////////////////////////////////////////////////////////////////
+// CDaoWorkspace - a DAO Workspace
+
+class CDaoWorkspace : public CObject
+{
+ DECLARE_DYNAMIC(CDaoWorkspace)
+
+// Constructors
+public:
+ CDaoWorkspace();
+
+ virtual void Create(LPCTSTR lpszName, LPCTSTR lpszUserName,
+ LPCTSTR lpszPassword);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ DAOWorkspace* m_pDAOWorkspace;
+
+ static CString PASCAL GetVersion();
+ static CString PASCAL GetIniPath();
+ static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
+ static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
+ static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
+ static short PASCAL GetLoginTimeout();
+ static void PASCAL SetLoginTimeout(short nSeconds);
+
+ CString GetName();
+ CString GetUserName();
+ void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
+ BOOL GetIsolateODBCTrans();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ void BeginTrans();
+ void CommitTrans();
+ void Rollback();
+
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale = dbLangGeneral,
+ int nOptions = 0);
+ // Password parameter added late in dev cycle, new interface req'd
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale, int nOptions,
+ LPCTSTR lpszPassword);
+ static void PASCAL RepairDatabase(LPCTSTR lpszName);
+
+ static void PASCAL Idle(int nAction = dbFreeLocks);
+
+ short GetWorkspaceCount();
+ void GetWorkspaceInfo(int nIndex, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetWorkspaceInfo(LPCTSTR lpszName, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetDatabaseCount();
+ void GetDatabaseInfo(int nIndex, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetDatabaseInfo(LPCTSTR lpszName, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoWorkspace();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOWorkspaces* m_pDAOWorkspaces;
+ DAODatabases* m_pDAODatabases;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapDatabases; // Map of all Open CDaoDatabases
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ static void AFX_CDECL InitializeEngine();
+
+ void InitWorkspacesCollection();
+ void FillWorkspaceInfo(DAOWorkspace* pDAOWorkspace,
+ CDaoWorkspaceInfo& wsinfo, DWORD dwOptions);
+
+ void InitDatabasesCollection();
+ void FillDatabaseInfo(DAODatabase* pDAODatabase,
+ CDaoDatabaseInfo& dbinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+////////////////////////////////////////////////////////////////////////
+// CDaoException - DAO error trapping mechanism
+class CDaoException : public CException
+{
+ DECLARE_DYNAMIC(CDaoException)
+
+// Constructors
+public:
+ CDaoException();
+
+// Attributes
+public:
+ CDaoErrorInfo* m_pErrorInfo;
+
+ SCODE m_scode;
+ int m_nAfxDaoError; // DAO class extended error code
+
+// Operations
+public:
+ short GetErrorCount();
+ void GetErrorInfo(int nIndex);
+
+// Implementation
+public:
+ virtual ~CDaoException();
+
+ DAOError* m_pDAOError;
+ DAOErrors* m_pDAOErrors;
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+protected:
+ void InitErrorsCollection();
+ void FillErrorInfo();
+};
+
+void AFXAPI AfxThrowDaoException(int nAfxDaoError = NO_AFX_DAO_ERROR,
+ SCODE scode = S_OK);
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoDatabase - a DAO Database
+
+class CDaoDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDaoDatabase)
+
+// Constructors
+public:
+ CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
+
+ virtual void Create(LPCTSTR lpszName,
+ LPCTSTR lpszLocale = dbLangGeneral, int dwOptions = 0);
+
+ virtual void Open(LPCTSTR lpszName, BOOL bExclusive = FALSE,
+ BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T(""));
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoWorkspace* m_pWorkspace;
+ DAODatabase* m_pDAODatabase;
+
+ BOOL IsOpen() const;
+
+ BOOL CanUpdate();
+ BOOL CanTransact();
+
+ CString GetName();
+ CString GetConnect();
+
+ CString GetVersion();
+ short GetQueryTimeout();
+ void SetQueryTimeout(short nSeconds);
+ long GetRecordsAffected();
+
+// Operations
+public:
+ void Execute(LPCTSTR lpszSQL, int nOptions = dbFailOnError);
+
+ void DeleteTableDef(LPCTSTR lpszName);
+ void DeleteQueryDef(LPCTSTR lpszName);
+
+ void CreateRelation(LPCTSTR lpszName, LPCTSTR lpszTable,
+ LPCTSTR lpszForeignTable, long lAttributes,
+ LPCTSTR lpszField, LPCTSTR lpszForeignField);
+ void CreateRelation(CDaoRelationInfo& relinfo);
+ void DeleteRelation(LPCTSTR lpszName);
+
+ short GetTableDefCount();
+ void GetTableDefInfo(int nIndex, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetTableDefInfo(LPCTSTR lpszName, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetRelationCount();
+ void GetRelationInfo(int nIndex, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetRelationInfo(LPCTSTR lpszName, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetQueryDefCount();
+ void GetQueryDefInfo(int nIndex, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetQueryDefInfo(LPCTSTR lpszName, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOTableDefs* m_pDAOTableDefs;
+ DAORelations* m_pDAORelations;
+ DAOQueryDefs* m_pDAOQueryDefs;
+ DAORecordsets* m_pDAORecordsets;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapTableDefs; // Map of all Open CDaoTableDefs
+ CMapPtrToPtr m_mapQueryDefs; // Map of all Open CDaoQueryDefs
+ CMapPtrToPtr m_mapRecordsets; // Map of all Open CDaoRecordsets
+
+protected:
+ BOOL m_bOpen;
+
+ void InitWorkspace();
+ void InitTableDefsCollection();
+ void FillTableDefInfo(DAOTableDef* pDAOTableDef,
+ CDaoTableDefInfo& tabledefinfo, DWORD dwOptions);
+ void InitRelationsCollection();
+ void FillRelationInfo(DAORelation* pDAORelation,
+ CDaoRelationInfo& relinfo, DWORD dwOptions);
+ void InitQueryDefsCollection();
+ void FillQueryDefInfo(DAOQueryDef* pDAOQueryDef,
+ CDaoQueryDefInfo& querydefinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoTableDef - a DAO TableDef
+
+class CDaoTableDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoTableDef)
+
+// Constructors
+public:
+ CDaoTableDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName, long lAttributes = 0,
+ LPCTSTR lpszSrcTable = NULL, LPCTSTR lpszConnect = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOTableDef* m_pDAOTableDef;
+
+ BOOL IsOpen() const;
+ BOOL CanUpdate();
+
+ void SetName(LPCTSTR lpszName);
+ CString GetName();
+ void SetSourceTableName(LPCTSTR lpszSrcTableName);
+ CString GetSourceTableName();
+ void SetConnect(LPCTSTR lpszConnect);
+ CString GetConnect();
+ void SetAttributes(long lAttributes);
+ long GetAttributes();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ void SetValidationRule(LPCTSTR lpszValidationRule);
+ CString GetValidationRule();
+ void SetValidationText(LPCTSTR lpszValidationText);
+ CString GetValidationText();
+ long GetRecordCount();
+
+// Overridables
+public:
+
+// Operations
+public:
+ void CreateField(LPCTSTR lpszName, short nType, long lSize,
+ long lAttributes = 0);
+ void CreateField(CDaoFieldInfo& fieldinfo);
+ void DeleteField(LPCTSTR lpszName);
+ void DeleteField(int nIndex);
+
+ void CreateIndex(CDaoIndexInfo& indexinfo);
+ void DeleteIndex(LPCTSTR lpszName);
+ void DeleteIndex(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ void RefreshLink();
+
+// Implementation
+public:
+ ~CDaoTableDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoQueryDef - a DAO QueryDef
+
+class CDaoQueryDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoQueryDef)
+
+// Constructors
+public:
+ CDaoQueryDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName = NULL,
+ LPCTSTR lpszSQL = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOQueryDef* m_pDAOQueryDef;
+
+ BOOL CanUpdate();
+
+ CString GetName();
+ void SetName(LPCTSTR lpszName);
+ CString GetSQL();
+ void SetSQL(LPCTSTR lpszSQL);
+ short GetType();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ CString GetConnect();
+ void SetConnect(LPCTSTR lpszConnect);
+ short GetODBCTimeout();
+ void SetODBCTimeout(short nODBCTimeout);
+ BOOL GetReturnsRecords();
+ void SetReturnsRecords(BOOL bReturnsRecords);
+ long GetRecordsAffected();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ virtual void Execute(int nOptions = dbFailOnError);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetParameterCount();
+ void GetParameterInfo(int nIndex, CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetParameterInfo(LPCTSTR lpszName,
+ CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ ~CDaoQueryDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOParameters* m_pDAOParameters;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitParametersCollection();
+ void FillParameterInfo(DAOParameter* pDAOParameter,
+ CDaoParameterInfo& paraminfo, DWORD dwInfoOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoRecordset - the result of a query or base table browse
+
+class CDaoRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CDaoRecordset)
+
+// Constructor
+public:
+ CDaoRecordset(CDaoDatabase* pDatabase = NULL);
+
+ virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, int nOptions = 0);
+ virtual void Open(CDaoQueryDef* pQueryDef,
+ int nOpenType = dbOpenDynaset, int nOptions = 0);
+ virtual void Open(CDaoTableDef* pTableDef,
+ int nOpenType = dbOpenTable, int nOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase; // Source database for this result set
+ DAORecordset* m_pDAORecordset;
+
+ CString m_strFilter; // Filter string used when constructing SQL
+ CString m_strSort; // Sort string used when constructing SQL
+
+ int m_nFields;
+ int m_nParams;
+
+ BOOL m_bCheckCacheForDirtyFields; // Switch for dirty field checking.
+
+ BOOL CanUpdate() const;
+ BOOL CanAppend() const;
+ BOOL CanScroll() const;
+ BOOL CanRestart();
+ BOOL CanTransact();
+ BOOL CanBookmark();
+
+ BOOL IsOpen() const;
+ BOOL IsBOF();
+ BOOL IsEOF();
+ BOOL IsDeleted() const;
+
+ BOOL IsFieldDirty(void* pv);
+ BOOL IsFieldNull(void* pv);
+ BOOL IsFieldNullable(void* pv);
+
+ CString GetName();
+ short GetType();
+ short GetEditMode();
+ CString GetSQL() const;
+
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ COleVariant GetLastModifiedBookmark();
+ CString GetValidationRule();
+ CString GetValidationText();
+ CString GetCurrentIndex();
+ void SetCurrentIndex(LPCTSTR lpszIndex);
+
+ long GetRecordCount();
+
+// Operations
+public:
+ // Cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ BOOL FindNext(LPCTSTR lpszFilter);
+ BOOL FindPrev(LPCTSTR lpszFilter);
+ BOOL FindFirst(LPCTSTR lpszFilter);
+ BOOL FindLast(LPCTSTR lpszFilter);
+ virtual BOOL Find(long lFindType, LPCTSTR lpszFilter);
+
+ COleVariant GetBookmark();
+ void SetBookmark(COleVariant varBookmark);
+ long GetAbsolutePosition();
+ void SetAbsolutePosition(long lPosition);
+ float GetPercentPosition();
+ void SetPercentPosition(float fPosition);
+
+ // seek allowed on recordset opened as tables (max keys = 13)
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKey1,
+ COleVariant* pKey2 = NULL, COleVariant* pKey3 = NULL);
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKeyArray, WORD nKeys);
+
+ // edit buffer operations
+ virtual void AddNew();
+ virtual void Edit();
+ virtual void Update();
+ virtual void Delete();
+ virtual void CancelUpdate();
+
+ // field operations
+ virtual COleVariant GetFieldValue(LPCTSTR lpszName);
+ virtual COleVariant GetFieldValue(int nIndex);
+ virtual void SetFieldValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetFieldValue(int nIndex,
+ const COleVariant& varValue);
+ void SetFieldValue(int nIndex, LPCTSTR lpszValue);
+ void SetFieldValue(LPCTSTR lpszName, LPCTSTR lpszValue);
+ void SetFieldValueNull(LPCTSTR lpszName);
+ void SetFieldValueNull(int nIndex);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ void SetFieldDirty(void* pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void* pv, BOOL bNull = TRUE);
+
+ void SetLockingMode(BOOL bPessimistic);
+ BOOL GetLockingMode();
+
+ // Recordset operations
+ virtual void Requery();
+
+ // Jet's remote data caching operations
+ void SetCacheStart(COleVariant varBookmark);
+ COleVariant GetCacheStart();
+ void SetCacheSize(long lSize);
+ long GetCacheSize();
+ void FillCache(long* pSize = NULL, COleVariant* pBookmark = NULL);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+ virtual CString GetDefaultDBName();
+ virtual CString GetDefaultSQL();
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CDaoFieldExchange* pFX);
+
+// Implementation
+public:
+ virtual ~CDaoRecordset();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ CString m_strSQL;
+
+ CDaoQueryDef* m_pQueryDef; // Source query for this result set
+ CDaoTableDef* m_pTableDef;
+ ICDAORecordset* m_pICDAORecordsetGetRows;
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+ void ResetCursor();
+ void SetCursorAttributes();
+ void ResetCursorAttributes();
+ void GetDataAndFixupNulls();
+ DWORD GetFieldLength(int nFieldIndex);
+
+ BOOL IsFieldStatusDirty(UINT nField);
+ void SetDirtyFieldStatus(UINT nField);
+ void ClearDirtyFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNull(UINT nField);
+ void SetNullFieldStatus(UINT nField);
+ void ClearNullFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullable(UINT nField);
+ void SetNullableFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullableKnown(UINT nField);
+ void SetNullableKnownFieldStatus(UINT nField);
+
+ void ClearFieldStatusFlags();
+ BOOL IsMatch();
+
+ DWORD m_cbFixedLengthFields;
+ DAOCOLUMNBINDING* m_prgDaoColBindInfo;
+ DWORD* m_pulColumnLengths;
+ DAOFETCHROWS m_DaoFetchRows;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+
+ CMapPtrToPtr* m_pMapFieldCache;
+ CMapPtrToPtr* m_pMapFieldIndex;
+
+ static void AFX_CDECL StripBrackets(LPCTSTR lpszSrc, LPTSTR lpszDest);
+
+protected:
+ BOOL m_bOpen;
+ int m_nStatus;
+
+ BOOL m_bAppendable;
+ BOOL m_bScrollable;
+ BOOL m_bDeleted;
+
+ int m_nOpenType;
+ int m_nDefaultType;
+ int m_nOptions;
+
+ CString m_strRequerySQL;
+ CString m_strRequeryFilter;
+ CString m_strRequerySort;
+
+ void BuildSQL();
+ void AllocDatabase();
+
+ // RFX Operation Cover Functions
+ void BuildSelectList();
+ void BuildParameterList();
+ void BindFields();
+ void BindParameters();
+ void Fixup();
+ void AllocCache();
+ void StoreFields();
+ void LoadFields();
+ void FreeCache();
+ void MarkForEdit();
+ void MarkForAddNew();
+ int GetFieldIndex(void* pv);
+ virtual void SetDirtyFields();
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+
+ friend class CDaoFieldExchange;
+ friend class CDaoRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoRecordView - form for viewing data records
+
+class CDaoRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CDaoRecordView)
+
+// Construction
+protected: // must derive your own class
+ CDaoRecordView(LPCTSTR lpszTemplateName);
+ CDaoRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CDaoRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CDaoRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ int m_nStatus;
+ COleVariant m_varBookmarkCurrent;
+ COleVariant m_varBookmarkFirst;
+ COleVariant m_varBookmarkLast;
+
+ //{{AFX_MSG(CDaoRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// DAODBEngine helpers - implementation specific and undocumented
+void AFXAPI AfxDaoInit();
+DAODBEngine* AFXAPI AfxDaoGetEngine();
+void AFXAPI AfxDaoTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDAOCORE_INLINE inline
+#define _AFXDAODFX_INLINE inline
+#define _AFXDAOVIEW_INLINE inline
+#include <afxdao.inl>
+#undef _AFXDAOCORE_INLINE
+#undef _AFXDAODFX_INLINE
+#undef _AFXDAOVIEW_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDAO_H__
+
+/////////////////////////////////////////////////////////////////////////////