📄 mainpagedlg.cpp
字号:
// MainPageDlg.cpp : implementation file
//
#include "stdafx.h"
#include "account.h"
#include "MainPageDlg.h"
#include "AccountTabs.h"
#include "AccountAdo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainPageDlg dialog
CMainPageDlg::CMainPageDlg(CWnd* pParent /*=NULL*/)
: CTabPageDlg(CMainPageDlg::IDD, pParent)
{
CTime t=CTime::GetCurrentTime();
//{{AFX_DATA_INIT(CMainPageDlg)
m_sBus = _T("");
m_sClothing = _T("");
m_sTotal = _T("");
m_sRent = _T("");
m_sOther = _T("");
m_sNormal = _T("");
m_sEat = _T("");
m_sOperator = _T("李");
// m_Email = _T("");
m_tConsumeDate=t;
m_tOperDate=t;
//}}AFX_DATA_INIT
}
void CMainPageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainPageDlg)
DDX_Control(pDX, IDC_SAVE, m_btnSave);
DDX_Text(pDX, IDC_BUS, m_sBus);
DDX_Text(pDX, IDC_CLOTHING, m_sClothing);
DDX_Text(pDX, IDC_TOTAL, m_sTotal);
DDX_Text(pDX, IDC_RENT, m_sRent);
DDX_Text(pDX, IDC_OTHER, m_sOther);
DDX_Text(pDX, IDC_NORMAL, m_sNormal);
DDX_Text(pDX, IDC_EAT, m_sEat);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_CONSUME, m_tConsumeDate);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_OPER, m_tOperDate);
DDX_CBString(pDX, IDC_COMBO_OPERATOR, m_sOperator);
//DDX_Text(pDX, IDC_EMAIL, m_Email);
DDX_Control(pDX, IDC_EMAIL, m_Email);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMainPageDlg, CDialog)
//{{AFX_MSG_MAP(CMainPageDlg)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER_CONSUME, OnDatetimechangeDatetimepickerConsume)
ON_EN_CHANGE(IDC_CLOTHING, OnChangeClothing)
ON_EN_CHANGE(IDC_EAT, OnChangeEat)
ON_EN_CHANGE(IDC_RENT, OnChangeRent)
ON_EN_CHANGE(IDC_BUS, OnChangeBus)
ON_EN_CHANGE(IDC_NORMAL, OnChangeNormal)
ON_EN_CHANGE(IDC_OTHER, OnChangeOther)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainPageDlg message handlers
//BOOL CMainPageDlg::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
BOOL CMainPageDlg::Create(CWnd* pParentWnd)
{
// TODO: Add your specialized code here and/or call the base class
ASSERT(pParentWnd!=NULL);
m_pAccountTabs=(CAccountTabs*)pParentWnd;
return CDialog::Create(CMainPageDlg::IDD, pParentWnd);
}
//void CMainPageDlg::SetValues()
//{
//}
//void CMainPageDlg::GetValues()
//{
//}
BOOL CMainPageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//1、
//增加按钮的提示及图标
m_btnSave.SubclassDlgItem ( IDI_SAVE, this ); //将一个Windows控件连接给一个CWnd对象并使期通过该CWnd对象传递消息
m_btnSave.SetIcon ( IDI_SAVE );
m_btnSave.SetBtnCursor( IDC_HAND );
m_btnSave.AddToolTip ( "统计" );
//设置邮件超连接
m_Email.SetURL ( "mailto:Lizhongya@vip.sina.com" );
m_Email.SetLinkCursor ( AfxGetApp()->LoadCursor ( IDC_HAND ) );
//2、
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMainPageDlg::OnSave()
{
UpdateData();
m_sConsumeDate=m_tConsumeDate.Format("%Y-%m-%d");
m_sOperDate=m_tOperDate.Format("%Y-%m-%d");
CTime t=CTime::GetCurrentTime();
CString sCurDate=t.Format("%Y-%m-%d");
CString sSql;
_variant_t vRecsAffected(0L);
_variant_t var;
_RecordsetPtr pRecordset;
//检验数据有效性
//....
if (m_sConsumeDate.IsEmpty())//日期
m_sConsumeDate=sCurDate;
if (m_sOperDate.IsEmpty())
m_sOperDate=sCurDate;
if (m_sNormal.IsEmpty())
m_sNormal='0';
if (m_sEat.IsEmpty())
m_sEat='0';
if (m_sBus.IsEmpty())
m_sBus='0';
if (m_sRent.IsEmpty())
m_sRent='0';
if (m_sClothing.IsEmpty())
m_sClothing='0';
if (m_sOther.IsEmpty())
m_sOther='0';
if (m_sTotal.IsEmpty())
m_sTotal='0';
if (m_sOperator.IsEmpty())
m_sOperator="林";
sSql.Format("Select * from Account where ConsumeDate=CDate('%s')",m_sConsumeDate);
try{
TRACE("%s\n",sSql);
pRecordset = m_pAccountTabs->m_pAccountAdo->GetActiveConnect()->Execute(_bstr_t(sSql),&vRecsAffected,adOptionUnspecified);
if(pRecordset->GetadoEOF()){//没有查到记录
sSql.Format("Insert Into Account(ConsumeDate,normal,eat,bus,clothing,rent,other,total,operator,operdate) values(CDate('%s'),'%s','%s','%s','%s','%s','%s','%s','%s',CDate('%s'))",
m_sConsumeDate,
m_sNormal,
m_sEat,
m_sBus,
m_sClothing,
m_sRent,
m_sOther,
m_sTotal,
m_sOperator,
m_sOperDate);
TRACE("增加的sql语句为: %s \n",sSql);
m_pAccountTabs->m_pAccountAdo->Execute(sSql);
}
else//更新当前记录
{
sSql.Format("Update Account Set normal='%s',eat='%s',bus='%s',clothing='%s',rent='%s',other='%s',total='%s',operator='%s',operdate=CDate('%s') Where ConsumeDate=CDate('%s')",
m_sNormal,
m_sEat,
m_sBus,
m_sClothing,
m_sRent,
m_sOther,
m_sTotal,
m_sOperator,
m_sOperDate,
m_sConsumeDate);
TRACE("更新的sql语句为: %s \n",sSql);
m_pAccountTabs->m_pAccountAdo->Execute(sSql);
}
pRecordset->Close();
}
catch(_com_error &e){
m_pAccountTabs->m_pAccountAdo->dump_com_error(e);
}
UpdateData(FALSE);
}
void CMainPageDlg::OnDatetimechangeDatetimepickerConsume(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
UpdateData();
m_sConsumeDate=m_tConsumeDate.Format("%Y-%m-%d");
//TRACE("==>测试DATETIME PICKER:%s\n",m_sConsumeDate);
CString sSql;
_variant_t vRecsAffected(0L);
_variant_t var;
_RecordsetPtr pRecordset;
//验证日期m_sConsumeDate有效性
//...
if(m_sConsumeDate.IsEmpty())
{
MessageBox("消费日期不能为空,请重新输入消费日期!","警告",MB_OK);
return;
}
sSql.Format("Select * from Account where ConsumeDate=CDate('%s')",m_sConsumeDate);
TRACE("%s\n",sSql);
try{
pRecordset = m_pAccountTabs->m_pAccountAdo->GetActiveConnect()->Execute(_bstr_t(sSql),&vRecsAffected,adOptionUnspecified);
if(pRecordset->GetadoEOF()){//没有查到记录,初始化所有数据项
m_sNormal="";
m_sEat="";
m_sBus="";
m_sRent="";
m_sClothing="";
m_sOther="";
m_sTotal="";
m_sOperator="李";
m_sOperDate=m_tOperDate.Format("%Y-%m-%d");
}
else//存在记录,检索当前记录
{
var=pRecordset->GetCollect("ConsumeDate");
if(var.vt != VT_NULL)
m_sConsumeDate = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Normal");
if(var.vt != VT_NULL)
m_sNormal = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Eat");
if(var.vt != VT_NULL)
m_sEat = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Bus");
if(var.vt != VT_NULL)
m_sBus = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Rent");
if(var.vt != VT_NULL)
m_sRent = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Clothing");
if(var.vt != VT_NULL)
m_sClothing = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Other");
if(var.vt != VT_NULL)
m_sOther = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Total");
if(var.vt != VT_NULL)
m_sTotal = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("Operator");
if(var.vt != VT_NULL)
m_sOperator = (LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("OperDate");
if(var.vt != VT_NULL)
m_sOperDate = (LPCSTR)_bstr_t(var);
}
pRecordset->Close();
}
catch(_com_error &e){
m_pAccountTabs->m_pAccountAdo->dump_com_error(e);
}
UpdateData(FALSE);
*pResult = 0;
}
CString CMainPageDlg::CalcTotal()
{
UpdateData();
if (m_sNormal.IsEmpty())
m_sNormal='0';
if (m_sEat.IsEmpty())
m_sEat='0';
if (m_sBus.IsEmpty())
m_sBus='0';
if (m_sRent.IsEmpty())
m_sRent='0';
if (m_sClothing.IsEmpty())
m_sClothing='0';
if (m_sOther.IsEmpty())
m_sOther='0';
char chNormal[20];
char chEat[20],chClothing[20],chRent[20],chBus[20],chOther[20];
strcpy(chNormal,m_sNormal);
strcpy(chEat,m_sEat);
strcpy(chClothing,m_sClothing);
strcpy(chRent,m_sRent);
strcpy(chBus,m_sBus);
strcpy(chOther,m_sOther);
double dCalcResult;
dCalcResult=::atof(chNormal) + ::atof(chEat)+::atof(chClothing)+
::atof(chRent)+::atof(chBus)+::atof(chOther);
// TRACE("iCalcResult int: %f \n",dCalcResult);
char chCalcResult[20];
sprintf(chCalcResult,"%.2f",dCalcResult);
// TRACE("%s\n",chCalcResult);
CString sRet(chCalcResult);
return sRet;
}
void CMainPageDlg::OnChangeClothing()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
void CMainPageDlg::OnChangeEat()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
void CMainPageDlg::OnChangeRent()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
void CMainPageDlg::OnChangeBus()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
void CMainPageDlg::OnChangeNormal()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
void CMainPageDlg::OnChangeOther()
{
UpdateData();
m_sTotal=CalcTotal();
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -