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

📄 querydlg.cpp

📁 Family Financial Management System是一个特别方便的理财系统。功能方便实用。
💻 CPP
字号:
// QueryDlg.cpp : implementation file
//

#include "stdafx.h"
#include "FFManage.h"
#include "QueryDlg.h"
#include "ListDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



extern CRecordset g_Recordset;	
extern CDatabase  g_Database;
extern int        g_iType;

/////////////////////////////////////////////////////////////////////////////
// CQueryDlg dialog


CQueryDlg::CQueryDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CQueryDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CQueryDlg)
	m_datePicker1 = COleDateTime::GetCurrentTime();
	m_datePicker2 = COleDateTime::GetCurrentTime();
	m_datePicker3 = COleDateTime::GetCurrentTime();
	m_datePicker33 = COleDateTime::GetCurrentTime();
	m_nSelectTime = 4;
	m_bSelectAll = FALSE;
	m_strCmbType = _T("");
	m_bAllType = FALSE;
	m_bBlueType = FALSE;
	m_strCmbYear = _T("");
	m_strCmbMonth = _T("");
	//}}AFX_DATA_INIT
}


void CQueryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQueryDlg)
	DDX_Control(pDX, IDC_CMB_Type, m_ctlCmbType);
	DDX_Control(pDX, IDC_CMB_YEAR, m_cmbYear);
	DDX_Control(pDX, IDC_CMB_MONTH, m_cmbMonth);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_datePicker1);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_datePicker2);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER3, m_datePicker3);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER33, m_datePicker33);
	DDX_Radio(pDX, IDC_RAD_SelectTime0, m_nSelectTime);
	DDX_Check(pDX, IDC_CHK_SELECTALL, m_bSelectAll);
	DDX_CBString(pDX, IDC_CMB_Type, m_strCmbType);
	DDV_MaxChars(pDX, m_strCmbType, 100);
	DDX_Check(pDX, IDC_CHK_AllType, m_bAllType);
	DDX_Check(pDX, IDC_CHK_BlueType, m_bBlueType);
	DDX_CBString(pDX, IDC_CMB_YEAR, m_strCmbYear);
	DDV_MaxChars(pDX, m_strCmbYear, 4);
	DDX_CBString(pDX, IDC_CMB_MONTH, m_strCmbMonth);
	DDV_MaxChars(pDX, m_strCmbMonth, 2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQueryDlg, CDialog)
	//{{AFX_MSG_MAP(CQueryDlg)
	ON_BN_CLICKED(IDC_RAD_SelectTime0, OnRADSelectTime0)
	ON_BN_CLICKED(IDC_RAD_SelectTime1, OnRADSelectTime1)
	ON_BN_CLICKED(IDC_RAD_SelectTime2, OnRADSelectTime2)
	ON_BN_CLICKED(IDC_RAD_SelectTime3, OnRADSelectTime3)
	ON_BN_CLICKED(IDC_RAD_SelectTime4, OnRADSelectTime4)
	ON_BN_CLICKED(IDC_CHK_SELECTALL, OnChkSelectall)
	ON_BN_CLICKED(IDC_CHK_AllType, OnCHKAllType)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQueryDlg message handlers

void CQueryDlg::OnRADSelectTime0() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	SetSelectTimeStatus();
}

void CQueryDlg::OnRADSelectTime1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	SetSelectTimeStatus();
}

void CQueryDlg::OnRADSelectTime2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	SetSelectTimeStatus();
}

void CQueryDlg::OnRADSelectTime3() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	SetSelectTimeStatus();
}

void CQueryDlg::OnRADSelectTime4() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	SetSelectTimeStatus();
}

void CQueryDlg::SetSelectTimeStatus()
{
	GetDlgItem(IDC_CMB_YEAR)->EnableWindow(m_nSelectTime==0);
	GetDlgItem(IDC_CMB_MONTH)->EnableWindow(m_nSelectTime==0);
	
	GetDlgItem(IDC_DATETIMEPICKER1)->EnableWindow(m_nSelectTime==1);
	GetDlgItem(IDC_DATETIMEPICKER2)->EnableWindow(m_nSelectTime==2);
	GetDlgItem(IDC_DATETIMEPICKER3)->EnableWindow(m_nSelectTime==3);
	GetDlgItem(IDC_DATETIMEPICKER33)->EnableWindow(m_nSelectTime==3);

	switch(m_nSelectTime)
	{
	case 0:
		GetDlgItem(IDC_CMB_YEAR)->SetFocus( );
		break;
	case 1:		
		GetDlgItem(IDC_DATETIMEPICKER1)->SetFocus( );
		break;
	case 2:		
		GetDlgItem(IDC_DATETIMEPICKER2)->SetFocus( );
		break;
	case 3:		
		GetDlgItem(IDC_DATETIMEPICKER3)->SetFocus( );
		break;
	}
}

