www.pudn.com > chenjing.rar > NewBooksDlg.cpp


// NewBooksDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Library.h" 
#include "NewBooksDlg.h" 
#include "BookSet.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CNewBooksDlg dialog 
 
 
CNewBooksDlg::CNewBooksDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CNewBooksDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CNewBooksDlg) 
	m_strBookID = _T(""); 
	m_strBookName = _T(""); 
	m_strPress = _T(""); 
	m_dPrice = 0.0; 
	m_lTotal = 0; 
	m_strWriter = _T(""); 
	m_lNow = 0; 
	//}}AFX_DATA_INIT 
} 
 
 
void CNewBooksDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CNewBooksDlg) 
	DDX_Control(pDX, IDC_LIST_RESULT, m_ctrList); 
	DDX_Text(pDX, IDC_EDIT_BOOK_NO, m_strBookID); 
	DDX_Text(pDX, IDC_EDIT_BOOK_NAME, m_strBookName); 
	DDX_Text(pDX, IDC_EDIT_PRESS, m_strPress); 
	DDX_Text(pDX, IDC_EDIT_PRICE, m_dPrice); 
	DDX_Text(pDX, IDC_EDIT_TOTAL, m_lTotal); 
	DDX_Text(pDX, IDC_EDIT_WRITER, m_strWriter); 
	DDX_Text(pDX, IDC_EDIT_NOW, m_lNow); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CNewBooksDlg, CDialog) 
	//{{AFX_MSG_MAP(CNewBooksDlg) 
	ON_BN_CLICKED(IDC_BUTTON_IN, OnButtonIn) 
	ON_EN_UPDATE(IDC_EDIT_TOTAL, OnUpdateEditTotal) 
	ON_BN_CLICKED(IDC_BUTTON_CHECK_ALL, OnButtonCheckAll) 
	ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack) 
	ON_WM_CLOSE() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CNewBooksDlg message handlers 
 
 
BOOL CNewBooksDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	m_ctrList.InsertColumn(0,"书号"); 
	m_ctrList.InsertColumn(1,"书名"); 
	m_ctrList.InsertColumn(2,"作者"); 
	m_ctrList.InsertColumn(3,"出版社"); 
	m_ctrList.InsertColumn(4,"定价"); 
	m_ctrList.InsertColumn(5,"入库日期"); 
	m_ctrList.InsertColumn(6,"存储总量"); 
	m_ctrList.InsertColumn(7,"现存数量"); 
 
	RECT rect; 
	m_ctrList.GetWindowRect(&rect); 
	int Width=rect.right-rect.left; 
	m_ctrList.SetColumnWidth(0,Width/8); 
	m_ctrList.SetColumnWidth(1,Width/8); 
	m_ctrList.SetColumnWidth(2,Width/8); 
	m_ctrList.SetColumnWidth(3,Width/8); 
	m_ctrList.SetColumnWidth(4,Width/8); 
	m_ctrList.SetColumnWidth(5,Width/8); 
	m_ctrList.SetColumnWidth(6,Width/8); 
	m_ctrList.SetColumnWidth(7,Width/8); 
	m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT); 
 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
 
