📄 monthdlg.cpp
字号:
// MonthDlg.cpp : implementation file
//
#include "stdafx.h"
#include "QuoteManage.h"
#include "MonthDlg.h"
#include "COMDEF.H"
#include "Columns.h"
#include "Column.h"
#include "_Recordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMonthDlg dialog
CMonthDlg::CMonthDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMonthDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMonthDlg)
m_total = 0.0;
//}}AFX_DATA_INIT
}
void CMonthDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMonthDlg)
DDX_Control(pDX, IDC_YEAR_COMBO, m_year);
DDX_Control(pDX, IDC_MONTH_COMBO, m_month);
DDX_Control(pDX, IDC_ADODC1, m_Adodc);
DDX_Control(pDX, IDC_DATAGRID1, m_Datagrid);
DDX_Text(pDX, IDC_TOTAL_EDIT, m_total);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMonthDlg, CDialog)
//{{AFX_MSG_MAP(CMonthDlg)
ON_BN_CLICKED(IDC_SEARCH_BUTTON, OnSearchButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMonthDlg message handlers
BOOL CMonthDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
int i;
for(i=1980; i<=2050; i++)
{
cYear.Format("%d", i);
m_year.AddString(cYear);
}
for(i=1; i<=9; i++)
{
cMonth.Format("%d", i);
m_month.AddString("0" + cMonth);
}
for(i=10; i<=12; i++)
{
cMonth.Format("%d", i);
m_month.AddString(cMonth);
}
CTime CurrentTime = CTime::GetCurrentTime();
// 设置当前年份
i = 0;
while(i < m_year.GetCount())
{
m_year.GetLBText(i, cYear);
if(cYear == CurrentTime.Format("%Y"))
{
m_year.SetCurSel(i);
break;
}
i++;
}
// 设置当前月份
i = 0;
while(i < m_month.GetCount())
{
m_month.GetLBText(i, cMonth);
if(cMonth == CurrentTime.Format("%m"))
{
m_month.SetCurSel(i);
break;
}
i++;
}
RefreshData();
m_Adodc.GetRecordset().MoveLast();
m_total = atof(m_Datagrid.GetItem(3));
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
// 刷新数据
void CMonthDlg::RefreshData()
{
UpdateData(TRUE);
CString cNDate,cBDate; // 定义日期范围
//如果月份=12,则为下一年度,月份为1月
if(m_month.GetCurSel()==12)
{
m_year.GetLBText(m_year.GetCurSel(), cYear);
cBDate = cYear + "-12-01";
m_year.GetLBText(m_year.GetCurSel()+1, cYear);
cNDate = cYear + "-01-01";
}
else
{
m_year.GetLBText(m_year.GetCurSel(), cYear);
m_month.GetLBText(m_month.GetCurSel(), cMonth);
cBDate = cYear + "-" + cMonth + "-01";
m_month.GetLBText(m_month.GetCurSel()+1, cMonth);
cNDate = cYear + "-" + cMonth + "-01";
}
// 设置Select语句
CString cSource = "SELECT CONVERT(char(10),FitTime,20) AS 装机时间, COUNT(*) AS 装机数量, "
" ISNULL(SUM(Num),0) AS 配件总量, ISNULL(SUM(Total),0) AS 总收入"
" FROM (SELECT t.TId, t.FitTime, d.Num, d.Total FROM TotalQuote t INNER JOIN"
" (SELECT TId, ISNULL(SUM(Num),0) AS Num, ISNULL(SUM(SubTotal),0) AS Total FROM DetailQuote GROUP BY TId) d"
" ON t.TId = d.TId) td WHERE td.FitTime >='" + cBDate + "' And "
" td.FitTime<'" + cNDate + "' GROUP BY td.FitTime"
" UNION"
" SELECT '本月总计', COUNT(*),ISNUll(SUM(Num),0), ISNULL(SUM(Total),0) FROM"
" (SELECT t.TId, t.FitTime, d.Num, d.Total FROM TotalQuote t INNER JOIN"
" (SELECT TId, ISNULL(SUM(Num),0) AS Num, ISNULL(SUM(SubTotal),0) AS Total FROM DetailQuote GROUP BY TId) d"
" ON t.TId = d.TId WHERE t.FitTime >='" + cBDate + "' And t.FitTime<'" + cNDate + "') td";
//MessageBox(cSource);
//刷新ADO Data控件的记录源
m_Adodc.SetRecordSource(cSource);
m_Adodc.Refresh();
//设置列宽度
_variant_t vIndex;
vIndex = long(0);
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);
vIndex = long(1);
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);
vIndex = long(2);
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);
vIndex = long(3);
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);
}
// 检索按钮
void CMonthDlg::OnSearchButton()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
//根据选择的年月信息,刷新表格数据
RefreshData();
// 计算总收入
m_Adodc.GetRecordset().MoveLast();
m_total = atof(m_Datagrid.GetItem(3));
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -