⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual c++多线程dao处理 .txt

📁 vlan的设置Visual C++多线程DAO处理
💻 TXT
📖 第 1 页 / 共 2 页
字号:
{ 
return CDaoRecordset::GetRecordCount(); 
} 
else 
{ 
return (long)AfxGetMainWnd()-> 
SendMessage(WM_MULTIDAOMESSAGE, MultiDaoGetRecordCount, (LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::MoveNext() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::MoveNext(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoMoveNext, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::MovePrev() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::MovePrev(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoMovePrev, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::MoveFirst() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::MoveFirst(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoMoveFirst, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::MoveLast() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::MoveLast(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoMoveLast, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::Move(long lRows) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::Move(lRows); 
} 
else 
{ 
pParam1 = (void *)&lRows; 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoMove, 
(LPARAM)this); 
} 
} 

BOOL CMultiDaoRecordSet::FindNext(LPCTSTR lpszFilter) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::FindNext(lpszFilter); 
} 
else 
{ 
pParam1 = (void *)lpszFilter; 
return (BOOL)AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoFindNext, 
(LPARAM)this); 
} 
} 

BOOL CMultiDaoRecordSet::FindPrev(LPCTSTR lpszFilter) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::FindPrev(lpszFilter); 
} 
else 
{ 
pParam1 = (void *)lpszFilter; 
return (BOOL)AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoFindPrev, 
(LPARAM)this); 
} 
} 

BOOL CMultiDaoRecordSet::FindFirst(LPCTSTR lpszFilter) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::FindFirst(lpszFilter); 
} 
else 
{ 
pParam1 = (void *)lpszFilter; 
return (BOOL)AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoFindFirst, 
(LPARAM)this); 
} 
} 

BOOL CMultiDaoRecordSet::FindLast(LPCTSTR lpszFilter) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::FindLast(lpszFilter); 
} 
else 
{ 
pParam1 = (void *)lpszFilter; 
return (BOOL)AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoFindLast, 
(LPARAM)this); 
} 
} 

BOOL CMultiDaoRecordSet::Find(long lFindType, LPCTSTR lpszFilter) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::Find(lFindType, lpszFilter); 
} 
else 
{ 
pParam1 = (void *)&lFindType; 
pParam2 = (void *)lpszFilter; 
return (BOOL)AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoFind, 
(LPARAM)this); 
} 
} 