void CQueryDlg::OnChkSelectall() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	GetDlgItem(IDC_RAD_SelectTime0)->EnableWindow(!m_bSelectAll);
	GetDlgItem(IDC_RAD_SelectTime1)->EnableWindow(!m_bSelectAll);
	GetDlgItem(IDC_RAD_SelectTime2)->EnableWindow(!m_bSelectAll);
	GetDlgItem(IDC_RAD_SelectTime3)->EnableWindow(!m_bSelectAll);
	GetDlgItem(IDC_RAD_SelectTime4)->EnableWindow(!m_bSelectAll);	

	GetDlgItem(IDC_CMB_Type)->EnableWindow((!m_bSelectAll)&&(!m_bAllType));
	GetDlgItem(IDC_CHK_BlueType)->EnableWindow((!m_bSelectAll)&&(!m_bAllType));
	GetDlgItem(IDC_CHK_AllType)->EnableWindow(!m_bSelectAll);

	if (m_bSelectAll)
	{
		m_nSelectTime = -1;
		SetSelectTimeStatus();
	}
	else
	{
		SetSelectTimeStatus();
	}
	
}

BOOL CQueryDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	CString strTemp;
	int i=0;	
	for(i=2000; i<2050; i++)
	{
		strTemp.Format("%d", i);
		m_cmbYear.AddString(strTemp);
	}

	m_dateTemp = COleDateTime::GetCurrentTime();
	m_strCmbYear = m_dateTemp.Format("%Y"); 

	for(i=1; i<13; i++)
	{
		strTemp.Format("%d",i);
		m_cmbMonth.AddString(strTemp);
	}
	m_strCmbMonth = m_dateTemp.Format("%m"); 

	SetSelectTimeStatus();


	int iYear =m_datePicker3.GetYear();
	int iMonth=m_datePicker3.GetMonth();
	int iDay  =m_datePicker3.GetDay();
	if(iMonth == 1)
	{
		iYear--;
		iMonth = 12;
	}
	else
	{
		iMonth--;
	}
	if((m_datePicker3.SetDate(iYear,iMonth,iDay))!=0)
	{
		m_datePicker3.SetDate(iYear,iMonth+1,1);
	}


	switch(g_iType)
	{
	case TYPE_Out:
		SetWindowText("查询 “开支” 记录");	
		break;
	case TYPE_Event:
		SetWindowText("查询 “记事” 记录");		
		break;
	case TYPE_In:
		SetWindowText("查询 “收入” 记录");
		break;
	case TYPE_Save:
		SetWindowText("查询 “储蓄” 记录");	
		break;
	case TYPE_Dac:
		SetWindowText("查询 “借贷” 记录");
		break;
	default:
		break;
	}


	strTemp.Format("select FValue from TListCmb where FType = %d Order by FValue",g_iType);
	if(g_Recordset.IsOpen())g_Recordset.Close();
	g_Recordset.Open(CRecordset::forwardOnly, strTemp, CRecordset::readOnly);
	while( !g_Recordset.IsEOF())
	{
		g_Recordset.GetFieldValue((short)0,strTemp);		
		m_ctlCmbType.AddString(strTemp);
    	g_Recordset.MoveNext();			
	}
	g_Recordset.Close();  


	
	if(g_iType == TYPE_Dac)
	{
		GetDlgItem(IDC_STA_TYPEVALUE)->SetWindowText("借贷对方:");
	}
	UpdateData(false);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CQueryDlg::OnCHKAllType() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	GetDlgItem(IDC_CMB_Type)->EnableWindow(!m_bAllType);
	GetDlgItem(IDC_CHK_BlueType)->EnableWindow(!m_bAllType);

}

void CQueryDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(TRUE);	
	if(m_nSelectTime == 0)
	{
		int i = 0;
		i = atoi(m_strCmbYear);
		if((i < 1000 )||(i > 9999))
		{
			AfxMessageBox("请输入正确的年份!");
			return;
		}
		i = atoi(m_strCmbMonth);
		if((i < 1)||(i > 12 ))
		{
			AfxMessageBox("请输入正确的月份!");
			return;
		}
		if(i < 10)
		{
			m_strCmbMonth = "0" + m_strCmbMonth;
		}
	}	

	if(m_nSelectTime == 3)
	{
		if(m_datePicker3 > m_datePicker33)
		{
			AfxMessageBox("查询时间左值不能大于右值!");
			return;
		}
	}

	QuerySQL();
	CDialog::OnOK();
}

void CQueryDlg::QuerySQL()
{

	CListDlg dlg;
	
	switch(m_nSelectTime)
	{
	case 0:	
		dlg.m_strDate1.Format("%s年%s月00日", m_strCmbYear, m_strCmbMonth);
		dlg.m_strDate2 = ""; 		
		break;
	case 1:
		dlg.m_strDate1 = ""; 
		dlg.m_strDate2 = m_datePicker1.Format("%Y年%m月%d日"); 
		break;
	case 2:
		dlg.m_strDate1 = m_datePicker2.Format("%Y年%m月%d日");
		dlg.m_strDate2 = ""; 		
		break;
	case 3:
		dlg.m_strDate1 = m_datePicker3.Format("%Y年%m月%d日");
		dlg.m_strDate2 = m_datePicker33.Format("%Y年%m月%d日"); 
		break;
	default:
		dlg.m_strDate1 = ""; 
		dlg.m_strDate2 = ""; 
	}

	if (m_bAllType)
	{
		dlg.m_strTypeValue = "";
	} 
	else
	{
		dlg.m_strTypeValue = m_strCmbType;
		dlg.m_bBlueType    = m_bBlueType;
	}

	if(m_bSelectAll)
	{
		dlg.m_strTypeValue = "";
		dlg.m_strDate1 = ""; 
		dlg.m_strDate2 = ""; 
	}

	
	dlg.DoModal();
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -