📄 afxdao.h
字号:
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);
void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, LPTSTR pstrValue,
int nMaxLen, 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);
void AFXAPI DDX_FieldSlider(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
BOOL IsNew() const;
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();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -