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

📄 recorddataview.cpp

📁 数据库查询、显示程序
💻 CPP
字号:
// RECORDDATAView.cpp : implementation of the CRECORDDATAView class
//

#include "stdafx.h"
#include "RECORDDATA.h"

#include "RECORDDATASet.h"
#include "RECORDDATADoc.h"
#include "RECORDDATAView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRECORDDATAView

IMPLEMENT_DYNCREATE(CRECORDDATAView, CRecordView)

BEGIN_MESSAGE_MAP(CRECORDDATAView, CRecordView)
	//{{AFX_MSG_MAP(CRECORDDATAView)
	ON_COMMAND(ID_RECORD_ADD, OnRecordAdd)
	ON_COMMAND(ID_RECORD_CLEARFIELDS, OnRecordClearfields)
	ON_COMMAND(ID_RECORD_DELETE, OnRecordDelete)
	ON_UPDATE_COMMAND_UI(ID_RECORD_DELETE, OnUpdateRecordDelete)
	ON_COMMAND(ID_RECORD_UPDATE, OnRecordUpdate)
	ON_UPDATE_COMMAND_UI(ID_RECORD_UPDATE, OnUpdateRecordUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRECORDDATAView construction/destruction

CRECORDDATAView::CRECORDDATAView()
	: CRecordView(CRECORDDATAView::IDD)
{
	//{{AFX_DATA_INIT(CRECORDDATAView)
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CRECORDDATAView::~CRECORDDATAView()
{
}

void CRECORDDATAView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRECORDDATAView)
	DDX_FieldText(pDX, IDC_EDIT_ArrivedStation, m_pSet->m_arrivedstation, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_GateNum, m_pSet->m_gatenumber, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_SeatType, m_pSet->m_seattype, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_StartStation, m_pSet->m_startstation, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_TicketNum, m_pSet->m_ticketnumber, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_TicketType, m_pSet->m_tickettype, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_TrainNum, m_pSet->m_trainnumber, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_GateTime, m_pSet->m_gatetime, m_pSet);
	//}}AFX_DATA_MAP
}

BOOL CRECORDDATAView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRecordView::PreCreateWindow(cs);
}

void CRECORDDATAView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_rECORDDATASet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CRECORDDATAView diagnostics

#ifdef _DEBUG
void CRECORDDATAView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CRECORDDATAView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

CRECORDDATADoc* CRECORDDATAView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRECORDDATADoc)));
	return (CRECORDDATADoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRECORDDATAView database support
CRecordset* CRECORDDATAView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CRECORDDATAView message handlers

void CRECORDDATAView::OnRecordAdd() 
{
	// TODO: Add your command handler code here
	m_pSet->AddNew();
	UpdateData(TRUE);
	if (m_pSet->CanUpdate())
	{
		m_pSet->Update();
	}
	if(!m_pSet->IsEOF())
	{
		m_pSet->MoveLast();
	}
	//m->Requery();//for sorted sets
	UpdateData(FALSE);

}

void CRECORDDATAView::OnRecordClearfields() 
{
	// TODO: Add your command handler code here
	m_pSet->SetFieldNull(NULL);
	UpdateData(FALSE);
}

void CRECORDDATAView::OnRecordDelete() 
{
	// TODO: Add your command handler code here
	CRecordsetStatus status;
	try 
	{
		m_pSet->Delete();
	}
	catch(CDBException* e)
	{
		AfxMessageBox(e->m_strError);
		e->Delete();
		m_pSet->MoveFirst();//lost our place!
		UpdateData(FALSE);
		return;
	}
	m_pSet->GetStatus(status);
	if (status.m_lCurrentRecord==0)
	{//we deleted last of 2 records
		m_pSet->MoveFirst();
	}
	else
	{
		m_pSet->MoveNext();
	}
	UpdateData(FALSE);
}

void CRECORDDATAView::OnUpdateRecordDelete(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!m_pSet->IsEOF());
}

void CRECORDDATAView::OnRecordUpdate() 
{
	// TODO: Add your command handler code here
	m_pSet->Edit();
	UpdateData(TRUE);
	if(m_pSet->CanUpdate())
	{
		m_pSet->Update();
	}
//should requery if key field changed
}

void CRECORDDATAView::OnUpdateRecordUpdate(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!m_pSet->IsEOF());
}

⌨️ 快捷键说明

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