📄 querydlg.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 + -