void CNewBooksDlg::OnButtonIn()  
{ 
	UpdateData(); 
	if(m_strBookID.Compare("")==0) 
	{ 
		MessageBox("请正确填写要求的数据","新书入库登记"); 
		return; 
	} 
	 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法连接数据库!","新书登记"); 
			return; 
		} 
	} 
	CBookSet *m_pset=new CBookSet(&m_database); 
	//判断书库中是否有该书,进行相应操作 
	//有,把数量加到库中 
	CString strSQL; 
	strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookID); 
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pset->GetRecordCount()!=0) 
	{ 
		 
		m_pset->Edit(); 
		m_pset->m_Total_Amount=m_pset->m_Total_Amount+m_lTotal; 
		m_pset->m_Now_Amount=m_pset->m_Now_Amount+m_lNow; 
		m_pset->Update(); 
		m_pset->Requery(); 
		m_pset->Close(); 
		m_database.Close(); 
		MessageBox("成功添加新书!","新书入库登记"); 
		return; 
	} 
	m_pset->Close(); 
	if(m_strBookID==""||m_strBookName==""||m_strWriter=="" 
		||m_strPress==""||m_dPrice==0||m_lTotal==0 
		||m_lNow==0) 
	{ 
		MessageBox("请正确填写要求的数据!","新书登记入库"); 
		m_database.Close(); 
		return; 
	} 
	strSQL.Format("select * from Book_Info"); 
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pset->GetRecordCount()==0) 
	{ 
		MessageBox("没有任何书籍信息!","新书登记"); 
	} 
	m_pset->AddNew(); 
	m_pset->SetFieldNull(&(m_pset->m_Book_ID),FALSE); 
	m_pset->m_Book_ID=m_strBookID; 
 
	m_pset->SetFieldNull(&(m_pset->m_Book_Name),FALSE); 
	m_pset->m_Book_Name=m_strBookName; 
 
	m_pset->SetFieldNull(&(m_pset->m_Writer),FALSE); 
	m_pset->m_Writer=m_strWriter; 
 
	m_pset->SetFieldNull(&(m_pset->m_Press),FALSE); 
	m_pset->m_Press=m_strPress; 
 
	m_pset->SetFieldNull(&(m_pset->m_Price),FALSE); 
	m_pset->m_Price=m_dPrice; 
 
	m_pset->SetFieldNull(&(m_pset->m_Total_Amount),FALSE); 
	m_pset->m_Total_Amount=m_lTotal; 
 
	m_pset->SetFieldNull(&(m_pset->m_Now_Amount),FALSE); 
	m_pset->m_Now_Amount=m_lNow; 
 
	CTime curTime=CTime::GetCurrentTime(); 
	m_pset->SetFieldNull(&(m_pset->m_InLibrary_Date),FALSE); 
	m_pset->m_InLibrary_Date=curTime; 
 
	m_pset->Update(); 
	m_pset->Requery(); 
	 
	m_pset->Close(); 
	m_database.Close(); 
	MessageBox("成功添加新书!","新书入库登记"); 
	m_strBookID.Empty(); 
	m_strBookName.Empty(); 
	m_strPress.Empty(); 
	m_strWriter.Empty(); 
	m_lNow=0; 
	m_lTotal=0; 
	m_dPrice=0.0; 
	UpdateData(FALSE); 
	return; 
} 
 
 
void CNewBooksDlg::OnUpdateEditTotal()  
{ 
	// TODO: If this is a RICHEDIT control, the control will not 
	UpdateData(); 
	m_lNow=m_lTotal; 
	UpdateData(FALSE); 
	// send this notification unless you override the CDialog::OnInitDialog() 
	// function to send the EM_SETEVENTMASK message to the control 
	// with the ENM_UPDATE flag ORed into the lParam mask. 
	 
	// TODO: Add your control notification handler code here 
	 
} 
 
void CNewBooksDlg::OnButtonCheckAll()  
{ 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法连接数据库!","新书登记"); 
			return; 
		} 
	} 
	 
	CBookSet *m_pset=new CBookSet(&m_database); 
	CString strSQL; 
	strSQL.Format("select * from Book_Info"); 
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pset->GetRecordCount()==0) 
	{ 
		MessageBox("书库中没有任何书籍信息!","新书登记"); 
		m_database.Close(); 
		return; 
	} 
 
	//处理表格 
	m_ctrList.DeleteAllItems(); 
	m_pset->MoveFirst(); 
	char buf[50]; 
	CDBVariant varValue; 
	int i=0; 
	while(!m_pset->IsEOF()) 
	{ 
		int temp=0; 
		m_ctrList.InsertItem(i,buf); 
		m_pset->GetFieldValue(temp,varValue); 
		m_strBookID=varValue.m_pstring->GetBuffer(1); 
		m_ctrList.SetItemText(i,0,m_strBookID); 
		m_pset->GetFieldValue(1,varValue); 
		m_ctrList.SetItemText(i,1,varValue.m_pstring->GetBuffer(1)); 
		m_pset->GetFieldValue(2,varValue); 
		m_ctrList.SetItemText(i,2,varValue.m_pstring->GetBuffer(1)); 
		m_pset->GetFieldValue(3,varValue); 
		m_ctrList.SetItemText(i,3,varValue.m_pstring->GetBuffer(1)); 
		m_pset->GetFieldValue(4,varValue); 
		sprintf(buf,"%.2f",varValue.m_dblVal); 
		m_ctrList.SetItemText(i,4,buf); 
		m_pset->GetFieldValue(5,varValue); 
		sprintf(buf,"%d-%d-%d",varValue.m_pdate->year,varValue.m_pdate->month, 
			varValue.m_pdate->day); 
		m_ctrList.SetItemText(i,5,buf); 
		m_pset->GetFieldValue(6,varValue); 
		sprintf(buf,"%d",varValue.m_lVal); 
		m_ctrList.SetItemText(i,6,buf); 
		 
		m_pset->GetFieldValue(7,varValue); 
		sprintf(buf,"%d",varValue.m_lVal); 
		m_ctrList.SetItemText(i,7,buf); 
		i++; 
		m_pset->MoveNext(); 
		UpdateData(FALSE); 
	} 
	m_pset->Close(); 
	m_database.Close(); 
	m_strBookID.Empty(); 
	UpdateData(FALSE); 
} 
 
void CNewBooksDlg::OnButtonBack()  
{ 
	if(m_database.IsOpen()) 
		m_database.Close(); 
	OnOK(); 
} 
 
void CNewBooksDlg::OnClose()  
{ 
	OnButtonBack(); 
}