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

📄 mainpagedlg.cpp

📁 其中包含了ADO的多个实例
💻 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 + -