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

📄 queview.cpp

📁 本家庭理财系统是一个简易的家庭理财工具
💻 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 + -