📄 inputedit.cpp
字号:
// InputEdit.cpp : 实现文件
//
#include "stdafx.h"
#include "Bill.h"
#include "InputEdit.h"
#include ".\inputedit.h"
// CInputEdit 对话框
IMPLEMENT_DYNAMIC(CInputEdit, CDialog)
CInputEdit::CInputEdit(CWnd* pParent /*=NULL*/)
: CDialog(CInputEdit::IDD, pParent)
, m_inputDate(_T("2007-**-**"))
, m_inputType(_T(""))
, m_inputSum(0)
{
}
CInputEdit::~CInputEdit()
{
}
void CInputEdit::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_INPUT_DATE, m_inputDate);
DDX_Text(pDX, IDC_INPUT_TYPE, m_inputType);
DDX_Text(pDX, IDC_INPUT_SUM, m_inputSum);
}
BEGIN_MESSAGE_MAP(CInputEdit, CDialog)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDCLEAR, OnBnClickedClear)
END_MESSAGE_MAP()
// CInputEdit 消息处理程序
BOOL CInputEdit::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
if((theApp.m_pDB)->IsOpen())
{
m_inputRecordset=new CDaoRecordset(theApp.m_pDB);
m_moneyStat=new CDaoRecordset(theApp.m_pDB);
try
{
m_inputRecordset->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 CInputEdit::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
//释放连接
if(m_inputRecordset)
{
if(m_inputRecordset->IsOpen())
m_inputRecordset->Close();
delete m_inputRecordset;
}
if(m_moneyStat)
{
if(m_moneyStat->IsOpen())
m_moneyStat->Close();
delete m_moneyStat;
}
OnCancel();
}
void CInputEdit::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//将新的支出添加到数据库中
UpdateData(TRUE);//首先更新控件值
if(m_inputType.GetLength()>0 && m_inputDate.GetLength()>0)
{
try{
m_inputRecordset->AddNew();
COleVariant vtime(m_inputDate);
vtime.ChangeType(VT_DATE);
COleDateTime time = vtime;//CString--->COleDateTime
m_inputRecordset->SetFieldValue("收入时间",time);
m_inputRecordset->SetFieldValue("收入金额", m_inputSum);
m_inputRecordset->SetFieldValue("收入类型", (LPSTR)(LPCTSTR)m_inputType);
m_inputRecordset->Update();
AfxMessageBox("添加成功");
}catch (CDaoException* e) {
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
e->Delete();
}
}
else
{
AfxMessageBox("请输入收入类型&收入时间");
return;
}
////////////////////
//更新月报
CString str = m_inputDate;
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_inputSum);
m_moneyStat->SetFieldValue("余额", m_inputSum);
m_moneyStat->Update();
}
else
{
m_moneyStat->MoveFirst();
m_moneyStat->Edit();
COleVariant m_inputMoney;
m_moneyStat->GetFieldValue("收入金额",m_inputMoney);
CString strMoney = GetStringFromOlevar(m_inputMoney);//将值转化为CString型
float sum = atof(strMoney)+m_inputSum;
m_moneyStat->SetFieldValue("收入金额", sum);
COleVariant m_outputMoney;
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();
}
CString CInputEdit::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;
}
void CInputEdit::OnBnClickedClear()
{
// TODO: 在此添加控件通知处理程序代码
m_inputDate.Empty();
m_inputSum = 0;
m_inputType.Empty();
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -