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

📄 monthdlg.cpp

📁 这是一个功能相对完善的电脑报价管理系统 的一个例子
💻 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 + -