📄 roomdlg.cpp
字号:
// RoomDLG.cpp : implementation file
//
#include "stdafx.h"
#include "hotel_mis.h"
#include "RoomDLG.h"
#include "Hotel_MISView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRoomDLG dialog
CRoomDLG::CRoomDLG(CWnd* pParent /*=NULL*/)
: CDialog(CRoomDLG::IDD, pParent)
{
//{{AFX_DATA_INIT(CRoomDLG)
m_sMemo = _T("");
m_sNo = _T("");
m_sPosition = _T("");
m_sPrice = _T("");
m_sType = _T("");
//}}AFX_DATA_INIT
}
void CRoomDLG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRoomDLG)
DDX_Text(pDX, IDD_ROOM_MEMO, m_sMemo);
DDX_Text(pDX, IDD_ROOM_NO, m_sNo);
DDX_Text(pDX, IDD_ROOM_POSITION, m_sPosition);
DDX_Text(pDX, IDD_ROOM_PRICE, m_sPrice);
DDX_CBString(pDX, IDD_ROOM_TYPE, m_sType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRoomDLG, CDialog)
//{{AFX_MSG_MAP(CRoomDLG)
ON_CBN_SELCHANGE(IDD_ROOM_TYPE, OnRoomTypeChange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRoomDLG message handlers
void CRoomDLG::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
m_sNo.TrimRight(" ");
m_sPosition.TrimRight(" ");
m_sPrice.TrimRight(" ");
m_sMemo.TrimRight(" ");
// Make sure all needed info is available
CString sWarning="";
if ( ""==m_sNo ) sWarning=_T("客房编号");
else if ( ""==m_sPosition ) sWarning=_T("客房位置");
else if ( ""==m_sPrice ) sWarning=_T("客房价格");
if ( ""!=sWarning )
{
sWarning += _T("不能为空");
AfxMessageBox(sWarning, MB_ICONEXCLAMATION);
return;
}
// Make sure the Number info is valid
float fPrice=atof(m_sPrice);
if ( 0==fPrice )
{
AfxMessageBox(_T("客房单价:请输入非零数字"), MB_ICONEXCLAMATION);
return;
}
m_sPrice.Format("%.2f", fPrice);
_variant_t strQuery;
if (m_bAppend)
{
// Judge Room No is Unique
strQuery = "select * from rooms where roomNO='"+m_sNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0!=iCount )
{
AfxMessageBox(_T("已经存在此客房编号的记录!"), MB_ICONEXCLAMATION);
return;
}
}
if (m_bAppend)// Append Record
{
strQuery = "insert rooms (roomNo, roomtype, roomposition, roomprice, roommemo) \
values ('"+m_sNo+"', '"+m_sType+"', '"+m_sPosition+"', "+m_sPrice+", '"+m_sMemo+"')";
if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) )
{
AfxMessageBox(_T("添加记录成功!"), MB_ICONINFORMATION);
// Clear all input
m_sNo=m_sType=m_sPosition=m_sPrice=m_sMemo="";
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->SetCurSel(0);
UpdateData(false);
}
else AfxMessageBox(_T("添加记录失败!"), MB_ICONEXCLAMATION);
}
else
{
strQuery = "Update rooms set roomtype='"+m_sType+"', roomposition='"+m_sPosition+"', roomprice="+m_sPrice+", roommemo='"+m_sMemo+"' \
where roomNo='"+m_sNo+"'";
if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) AfxMessageBox(_T("修改记录成功!"), MB_ICONINFORMATION);
else AfxMessageBox(_T("修改记录失败!"), MB_ICONEXCLAMATION);
}
// Refresh Room List
strQuery = "select * from rooms";
CHotel_MISView* p = (CHotel_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView());
p->RefreshRoom(strQuery);
if (!m_bAppend) CDialog::OnOK();
}
BOOL CRoomDLG::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// Set Edit Text limit
((CEdit*)GetDlgItem(IDD_ROOM_NO))->SetLimitText(10);
((CEdit*)GetDlgItem(IDD_ROOM_POSITION))->SetLimitText(20);
((CEdit*)GetDlgItem(IDD_ROOM_PRICE))->SetLimitText(8);
if (m_bAppend)
{
// Update Dialog Caption
SetWindowText(_T("添加客房信息"));
// Init Combobox
_variant_t strQuery, Holder;
strQuery = "select * from roomtype";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
theApp.m_pADOSet->MoveFirst();
for (int i=0; i<iCount; i++)
{
Holder = theApp.m_pADOSet->GetCollect("typename");
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder);
// Get price to display
if ( 0==i )
{
Holder = theApp.m_pADOSet->GetCollect("price");
m_sPrice.Format("%.2f", Holder.dblVal);
}
theApp.m_pADOSet->MoveNext();
}
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->SetCurSel(0);
}
else
{
// Update Dialog Caption
SetWindowText(_T("修改客房信息"));
// Disable room no edit
GetDlgItem(IDD_ROOM_NO)->EnableWindow(false);
// Init Combobox
_variant_t strQuery, Holder;
CString sType;
int iSel=0;
strQuery = "select typename from roomtype";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
theApp.m_pADOSet->MoveFirst();
for (int i=0; i<iCount; i++)
{
Holder = theApp.m_pADOSet->GetCollect("typename");
sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->InsertString(i, sType);
if ( sType==m_sType ) iSel=i;
theApp.m_pADOSet->MoveNext();
}
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->SetCurSel(iSel);
}
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CRoomDLG::OnRoomTypeChange()
{
// TODO: Add your control notification handler code here
UpdateData(true);
// Get Room type
int iIndex = ((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->GetCurSel();
CString sType;
((CComboBox*)GetDlgItem(IDD_ROOM_TYPE))->GetLBText(iIndex, sType);
_variant_t strQuery, Holder;
strQuery = "select price from roomtype where typename='"+sType+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0==iCount )
{
AfxMessageBox(_T("读取客房价格错误!"), MB_ICONEXCLAMATION);
return;
}
// Get Price and Update Dialog
Holder = theApp.m_pADOSet->GetCollect("price");
m_sPrice.Format("%.2f", Holder.dblVal);
UpdateData(false);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -