📄 outputedit.cpp
字号:
// OutputEdit.cpp : 实现文件
//
#include <iostream>
#include "stdafx.h"
#include "Bill.h"
#include "OutputEdit.h"
#include ".\outputedit.h"
using namespace std;
// COutputEdit 对话框
IMPLEMENT_DYNAMIC(COutputEdit, CDialog)
COutputEdit::COutputEdit(CWnd* pParent /*=NULL*/)
: CDialog(COutputEdit::IDD, pParent)
, m_outputType(_T(""))
, m_outputSum(0)
, m_outputDate(_T("2007-**-**"))
{
}
COutputEdit::~COutputEdit()
{
}
void COutputEdit::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_OUTPUT_TYPE, m_outputType);
DDX_Text(pDX, IDC_OUTPUT_SUM, m_outputSum);
DDX_Text(pDX, IDC_OUTPUT_DATE, m_outputDate);
}
BEGIN_MESSAGE_MAP(COutputEdit, CDialog)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(ID_OUTPUT_CLEAR, OnBnClickedOutputClear)
END_MESSAGE_MAP()
// COutputEdit 消息处理程序
BOOL COutputEdit::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
if((theApp.m_pDB)->IsOpen())
{
m_outputRecordset=new CDaoRecordset(theApp.m_pDB);
m_moneyStat=new CDaoRecordset(theApp.m_pDB);
try
{
m_outputRecordset->Open(dbOpenDynaset, "select * from 支出表"); //使用dbOpenTable打开表格(直接用表名打开)也可以,但是SetAbsolutePosition只对Dynaset和snapshot有效
}
catch(CDaoException* e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
e->Delete();
}
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void COutputEdit::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
//释放连接
if(m_outputRecordset)
{
if(m_outputRecordset->IsOpen())
m_outputRecordset->Close();
delete m_outputRecordset;
}
if(m_moneyStat)
{
if(m_moneyStat->IsOpen())
m_moneyStat->Close();
delete m_moneyStat;
}
OnCancel();
}
void COutputEdit::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//将新的支出添加到数据库中
UpdateData(TRUE);//首先更新控件值
if(m_outputType.GetLength()>0 && m_outputDate.GetLength()>0)
{
try{
m_outputRecordset->AddNew();
COleVariant vtime(m_outputDate);
vtime.ChangeType(VT_DATE);
COleDateTime time = vtime;//CString--->COleDateTime
m_outputRecordset->SetFieldValue("支出时间",time);
m_outputRecordset->SetFieldValue("支出金额", m_outputSum);
m_outputRecordset->SetFieldValue("支出类型", (LPSTR)(LPCTSTR)m_outputType);
m_outputRecordset->Update();
AfxMessageBox("添加成功");
}catch (CDaoException* e) {
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
e->Delete();
}
}
else
{
AfxMessageBox("请输入支出类型&支出时间");
return;
}
////////////////////
//更新月报
CString str = m_outputDate;
int i1 = str.Find('-');
int i2 = str.Find('-',i1+1);
CString substr = str.Left(i2);
substr = substr + "-1";
CString sqlstr = "select * from 月报 where 月份=#" + substr + "#";
try
{
m_moneyStat->Open(dbOpenDynaset, sqlstr); //使用dbOpenTable打开表格(直接用表名打开)也可以,但是SetAbsolutePosition只对Dynaset和snapshot有效
}
catch(CDaoException* e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
e->Delete();
return;
}
if(m_moneyStat->IsBOF())
{
//如果月报中没有此月的记录
m_moneyStat->AddNew();
COleVariant ctime(substr);
ctime.ChangeType(VT_DATE);
COleDateTime time = ctime;//CString--->COleDateTime
m_moneyStat->SetFieldValue("月份",time);
m_moneyStat->SetFieldValue("支出金额", m_outputSum);
m_moneyStat->SetFieldValue("余额", -m_outputSum);
m_moneyStat->Update();
}
else
{
m_moneyStat->MoveFirst();
m_moneyStat->Edit();
COleVariant m_outputMoney;
m_moneyStat->GetFieldValue("支出金额",m_outputMoney);
CString strMoney = GetStringFromOlevar(m_outputMoney);//将值转化为CString型
float sum = atof(strMoney)+m_outputSum;
m_moneyStat->SetFieldValue("支出金额", sum);
COleVariant m_inputMoney;
m_moneyStat->GetFieldValue("收入金额",m_inputMoney);
m_moneyStat->GetFieldValue("支出金额",m_outputMoney);
CString strMoney1 = GetStringFromOlevar(m_inputMoney);//将值转化为CString型
CString strMoney2 = GetStringFromOlevar(m_outputMoney);//将值转化为CString型
m_moneyStat->SetFieldValue("余额", atof(strMoney1)-atof(strMoney2));
m_moneyStat->Update();
}
// OnOK();
}
void COutputEdit::OnBnClickedOutputClear()
{
// TODO: 在此添加控件通知处理程序代码
m_outputDate.Empty();
m_outputSum = 0;
m_outputType.Empty();
UpdateData(FALSE);
}
CString COutputEdit::GetStringFromOlevar(const COleVariant m_OLEVar)
{
CString m_result;
switch (m_OLEVar.vt) {
case VT_I2://整型(两字节)
m_result.Format("%d", (int)m_OLEVar.iVal);
break;
case VT_I4://整型(四字节)
m_result.Format("%d", m_OLEVar.lVal);
break;
case VT_R4://单精度浮点
m_result.Format("%10.5f", (double)m_OLEVar.fltVal);
break;
case VT_R8://双精度浮点
m_result.Format("%10.5f", m_OLEVar.dblVal);
break;
case VT_BOOL://布尔型
if(m_OLEVar.boolVal==0)
m_result="FALSE";
else
m_result="TRUE";
break;
case VT_BSTR://字符串型
m_result=(LPCSTR) m_OLEVar.bstrVal;
break;
case VT_CY:// COleCurrency对象
m_result=COleCurrency(m_OLEVar).Format();
break;
case VT_DATE://COleDateTime对象:时间日期
m_result=COleDateTime(m_OLEVar).Format();
break;
default:
m_result="";
}
return m_result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -