📄 guesthandmoneydlg.cpp
字号:
// Guesthandmoneydlg.cpp : implementation file
//
#include "stdafx.h"
#include "Myhotel.h"
#include "Guesthandmoneydlg.h"
#include <stdlib.h>
#include <stdio.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CMyhotelApp theApp;
extern CString loguserid;
/////////////////////////////////////////////////////////////////////////////
// CGuesthandmoneydlg dialog
CGuesthandmoneydlg::CGuesthandmoneydlg(CWnd* pParent /*=NULL*/)
: CDialog(CGuesthandmoneydlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGuesthandmoneydlg)
m_guesthandmoney = _T("");
m_guesthandway = _T("");
m_guesthand_depname = _T("");
m_backmanname = _T("");
m_showuser = _T("");
//}}AFX_DATA_INIT
}
void CGuesthandmoneydlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGuesthandmoneydlg)
DDX_Control(pDX, IDC_COMBO_guesthandmoney_gzname, m_gusethand_depnamectr);
DDX_Control(pDX, IDC_LIST_guesthandmoney, m_guesthandmoneylist);
DDX_Text(pDX, IDC_guesthandmoney_money, m_guesthandmoney);
DDX_CBString(pDX, IDC_COMBO_guesthandmoney_handway, m_guesthandway);
DDX_CBString(pDX, IDC_COMBO_guesthandmoney_gzname, m_guesthand_depname);
DDX_Text(pDX, IDC_guesthandmoney_backman, m_backmanname);
DDX_Text(pDX, IDC_STATICshowuser, m_showuser);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGuesthandmoneydlg, CDialog)
//{{AFX_MSG_MAP(CGuesthandmoneydlg)
ON_CBN_CLOSEUP(IDC_COMBO_guesthandmoney_gzname, OnCloseupCOMBOguesthandmoneygzname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGuesthandmoneydlg message handlers
BOOL CGuesthandmoneydlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//设置列表框颜色
m_guesthandmoneylist.SetTextColor(RGB (0, 0, 0));
m_guesthandmoneylist.SetTextBkColor(RGB (140, 180, 20));
//初始化列表框形状
m_guesthandmoneylist.InsertColumn(0,"日期");
m_guesthandmoneylist.InsertColumn(1,"挂帐单位");
m_guesthandmoneylist.InsertColumn(2,"摘要");
m_guesthandmoneylist.InsertColumn(3,"住宿金额");
m_guesthandmoneylist.InsertColumn(4,"欠款金额");
m_guesthandmoneylist.InsertColumn(5,"还款金额");
m_guesthandmoneylist.InsertColumn(6,"金额累计");
m_guesthandmoneylist.InsertColumn(7,"姓名");
RECT rect;
m_guesthandmoneylist.GetWindowRect(&rect);
int wid=rect.right-rect.left;
int i=0;
m_guesthandmoneylist.SetColumnWidth(0,wid/8);
m_guesthandmoneylist.SetColumnWidth(1,wid/8);
m_guesthandmoneylist.SetColumnWidth(2,wid/8);
m_guesthandmoneylist.SetColumnWidth(3,wid/8);
m_guesthandmoneylist.SetColumnWidth(4,wid/8);
m_guesthandmoneylist.SetColumnWidth(5,wid/8);
m_guesthandmoneylist.SetColumnWidth(6,wid/8);
m_guesthandmoneylist.SetColumnWidth(7,wid/8);
//设置列表框风格
m_guesthandmoneylist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
///////////////////////////////////////////
m_pRecordset.CreateInstance(__uuidof(Recordset));
_variant_t var;
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//
try
{//打开数据库
m_pRecordset->Open("SELECT * FROM guazhanginfo", // 查询 表中所有字段
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)
findgz_date = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.InsertItem(i,findgz_date.GetBuffer(50));
//读取数据表内挂账单位字段的内容
var = m_pRecordset->GetCollect("挂账单位");
if(var.vt != VT_NULL)
findgz_depname = (LPCSTR)_bstr_t(var);
// m_gusethand_depnamectr.AddString(findgz_depname);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,1,findgz_depname.GetBuffer(100));
//读取数据表内摘要字段的内容
var = m_pRecordset->GetCollect("摘要");
if(var.vt != VT_NULL)
findgz_sumery = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,2,findgz_sumery.GetBuffer(100));
//读取数据表内住宿金额字段的内容
var = m_pRecordset->GetCollect("住宿金额");
if(var.vt != VT_NULL)
findgz_spendmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,3,findgz_spendmoney.GetBuffer(50));
//读取数据表内欠款金额字段的内容
var = m_pRecordset->GetCollect("欠款金额");
if(var.vt != VT_NULL)
findgz_bowrowmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,4,findgz_bowrowmoney.GetBuffer(50));
//读取数据表内还款金额字段的内容
var = m_pRecordset->GetCollect("还款金额");
if(var.vt != VT_NULL)
findgz_returnmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,5,findgz_returnmoney.GetBuffer(50));
//读取数据表内金额累计字段的内容
var = m_pRecordset->GetCollect("金额累计");
if(var.vt != VT_NULL)
findgz_summoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,6,findgz_summoney.GetBuffer(50));
//读取数据表内姓名字段的内容
var = m_pRecordset->GetCollect("姓名");
if(var.vt != VT_NULL)
findgz_name = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,7,findgz_name.GetBuffer(100));
i++;
//移动指针到下一条记录
m_pRecordset->MoveNext();
}
//
}
catch(_com_error *e)//捕获异常情况语句
{
AfxMessageBox(e->ErrorMessage());
}
// 关闭记录集
m_pRecordset->Close();
m_pRecordset = NULL;
foundsummoney=0;
m_showuser=loguserid;
//更新显示
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGuesthandmoneydlg::OnOK()
{
// TODO: Add extra validation here
m_pRecordsetstore.CreateInstance(__uuidof(Recordset));
UpdateData(true);
_variant_t var;
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//
try
{ //打开数据库
m_pRecordsetstore->Open("SELECT * FROM guazhanginfo", // 查询 表中所有字段
theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)//捕获可能发生的异常情况
{
AfxMessageBox(e->ErrorMessage());
}
CTime tTime;
tTime=tTime.GetCurrentTime(); //获得当前时间
CString handindate;
int nYear,nDay,nMonth;
CString sYear,sDay,sMonth;
nYear=tTime.GetYear();//提取年份
nDay=tTime.GetDay();//提取日
nMonth=tTime.GetMonth();//提取月份
sYear.Format("%d",nYear);//转换为字符串
sDay.Format("%d",nDay);//转换为字符串
sMonth.Format("%d",nMonth);//转换为字符串
//格式化时间语句
handindate.Format("%s-%s-%s",sYear,sMonth,sDay);
try
{
m_pRecordsetstore->AddNew();//设置数据库操作类型为添加
char summoney[50];
_gcvt(atof(strfoundsummoney)+atof(m_guesthandmoney), 4, summoney );
//向数据表金额累计字段写入数据
m_pRecordsetstore->PutCollect("金额累计", _variant_t(summoney));
//向数据表日期字段写入数据
m_pRecordsetstore->PutCollect("日期", _variant_t(handindate));
//向数据表挂账单位字段写入数据
m_pRecordsetstore->PutCollect("挂账单位", _variant_t(m_guesthand_depname));
//向数据表摘要字段写入数据
m_pRecordsetstore->PutCollect("摘要", _variant_t("客户还款"));
//向数据表还款金额字段写入数据
m_pRecordsetstore->PutCollect("还款金额", _variant_t(m_guesthandmoney));
//向数据表姓名字段写入数据
m_pRecordsetstore->PutCollect("姓名", _variant_t(m_backmanname));
m_pRecordsetstore->Update();//更新数据库
AfxMessageBox("挂帐成功!");
}
catch(_com_error *e)//捕获更新数据库时候可能出现的异常情况
{
AfxMessageBox(e->ErrorMessage());
}
// 关闭记录集
m_pRecordsetstore->Close();
m_pRecordsetstore = NULL;
OnCloseupCOMBOguesthandmoneygzname();
UpdateData(false);
//CDialog::OnOK();
}
void CGuesthandmoneydlg::OnCloseupCOMBOguesthandmoneygzname()
{
// TODO: Add your control notification handler code here
_variant_t var;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//
UpdateData(true);
CString strsql;
strsql.Format("SELECT * FROM guazhanginfo where 挂账单位='%s'",m_guesthand_depname);
int i=0;
m_guesthandmoneylist.DeleteAllItems();//清除所有记录
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
while(!m_pRecordset->adoEOF)
{//循环读取数据,并在列表框内显示
//读取数据表内日期字段的内容
var = m_pRecordset->GetCollect("日期");
if(var.vt != VT_NULL)
findgz_date = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.InsertItem(i,findgz_date.GetBuffer(50));
//读取数据表内挂账单位字段的内容
var = m_pRecordset->GetCollect("挂账单位");
if(var.vt != VT_NULL)
findgz_depname = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,1,findgz_depname.GetBuffer(100));
//读取数据表内摘要字段的内容
var = m_pRecordset->GetCollect("摘要");
if(var.vt != VT_NULL)
findgz_sumery = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,2,findgz_sumery.GetBuffer(100));
//读取数据表内住宿金额字段的内容
var =m_pRecordset->GetCollect("住宿金额");
if(var.vt != VT_NULL)
findgz_spendmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,3,findgz_spendmoney.GetBuffer(50));
//读取数据表内欠款金额字段的内容
var = m_pRecordset->GetCollect("欠款金额");
if(var.vt != VT_NULL)
findgz_bowrowmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,4,findgz_bowrowmoney.GetBuffer(50));
//读取数据表内还款金额字段的内容
var = m_pRecordset->GetCollect("还款金额");
if(var.vt != VT_NULL)
findgz_returnmoney = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,5,findgz_returnmoney.GetBuffer(50));
//读取数据表内金额累计字段的内容
var = m_pRecordset->GetCollect("金额累计");
if(var.vt != VT_NULL)
findgz_summoney = (LPCSTR)_bstr_t(var);
if(atof(findgz_returnmoney)>foundsummoney)
{
strfoundsummoney=findgz_summoney;
}
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,6,findgz_summoney.GetBuffer(50));
//读取数据表内姓名字段的内容
var = m_pRecordset->GetCollect("姓名");
if(var.vt != VT_NULL)
findgz_name = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,7,findgz_name.GetBuffer(100));
//读取数据表内证件号码字段的内容
var = m_pRecordset->GetCollect("证件号码");
if(var.vt != VT_NULL)
findgz_idnumber = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,8,findgz_idnumber.GetBuffer(100));
//读取数据表内票号字段的内容
var = m_pRecordset->GetCollect("票号");
if(var.vt != VT_NULL)
findgz_ticketnumber = (LPCSTR)_bstr_t(var);
//在列表框内显示该字段的值
m_guesthandmoneylist.SetItemText(i,9,findgz_ticketnumber.GetBuffer(50));
i++;
//记录集指针下移一条记录
m_pRecordset->MoveNext();
}
//
}
catch(_com_error *e)//捕获异常的发生,给出提示
{
AfxMessageBox(e->ErrorMessage());
}
// 关闭记录集
m_pRecordset->Close();
m_pRecordset = NULL;
//界面数据显示更新
UpdateData(false);
}
BOOL CGuesthandmoneydlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
{
pMsg->wParam=VK_TAB;//重载回车键盘消息为table键盘消息,ok!2006.4.18
}
return CDialog::PreTranslateMessage(pMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -