1999.5.15 조경민
다이얼로그 베이스 DB프로그램 짜기
Dlg프로젝트를 연다.
먼저 StdAfx.h에서 다음을 추가한다.
#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes
#endif // _AFX_NO_DAO_SUPPORT
이는 DAO나 ODBC지원을 위함이다.
원하는 레코드셋을 만든다.
클래스위자드에서 CRecordset을 상속받은후 이름을 정하고 OK하면
ODBC연결대화상자가 뜬다. 이제 셋을 만들수 있다.
CRecordView없이 DoDataExchange하기
dlg.h에 CXXSet* m_pSet;을 맴버로 둔다.
dlg::OninitiDlg 에서
m_pSet = new CSLESet(NULL);
m_pSet->m_strFilter = _T("");
//m_pSet->m_strSort = "ID_NO";
BeginWaitCursor();
TRY
{
m_pSet->Open();
}
CATCH(CDBException , e)
{
AfxMessageBox(e->m_strError);
return NULL;
}
END_CATCH
EndWaitCursor();
UpdateData(FALSE); <- DoDataExchange 콜
DoDataChange 설정
DDX_FieldText(pDX, 컨트롤아이디 , m_pSet->m_필드명, m_pSet);
void CMergeTableDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
if( !m_pSet )return;
DDX_FieldText(pDX, IDC_PHOTONR, m_pSet->m_PHOTONR, m_pSet);
DDX_FieldText(pDX, IDC_COMPANY, m_pSet->m_COMPANY, m_pSet);
DDX_FieldText(pDX, IDC_IDNO, m_pSet->m_ID_NO, m_pSet);
////// AFX밖에다 놓으면 클래스위자드 오작동을 방지할수 있다.
//{{AFX_DATA_MAP(CMergeTableDlg)
//}}AFX_DATA_MAP
}
Prev와 Next 함수 만들기
버튼 두개를 이용
void CMergeTableDlg::OnNext()
{
// TODO: Add your control notification handler code here
BeginWaitCursor();
m_pSet->MoveNext();
EndWaitCursor();
UpdateData(FALSE);
}
void CMergeTableDlg::OnPrev()
{
// TODO: Add your control notification handler code here
BeginWaitCursor();
m_pSet->MovePrev();
EndWaitCursor();
UpdateData(FALSE);
}
다이얼로그 베이스 DB프로그램 짜기
Dlg프로젝트를 연다.
먼저 StdAfx.h에서 다음을 추가한다.
#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes
#endif // _AFX_NO_DAO_SUPPORT
이는 DAO나 ODBC지원을 위함이다.
원하는 레코드셋을 만든다.
클래스위자드에서 CRecordset을 상속받은후 이름을 정하고 OK하면
ODBC연결대화상자가 뜬다. 이제 셋을 만들수 있다.
CRecordView없이 DoDataExchange하기
dlg.h에 CXXSet* m_pSet;을 맴버로 둔다.
dlg::OninitiDlg 에서
m_pSet = new CSLESet(NULL);
m_pSet->m_strFilter = _T("");
//m_pSet->m_strSort = "ID_NO";
BeginWaitCursor();
TRY
{
m_pSet->Open();
}
CATCH(CDBException , e)
{
AfxMessageBox(e->m_strError);
return NULL;
}
END_CATCH
EndWaitCursor();
UpdateData(FALSE); <- DoDataExchange 콜
DoDataChange 설정
DDX_FieldText(pDX, 컨트롤아이디 , m_pSet->m_필드명, m_pSet);
void CMergeTableDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
if( !m_pSet )return;
DDX_FieldText(pDX, IDC_PHOTONR, m_pSet->m_PHOTONR, m_pSet);
DDX_FieldText(pDX, IDC_COMPANY, m_pSet->m_COMPANY, m_pSet);
DDX_FieldText(pDX, IDC_IDNO, m_pSet->m_ID_NO, m_pSet);
////// AFX밖에다 놓으면 클래스위자드 오작동을 방지할수 있다.
//{{AFX_DATA_MAP(CMergeTableDlg)
//}}AFX_DATA_MAP
}
Prev와 Next 함수 만들기
버튼 두개를 이용
void CMergeTableDlg::OnNext()
{
// TODO: Add your control notification handler code here
BeginWaitCursor();
m_pSet->MoveNext();
EndWaitCursor();
UpdateData(FALSE);
}
void CMergeTableDlg::OnPrev()
{
// TODO: Add your control notification handler code here
BeginWaitCursor();
m_pSet->MovePrev();
EndWaitCursor();
UpdateData(FALSE);
}
'KB > MFC/Win32' 카테고리의 다른 글
[mfc] 소켓 서포트 안하고 쓰기 (0) | 2004.03.19 |
---|---|
DLL을 사용하자 (0) | 2004.03.19 |
CWinThread 간단 사용 (0) | 2004.03.19 |
hook 설명 (0) | 2004.03.19 |
템플리트클래스.. (0) | 2004.03.19 |