COleVariant CMultiDaoRecordSet::GetBookmark() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
return CDaoRecordset::GetBookmark(); 
} 
else 
{ 
return AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoGetBookmark, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::SetBookmark(COleVariant varBookmark) 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::SetBookmark(varBookmark); 
} 
else 
{ 
pParam1 = (void *)&varBookmark; 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoSetBookmark, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::AddNew() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::AddNew(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoAddNew, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::Edit() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::Edit(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoEdit, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::Update() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::Update(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoUpdate, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::Delete() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::Delete(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoDelete, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::CancelUpdate() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::CancelUpdate(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoCancelUpdate, 
(LPARAM)this); 
} 
} 

void CMultiDaoRecordSet::Requery() 
{ 
CMYApp *pApp = ((CMYApp *)AfxGetApp()); 
if (pApp->pGUIThread == AfxGetThread()) 
{ 
CDaoRecordset::Requery(); 
} 
else 
{ 
AfxGetMainWnd()->SendMessage(WM_MULTIDAOMESSAGE, MultiDaoRequery, 
(LPARAM)this); 
} 
} 

and, Multidaorecordset.h


#if !defined(AFX_MULTIDAORECORDSET_H__BECC8DC3_A967_11D2_BA4C_006097808646__INCLUDED_)
#define AFX_MULTIDAORECORDSET_H__BECC8DC3_A967_11D2_BA4C_006097808646__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// MultiDaoRecordSet.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CMultiDaoRecordSet DAO recordset

enum {
MultiDaoOpen, 
MultiDaoClose, 
MultiDaoIsOpen,
MultiDaoIsBOF,
MultiDaoIsEOF,
MultiDaoIsDeleted,
MultiDaoIsFieldDirty,
MultiDaoIsFieldNull,
MultiDaoIsFieldNullable,
MultiDaoGetName,
MultiDaoGetType,
MultiDaoGetSQL,
MultiDaoGetEditMode,
MultiDaoGetLastModifiedBookmark,
MultiDaoGetRecordCount,
MultiDaoMoveNext,
MultiDaoMovePrev,
MultiDaoMoveFirst,
MultiDaoMoveLast,
MultiDaoMove,
MultiDaoFindNext,
MultiDaoFindPrev,
MultiDaoFindFirst,
MultiDaoFindLast,
MultiDaoFind,
MultiDaoGetBookmark,
MultiDaoSetBookmark,
MultiDaoAddNew,
MultiDaoEdit,
MultiDaoUpdate,
MultiDaoDelete,
MultiDaoCancelUpdate,
MultiDaoRequery,
};

#ifdef MULTIDAORECORDSET_CPP
CString cDAOMessageArray[] = 
{
"MultiDaoOpen", 
"MultiDaoClose", 
"MultiDaoIsOpen",
"MultiDaoIsBOF",
"MultiDaoIsEOF",
"MultiDaoIsDeleted",
"MultiDaoIsFieldDirty",
"MultiDaoIsFieldNull",
"MultiDaoIsFieldNullable",
"MultiDaoGetName",
"MultiDaoGetType",
"MultiDaoGetSQL",
"MultiDaoGetEditMode",
"MultiDaoGetLastModifiedBookmark",
"MultiDaoGetRecordCount",
"MultiDaoMoveNext",
"MultiDaoMovePrev",
"MultiDaoMoveFirst",
"MultiDaoMoveLast",
"MultiDaoMove",
"MultiDaoFindNext",
"MultiDaoFindPrev",
"MultiDaoFindFirst",
"MultiDaoFindLast",
"MultiDaoFind",
"MultiDaoGetBookmark",
"MultiDaoSetBookmark",
"MultiDaoAddNew",
"MultiDaoEdit",
"MultiDaoUpdate",
"MultiDaoDelete",
"MultiDaoCancelUpdate",
"MultiDaoRequery",
};
#else
extern CString cDAOMessageArray[]; 
#endif

class CMultiDaoRecordSet : public CDaoRecordset
{
public:

//jtm
//FORCE user to pass database...
CMultiDaoRecordSet(CDaoDatabase* pDatabase);

~CMultiDaoRecordSet();

DECLARE_DYNAMIC(CMultiDaoRecordSet)

// Field/Param Data
//{{AFX_FIELD(CMultiDaoRecordSet, CDaoRecordset)
//}}AFX_FIELD

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMultiDaoRecordSet)
public:
virtual CString GetDefaultDBName(); // Default database name
//}}AFX_VIRTUAL

// Implementation
//jtm
//redefined public functions
//Note: I am only redefining SOME
//of the public functions this is NOT
//a FULL implementation !!!!!!
public:
//jtm -- only supporting this open.....
virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL, int nOptions = 0);
virtual void Close();
BOOL IsOpen();
BOOL IsBOF();
BOOL IsEOF();
BOOL IsDeleted();
BOOL IsFieldDirty(void* pv);
BOOL IsFieldNull(void* pv);
BOOL IsFieldNullable(void* pv);
CString GetName();
short GetType();
short GetEditMode();
CString GetSQL();
COleVariant GetLastModifiedBookmark();
long GetRecordCount(); 
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); 
virtual void AddNew();
virtual void Edit();
virtual void Update();
virtual void Delete();
virtual void CancelUpdate(); 
virtual void Requery();

void *pParam1;
void *pParam2;
void *pParam3;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the //previous line.

#endif // !defined(AFX_MULTIDAORECORDSET_H__BECC8DC3_A967_11D2_BA4C_006097808646__INCLUDED_)
 


  调试的东西等你搞好你的程序后就可以删了,不过要注意,不要直接调用CDaoRecordset,否则,你的应用程序就会问题。我试了一下,使用这个类的时候,你的计算机的速度会稍微的暂停几秒钟(正在运行你的程序),不过这不会影响到你的计算机的使用的,因为这个类DAO的调用是通过GUI的,如果你使用不当的话(比如临界区问题)就会导致计算机的死锁
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -