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

📄 changeroomdlg.cpp

📁 系统将动态实时的住宿登记、客房调整、销售报表、追加押金等有机地联系在一起
💻 CPP
字号:
// Changeroomdlg.cpp : implementation file
//

#include "stdafx.h"
#include "Myhotel.h"
#include "Changeroomdlg.h"

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

extern CMyhotelApp theApp; 
extern CString loguserid;
/////////////////////////////////////////////////////////////////////////////
// CChangeroomdlg dialog


CChangeroomdlg::CChangeroomdlg(CWnd* pParent /*=NULL*/)
	: CDialog(CChangeroomdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChangeroomdlg)
	m_sourceroom = _T("");
	m_destroom = _T("");
	m_changeroom_beizhu = _T("");
	m_changeroom_idkind = _T("");
	m_changeroom_idnumber = _T("");
	m_changeroom_name = _T("");
	m_changeroom_roommoney = _T("");
	m_changeroom_regnumber = _T("");
	m_showuser = _T("");
	//}}AFX_DATA_INIT
}


void CChangeroomdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChangeroomdlg)
	DDX_Control(pDX, IDC_COMBO_destroom, m_destroomctr);
	DDX_Control(pDX, IDC_COMBO_sourceroom, m_sourceroomctr);
	DDX_CBString(pDX, IDC_COMBO_sourceroom, m_sourceroom);
	DDX_CBString(pDX, IDC_COMBO_destroom, m_destroom);
	DDX_Text(pDX, IDC_changeroom_beizhu, m_changeroom_beizhu);
	DDX_CBString(pDX, IDC_changeroom_idkind, m_changeroom_idkind);
	DDX_Text(pDX, IDC_changeroom_idnumber, m_changeroom_idnumber);
	DDX_Text(pDX, IDC_changeroom_name, m_changeroom_name);
	DDX_Text(pDX, IDC_changeroom_roommoney, m_changeroom_roommoney);
	DDX_Text(pDX, IDC_changeroomdlg_regnumber, m_changeroom_regnumber);
	DDX_Text(pDX, IDC_STATICshowuser, m_showuser);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChangeroomdlg, CDialog)
	//{{AFX_MSG_MAP(CChangeroomdlg)
	ON_BN_CLICKED(ID_BTN_changeroomreg, OnBTNchangeroomreg)
	ON_CBN_CLOSEUP(IDC_COMBO_sourceroom, OnCloseupCOMBOsourceroom)
	ON_CBN_CLOSEUP(IDC_COMBO_destroom, OnCloseupCOMBOdestroom)
	ON_BN_CLICKED(IDCANCEL_changeroom, Onchangeroom)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChangeroomdlg message handlers

BOOL CChangeroomdlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
			// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

		_variant_t var;
		CString strroomnumber;
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 
	try
	{
		m_pRecordset->Open("SELECT * FROM roomsetting",                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)//捕获连接数据库异常
	{
		AfxMessageBox(e->ErrorMessage());
	}
	try
	{
		if(!m_pRecordset->BOF)//判断指针是否在数据集最后
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			return false;
		}

		// read data from the database table 
		while(!m_pRecordset->adoEOF)
		{//读取房间号
			var = m_pRecordset->GetCollect("房间号");
			if(var.vt != VT_NULL)
				strroomnumber = (LPCSTR)_bstr_t(var);
			m_sourceroomctr.AddString(strroomnumber);//添加到列表
            m_destroomctr.AddString(strroomnumber);
			m_pRecordset->MoveNext();//移动记录集指针
		}

		// 
		
	}
	catch(_com_error *e)//捕获异常
	{
		AfxMessageBox(e->ErrorMessage());
	}

	// 关闭记录集
	m_pRecordset->Close();
	m_pRecordset = NULL;

	//获得操作员ID
    m_showuser=loguserid;
	//显示更新
	UpdateData(false);
	enable(0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CChangeroomdlg::enable(bool bEnabled)
{
   // m_ComYSFS.EnableWindow(bEnabled);
	//更改输入框状态
	GetDlgItem(IDC_COMBO_destroom)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_sourceroom)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_destroom)->EnableWindow(bEnabled);
	GetDlgItem(IDC_changeroom_beizhu)->EnableWindow(bEnabled);
	GetDlgItem(IDC_changeroom_idkind)->EnableWindow(bEnabled);
	GetDlgItem(IDC_changeroom_idnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_changeroom_name)->EnableWindow(bEnabled);

	GetDlgItem(IDC_changeroom_roommoney)->EnableWindow(bEnabled);
    GetDlgItem(IDC_changeroomdlg_regnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDOK)->EnableWindow(bEnabled);
	//更改输入框状态完毕
}

void CChangeroomdlg::OnBTNchangeroomreg() 
{
	// TODO: Add your control notification handler code here
	enable(1);
}

void CChangeroomdlg::OnCloseupCOMBOsourceroom() 
{
	// TODO: Add your control notification handler code here
			_variant_t var;
	// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 
//获取输入框内容
	UpdateData(true);
    
  	
	CString strsql;
    strsql.Format("SELECT * FROM checkinregtable where 房间号='%s'",m_sourceroom);
	try
	{//打开数据库
		m_pRecordset->Open(_variant_t(strsql),                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{//捕获异常
		AfxMessageBox(e->ErrorMessage());
	}
    
    
	try
	{
		if(!m_pRecordset->BOF)//判断指针是否在数据集最后
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			return ;
		}

		// read data from the database table 
		   //从数据表中读取姓名字段
			var = m_pRecordset->GetCollect("姓名");
			if(var.vt != VT_NULL)
		     	m_changeroom_name= (LPCSTR)_bstr_t(var);

            //从数据表中读取凭证号码字段
				var = m_pRecordset->GetCollect("凭证号码");
			if(var.vt != VT_NULL)
		     	m_changeroom_regnumber= (LPCSTR)_bstr_t(var);
           //从数据表中读取证件名称字段
            var = m_pRecordset->GetCollect("证件名称");
			if(var.vt != VT_NULL)
		        m_changeroom_idkind  = (LPCSTR)_bstr_t(var);
           //从数据表中读取证件号码字段
			var = m_pRecordset->GetCollect("证件号码");
			if(var.vt != VT_NULL)
		     	m_changeroom_idnumber = (LPCSTR)_bstr_t(var);

            //从数据表中读取备注字段
            var = m_pRecordset->GetCollect("备注");
			if(var.vt != VT_NULL)
		     	m_changeroom_beizhu = (LPCSTR)_bstr_t(var);

           UpdateData(false);
    
		// 更新显示
		
	}
	catch(_com_error *e)//捕获异常
	{
		AfxMessageBox(e->ErrorMessage());
	}

		// 关闭记录集
	m_pRecordset->Close();
	m_pRecordset = NULL;
	// 更新显示
	UpdateData(false);
}

void CChangeroomdlg::OnCloseupCOMBOdestroom() 
{
	// TODO: Add your control notification handler code here
			_variant_t var;
	// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 

	UpdateData(true);
    
  	
	CString strsql;
    strsql.Format("SELECT * FROM checkinregtable where 房间号='%s'",m_destroom);
	try//打开数据库
	{
		m_pRecordset->Open(_variant_t(strsql),                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{// 捕获打开数据库时候可能发生的异常情况
		AfxMessageBox(e->ErrorMessage());
	}
    
    
	try
	{
		if(!m_pRecordset->BOF)//判断指针是否在数据集最后
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			return ;
		}

		// read data from the database table 
		
             //从数据表中读取客房价格字段
			var = m_pRecordset->GetCollect("客房价格");
			if(var.vt != VT_NULL)
		     	m_changeroom_roommoney = (LPCSTR)_bstr_t(var);
           //从数据表中读取客房类型字段
			var = m_pRecordset->GetCollect("客房类型");
			if(var.vt != VT_NULL)
		     	destroomlevel = (LPCSTR)_bstr_t(var);
           
			// 读取数据完毕,然后更新显示
           UpdateData(false);
    
		// 更新显示完毕
		
	}
	catch(_com_error *e)// 捕获异常
	{
		AfxMessageBox(e->ErrorMessage());
	}

		// 关闭记录集
	m_pRecordset->Close();
	m_pRecordset = NULL;
	
	UpdateData(false);// 更新显示
}

void CChangeroomdlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(true);

	m_pRecordsetout.CreateInstance(__uuidof(Recordset));

	CString strsqlstore;
   strsqlstore.Format("SELECT * FROM checkinregtable where 凭证号码='%s'",m_changeroom_regnumber);
	// 打开数据库
   try
	{
		m_pRecordsetout->Open(_variant_t(strsqlstore),                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{//捕获打开数据库时候的异常情况,并给出提示
		AfxMessageBox(e->ErrorMessage());
	}

	try
	{
	    //往数据库内写入数据
			CString zhaiyao;
            zhaiyao.Format("从原房间%s调换到目标房间%s",m_sourceroom,m_destroom);
			m_pRecordsetout->PutCollect("房间号", _variant_t(m_destroom));
       		//写入数据表房间号字段	
			m_pRecordsetout->PutCollect("摘要", _variant_t( zhaiyao));
       		//写入数据表摘要字段
			m_pRecordsetout->PutCollect("客房价格", _variant_t(m_changeroom_roommoney));
            //写入数据表客房价格字段
			m_pRecordsetout->PutCollect("客房类型", _variant_t(destroomlevel));
            //写入数据表客房类型字段
			m_pRecordsetout->Update();
         //写入数据完毕,给出提示
		MessageBox("调房成功!","客房管理系统");
		//	UpdateData(false);
	}
	catch(_com_error *e)//捕获写入数据时候的异常情况,实时显示
	{
		AfxMessageBox(e->ErrorMessage());
	}
//	CDialog::OnOK();
}

void CChangeroomdlg::Onchangeroom() 
{
	// TODO: Add your control notification handler code here
	//输入框初始化数据
	m_sourceroom = _T("");
	m_destroom = _T("");
	m_changeroom_beizhu = _T("");
	m_changeroom_idkind = _T("");
	m_changeroom_idnumber = _T("");
	m_changeroom_name = _T("");
	m_changeroom_roommoney = _T("");
	m_changeroom_regnumber = _T("");
	//更新显示
	UpdateData(false);
}

⌨️ 快捷键说明

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