📄 chaxun.cpp
字号:
// CHAXUN.cpp : implementation file
//
#include "stdafx.h"
#include "family_financ_system.h"
#include "CHAXUN.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCHAXUN dialog
CCHAXUN::CCHAXUN(CWnd* pParent /*=NULL*/)
: CDialog(CCHAXUN::IDD, pParent)
{
//{{AFX_DATA_INIT(CCHAXUN)
m_str_man = _T("");
m_str_leibie = _T("");
m_begin_day = _T("");
m_end_day = _T("");
m_str_edit = _T("");
//}}AFX_DATA_INIT
}
void CCHAXUN::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCHAXUN)
DDX_Control(pDX, IDC_LIST2, m_list);
DDX_Control(pDX, IDC_COMBO5, m_leibie);
DDX_Control(pDX, IDC_COMBO4, m_man);
DDX_CBString(pDX, IDC_COMBO4, m_str_man);
DDX_CBString(pDX, IDC_COMBO5, m_str_leibie);
DDX_Text(pDX, IDC_EDIT3, m_begin_day);
DDX_Text(pDX, IDC_EDIT19, m_end_day);
DDX_Text(pDX, IDC_EDIT1, m_str_edit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCHAXUN, CDialog)
//{{AFX_MSG_MAP(CCHAXUN)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCHAXUN message handlers
BOOL CCHAXUN::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0,"时间",LVCFMT_LEFT,100,-1);
m_list.InsertColumn(1,"种类",LVCFMT_LEFT,100,-1);
m_list.InsertColumn(2,"金额(元)",LVCFMT_LEFT,100,-1);
m_list.InsertColumn(3,"经手人",LVCFMT_LEFT,100,-1);
m_list.InsertColumn(4,"备注(具体情况)",LVCFMT_LEFT,200,-1);
////////////////////////////////////////////////////////////////////////////////////
int i=0;
int nstep;
_bstr_t temp;
////////////////////////////////////////////////////////////////////////////////
CoInitialize(NULL); //初始化COM组件
_ConnectionPtr pConn(__uuidof(Connection)); //实例化一个connection对象pConn
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pConn->ConnectionString=(_bstr_t)Title1;
//通过pConn对象连接字符串,连接到ACCESS数据库
HRESULT hr = pConn->Open("","","",adConnectUnspecified);
// 以同步的方式进行连接 open("连接字串","用户名","密码","连接方式")
// 连接方式有"adConnectUnspecified"(同步) 和 "adAsyncConnect" (异步)
pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="SELECT * FROM 家庭财务表"; //通过pCmd对象访问数据库
pRst=pCmd->Execute(NULL,NULL,adCmdText);
for(;!pRst->EndEOF; pRst->MoveNext()) // 在数据库中寻找 pRecord->MoveFirst()
{
temp=pRst->GetCollect("时间");
nstep=m_list.InsertItem(i,temp);
temp=pRst->GetCollect("种类");
m_list.SetItemText(nstep,1,temp);
temp=pRst->GetCollect("金额");
m_list.SetItemText(nstep,2,temp);
temp=pRst->GetCollect("经手人");
m_list.SetItemText(nstep,3,temp);
temp=pRst->GetCollect("备注(具体情况)");
m_list.SetItemText(nstep,4,temp);
}
///////////////////////////////////////////////////////////////////////
pCmd->CommandText="SELECT * FROM 收支类别表"; //通过pCmd对象访问数据库
pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->EndEOF)
{
temp=pRst->GetCollect("种类");
m_leibie.AddString(temp);
//把数据库中收支种类这列的内容放入控件中
pRst->MoveNext(); //下移一个
}
m_leibie.AddString("全部收入");
m_leibie.AddString("全部支出");
m_leibie.AddString("全部");
m_str_leibie="全部";
/////////////////////////////////////////////////////////////////////
pCmd->CommandText="SELECT * FROM 家庭成员表"; //通过pCmd对象访问数据库
pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->EndEOF)
{
temp=pRst->GetCollect("家庭成员姓名");
m_man.AddString(temp);
//把数据库中收支种类这列的内容放入控件中
pRst->MoveNext(); //下移一个
}
m_man.AddString("全部");
m_str_man="全部";
//////////////////////////////////////////////////////////////////////
pRst->Close(); //关闭对象
pConn->Close();
pCmd.Release(); //释放对象
pRst.Release();
pConn.Release();
CoUninitialize(); //卸载COM组件
COleDateTime dateNow;
dateNow = COleDateTime::GetCurrentTime(); // 获取当前日期时间
CString str=dateNow.Format(VAR_DATEVALUEONLY); // 获取当前日
m_end_day=str;
m_begin_day="2000-1-1";
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCHAXUN::OnOK()
{
// TODO: Add extra validation here
int i=0;
int nstep;
_bstr_t temp;
float sum1=0,sum2=0,sum3=0,money=0;
int myear,mmonth,mday,myear1,mmonth1,mday1;
UpdateData(TRUE);
if(m_begin_day!="")
{
sscanf(m_begin_day,"%d-%d-%d",&myear,&mmonth,&mday);
sscanf(m_end_day,"%d-%d-%d",&myear1,&mmonth1,&mday1);
if((myear)&&(mmonth)&&(mday)&&(myear1)&&(mmonth1)&&(mday1))
{
COleDateTime t_time1(myear,mmonth,mday,0,0,0);
COleDateTime t_time2(myear1,mmonth1,mday1,0,0,0);
if(t_time1<t_time2)
{
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
CoInitialize(NULL); //初始化COM组件
_ConnectionPtr pConn(__uuidof(Connection)); //实例化一个connection对象pConn
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pConn->ConnectionString=(_bstr_t)Title1;
//通过pConn对象连接字符串,连接到ACCESS数据库
HRESULT hr = pConn->Open("","","",adConnectUnspecified);
// 以同步的方式进行连接 open("连接字串","用户名","密码","连接方式")
// 连接方式有"adConnectUnspecified"(同步) 和 "adAsyncConnect" (异步)
pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
////////////////////////////////////////////////////////////////
CString sqlstr="SELECT * FROM 家庭财务表 where (日期<=";
CString string_temp;
string_temp.Format("%f",t_time2);
sqlstr=sqlstr+string_temp;
sqlstr=sqlstr+") and (日期>=";
string_temp.Format("%f",t_time1);
sqlstr=sqlstr+string_temp+")";
if((m_str_leibie!="全部")&&(m_str_leibie!="全部收入")&&(m_str_leibie!="全部支出"))
{
sqlstr=sqlstr+" and (种类='"+m_str_leibie+"')";
}
else
{
if(m_str_leibie=="全部收入")
{
sqlstr=sqlstr+" and (收支类别='收入')";
}
else
{
if(m_str_leibie=="全部支出")
{
sqlstr=sqlstr+" and (收支类别='支出')";
}
}
}
if(m_str_man!="全部")
{
sqlstr=sqlstr+" and (经手人='"+m_str_man+"')";
}
pCmd->CommandText=_bstr_t(sqlstr); //通过pCmd对象访问数据库
pRst=pCmd->Execute(NULL,NULL,adCmdText);
m_str_edit+="\r\n";
m_str_edit+="——————————————————\r\n";
m_str_edit+="时 间:"+m_begin_day+"--"+m_end_day+"\r\n";
m_str_edit+="项 目:"+m_str_leibie+"\r\n";
m_str_edit+="经 手 人:"+m_str_man+"\r\n";
if(!pRst->EndEOF)
{
m_list.DeleteAllItems();
while(!pRst->EndEOF)
{
temp=pRst->GetCollect("时间");
nstep=m_list.InsertItem(i,temp);
temp=pRst->GetCollect("种类");
m_list.SetItemText(nstep,1,temp);
temp=pRst->GetCollect("金额");
m_list.SetItemText(nstep,2,temp);
sqlstr=(char *)temp;
sscanf(sqlstr,"%f",&money);
temp=pRst->GetCollect("收支类别");
sqlstr=(char *)temp;
if(sqlstr=="收入")
{
sum1=sum1+money;
}
else
{
sum2=sum2+money;
}
sum3=sum3+money;
temp=pRst->GetCollect("经手人");
m_list.SetItemText(nstep,3,temp);
temp=pRst->GetCollect("备注(具体情况)");
m_list.SetItemText(nstep,4,temp);
pRst->MoveNext();
}
if(m_str_leibie=="全部")
{
m_str_edit+="详 情:\r\n";
sqlstr.Format("%f",sum1);
m_str_edit+=" 收入:"+sqlstr+" 元\r\n";
sqlstr.Format("%f",sum2);
m_str_edit+=" 支出:"+sqlstr+" 元\r\n\r\n";
}
else
{
if(m_str_leibie=="全部收入")
{
m_str_edit+="详 情:\r\n";
sqlstr.Format("%f",sum1);
m_str_edit+=" 收入:"+sqlstr+" 元\r\n\r\n";
}
else
{
if(m_str_leibie=="全部支出")
{
m_str_edit+="详 情:\r\n";
sqlstr.Format("%f",sum2);
m_str_edit+=" 支出:"+sqlstr+" 元\r\n\r\n";
}
else
{
m_str_edit+="详 情:\r\n";
sqlstr.Format("%f",sum3);
m_str_edit+=" "+m_str_leibie+":";
m_str_edit+=sqlstr+" 元\r\n\r\n";
}
}
}
}
else
{
/////////////////////////////////////////////////////////////////
m_str_edit+="详 情:没有该段时间记录!!!\r\n\r\n";
}
//////////////////////////////////////////////////////////////////////
pRst->Close(); //关闭对象
pConn->Close();
pCmd.Release(); //释放对象
pRst.Release();
pConn.Release();
CoUninitialize(); //卸载COM组件
////////////////////////////////////////////////////////////////
}
else
{
AfxMessageBox("时间设定不对 !");
}
}
else
{
AfxMessageBox("时间格式为:2000-1-1 !");
}
}
else
{
AfxMessageBox("设定查询时间!");
}
UpdateData(FALSE);
//CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -