📄 queview.cpp
字号:
// QueView.cpp : implementation file
//
#include "stdafx.h"
#include "FFMS.h"
#include "QueView.h"
#include "GeneralDef.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQueView
IMPLEMENT_DYNCREATE(CQueView, CFormView)
CQueView::CQueView()
: CFormView(CQueView::IDD)
{
//{{AFX_DATA_INIT(CQueView)
m_nIOType = -1;
m_nASSETType = -1;
//}}AFX_DATA_INIT
m_nQueType = -1;
m_nQueAssetType = -1;
}
CQueView::~CQueView()
{
}
void CQueView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQueView)
DDX_Control(pDX, IDC_QUE_ASSETTYPE, m_dcQueAssetType);
DDX_Control(pDX, IDC_QUE_TYPE, m_dcQueType);
DDX_Radio(pDX, IDC_RADIO1, m_nIOType);
DDX_Control(pDX, IDC_ADODC1, m_adoQueType);
DDX_Control(pDX, IDC_ADODC2, m_adoQueRes);
DDX_Control(pDX, IDC_DATAGRID1, m_dgQueRes);
DDX_Control(pDX, IDC_QUE_NAME, m_dcQueName);
DDX_Control(pDX, IDC_ADODC3, m_adoQueAssetType);
DDX_Control(pDX, IDC_ADODC4, m_adoQueAssetRes);
DDX_Control(pDX, IDC_DATAGRID2, m_dgQueAssetRes);
DDX_Control(pDX, IDC_QUE_ASSETNAME, m_dcQueAssetName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQueView, CFormView)
//{{AFX_MSG_MAP(CQueView)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_QUE_IO, OnQueIo)
ON_CBN_SELCHANGE(IDC_QUE_TYPE, OnSelchangeQueType)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_QUE_ASSET, OnQueAsset)
ON_CBN_SELCHANGE(IDC_QUE_ASSETTYPE, OnSelchangeQueAssettype)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueView diagnostics
#ifdef _DEBUG
void CQueView::AssertValid() const
{
CFormView::AssertValid();
}
void CQueView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQueView message handlers
void CQueView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CString sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Finance;Data Source=(local)";
if(adoDB.Open(sql)==FALSE)
return;
}
void CQueView::OnSelchangeQueType()
{
// TODO: Add your control notification handler code here
CString strSql;
m_nQueType = m_dcQueType.GetCurSel();
switch(m_nQueType)
{
case 0:
GetDlgItem(IDC_RADIO3)->EnableWindow(1);
m_dcQueName.SetText("");
strSql="select * from MSG_FAMILY";
ModCombox(strSql,"family_name");
break;
case 1:
GetDlgItem(IDC_RADIO3)->EnableWindow(0);
m_dcQueName.SetText("");
strSql="select * from MSG_IN";
ModCombox(strSql,"in_type");
break;
case 2:
GetDlgItem(IDC_RADIO3)->EnableWindow(1);
m_dcQueName.SetText("");
strSql="select * from QUE_TIME";
ModCombox(strSql,"qbt_type");
break;
default:
break;
}
}
void CQueView::OnRadio1()
{
// TODO: Add your control notification handler code here
CString strSql;
if(m_nQueType==1)
{
strSql="select * from MSG_IN";
ModCombox(strSql,"in_type");
m_nIOType=0;
}
}
void CQueView::OnRadio2()
{
// TODO: Add your control notification handler code here
CString strSql;
if(m_nQueType==1)
{
strSql="select * from MSG_OUT";
ModCombox(strSql,"out_type");
m_nIOType=1;
}
}
void CQueView::OnRadio3()
{
// TODO: Add your control notification handler code here
m_nIOType=2;
}
void CQueView::OnQueIo()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
if(!UpdateData())
return;
CString strSql="select io_id as 收支ID,io_date as 收支日期,io_type as 收或支,io_name as 收支类型,io_user as 收支成员,io_mon as 收支金额,io_remark as 说明 from FNC_IO ";
CString strCom=m_dcQueName.GetText();
CString str;
CTime tm=CTime::GetCurrentTime();
switch(m_nQueType)
{
case 0:
if(!strCom.IsEmpty())
{
str.Format("where io_user='%s'",strCom);
strSql+=str;
}
break;
case 1:
if(!strCom.IsEmpty())
{
str.Format("where io_name='%s'",strCom);
strSql+=str;
}
break;
case 2:
switch(GetQBT(strCom))
{
case -1:
strSql+="where io_id>0";
break;
case 0:
tm-=CTimeSpan(7,0,0,0);
str.Format("where io_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 1:
tm-=CTimeSpan(30,0,0,0);
str.Format("where io_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 2:
tm-=CTimeSpan(90,0,0,0);
str.Format("where io_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 3:
tm-=CTimeSpan(180,0,0,0);
str.Format("where io_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 4:
tm-=CTimeSpan(360,0,0,0);
str.Format("where io_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
}
default:
break;
}
if(m_nIOType!=-1&&m_nIOType!=2)
{
str.Format(" and io_type='%s' ",m_nIOType==0?"收入":"支出");
strSql+=str;
}
ModDataGrid(strSql);
}
int CQueView::GetQBT(CString str)
{
str.TrimRight();
if(str=="一周之内")
return 0;
else if(str=="一月之内")
return 1;
else if(str=="一季之内")
return 2;
else if(str=="两季之内")
return 3;
else if(str=="一年之内")
return 4;
else return -1;
}
void CQueView::ModCombox(CString sql, CString colum)
{
m_adoQueType.SetRecordSource(sql);
m_adoQueType.Refresh();
m_dcQueName.SetListField(colum);
m_dcQueName.Refresh();
}
void CQueView::ModDataGrid(CString sql)
{
m_adoQueRes.SetRecordSource(sql);
m_adoQueRes.Refresh();
m_dgQueRes.Refresh();
}
void CQueView::OnQueAsset()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
if(!UpdateData())
return;
CString strSql="select asset_id as 资产ID,asset_date as 日期,asset_name as 资产类型,asset_user as 资产成员,asset_mon as 资产金额,asset_remark as 说明 from FNC_ASSET ";
CString strCom=m_dcQueAssetName.GetText();
CString str;
CTime tm=CTime::GetCurrentTime();
switch(m_nQueAssetType)
{
case 0:
if(!strCom.IsEmpty())
{
str.Format("where asset_user='%s'",strCom);
strSql+=str;
}
break;
case 1:
if(!strCom.IsEmpty())
{
str.Format("where asset_name='%s'",strCom);
strSql+=str;
}
break;
case 2:
switch(GetQBT(strCom))
{
case -1:
strSql+="where asset_id>0";
break;
case 0:
tm-=CTimeSpan(7,0,0,0);
str.Format("where asset_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 1:
tm-=CTimeSpan(30,0,0,0);
str.Format("where asset_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 2:
tm-=CTimeSpan(90,0,0,0);
str.Format("where asset_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 3:
tm-=CTimeSpan(180,0,0,0);
str.Format("where asset_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
case 4:
tm-=CTimeSpan(360,0,0,0);
str.Format("where asset_date >'%s'",tm.Format("%Y-%m-%d"));
strSql+=str;
break;
}
default:
break;
}
ModDataGridAsset(strSql);
}
void CQueView::OnSelchangeQueAssettype()
{
// TODO: Add your control notification handler code here
CString strSql;
m_nQueAssetType = m_dcQueAssetType.GetCurSel();
switch(m_nQueAssetType)
{
case 0:
m_dcQueAssetName.SetText("");
strSql="select * from MSG_FAMILY";
ModComboxAsset(strSql,"family_name");
break;
case 1:
m_dcQueAssetName.SetText("");
strSql="select * from MSG_ASSET";
ModComboxAsset(strSql,"asset_type");
break;
case 2:
m_dcQueAssetName.SetText("");
strSql="select * from QUE_TIME";
ModComboxAsset(strSql,"qbt_type");
break;
default:
break;
}
}
void CQueView::ModDataGridAsset(CString sql)
{
m_adoQueAssetRes.SetRecordSource(sql);
m_adoQueAssetRes.Refresh();
m_dgQueAssetRes.Refresh();
}
void CQueView::ModComboxAsset(CString sql, CString colum)
{
m_adoQueAssetType.SetRecordSource(sql);
m_adoQueAssetType.Refresh();
m_dcQueAssetName.SetListField(colum);
m_dcQueAssetName.Refresh();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -