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

📄 activitypage.cpp

📁 &#61557 职责描述:
💻 CPP
字号:
// ActivityPage.cpp : implementation file
//

#include "stdafx.h"
#include "StudentCheck.h"
#include "ActivityPage.h"
#include "GeneralQueryDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CActivityPage property page

IMPLEMENT_DYNCREATE(CActivityPage, CPropertyPage)

CActivityPage::CActivityPage() : CPropertyPage(CActivityPage::IDD)
{
	//{{AFX_DATA_INIT(CActivityPage)
	m_strTotal = _T("");
	//}}AFX_DATA_INIT
}

CActivityPage::~CActivityPage()
{
}

void CActivityPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CActivityPage)
	DDX_Control(pDX, IDC_LIST_ACTIVITY, m_ctrlActivityList);
	DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
	DDX_Text(pDX, IDC_STATIC_TOTAL, m_strTotal);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CActivityPage, CPropertyPage)
	//{{AFX_MSG_MAP(CActivityPage)
	ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CActivityPage message handlers

BOOL CActivityPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	//为List添加网格
	this->m_ctrlActivityList.SetExtendedStyle(LVS_EX_GRIDLINES);

	//设置List的列
	int nWidth=110;
	this->m_ctrlActivityList.InsertColumn(0,"学号",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(1,"姓名",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(2,"性别",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(3,"年级",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(4,"专业",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(5,"班级",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(6,"参加活动次数",LVCFMT_LEFT,nWidth);
	this->m_ctrlActivityList.InsertColumn(7,"未参加活动次数",LVCFMT_LEFT,nWidth);

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

void CActivityPage::OnButtonQuery() 
{
	// TODO: Add your control notification handler code here
	CGeneralQueryDlg *pGeneralQueryDlg;
	pGeneralQueryDlg=(CGeneralQueryDlg*)GetParent()->GetParent();
	pGeneralQueryDlg->UpdateData();

	if(pGeneralQueryDlg->IsSelected())
	{
		this->m_ctrlActivityList.DeleteAllItems();
		UpdateList();
	}
}

void CActivityPage::UpdateList()
{
	CString strFilter;
	CString strSTime;
	CString strETime;
	CString strGradeID;
	CString strSpecialtyID;
	CString strClassID;
	CString strStudentNum;
    //定义 CGeneralQueryDlg类型指针
	CGeneralQueryDlg *pGeneralQueryDlg;
	pGeneralQueryDlg=(CGeneralQueryDlg*)GetParent()->GetParent();
	pGeneralQueryDlg->UpdateData();
    //获得开始时间
	strSTime=pGeneralQueryDlg->GetStartTime();
	strETime=pGeneralQueryDlg->GetEndTime();
	strGradeID=pGeneralQueryDlg->GetGrade();
	strSpecialtyID=pGeneralQueryDlg->GetSpecialty();
	strClassID=pGeneralQueryDlg->GetClass();
	strStudentNum=pGeneralQueryDlg->GetStudentNum();

    if(strGradeID.GetLength()>0&&pGeneralQueryDlg->m_btnGrade.GetCheck()>0)
		strFilter="and (GradeID='"+strGradeID+"')";
	if(strSpecialtyID.GetLength()>0&&pGeneralQueryDlg->m_btnSpecialty.GetCheck()>0)
		strFilter+="and(SpecialtyID='"+strSpecialtyID+"')";
	if(strClassID.GetLength()>0&&pGeneralQueryDlg->m_btnClass.GetCheck()>0)
		strFilter+="and(ClassID='"+strClassID+"')";
	if(strStudentNum.GetLength()>0&&pGeneralQueryDlg->m_btnStudentNum.GetCheck()>0)
	{
		strFilter="";
		strFilter+="and(StudentNum='"+strStudentNum+"')";
	}
		//SQL语句
	_bstr_t vSql,vSql1;
	CString count1;

    //得到参加活动次数的vSql语句
	vSql="select StudentNum,Name,Sex,GradeName,SpecialtyName,ClassName,\
		Count(StudentNum) as IsDo from ActivityInfo where (IsAct=1) "+strFilter+
		"and(ActDateTime>#"+strSTime+"#)and(ActDateTime<#"+strETime+"#)"+
		"Group by  StudentNum,Name,Sex,GradeName,SpecialtyName,ClassName ";
  
	//得到未参活动次数的vSql语句
	vSql1="select StudentNum,Name,Sex,GradeName,SpecialtyName,ClassName,\
		Count(StudentNum) as IsNotDo from ActivityInfo where (IsAct=0) "+strFilter+
		"and(ActDateTime>#"+strSTime+"#)and(ActDateTime<#"+strETime+"#)"+
		"Group by  StudentNum,Name,Sex,GradeName,SpecialtyName,ClassName ";
   //统计记录数
	int iCount=m_CurAdo.GetRecordCount(vSql);
	if(iCount==0)return;

	_RecordsetPtr pRs,pRs1;
	pRs=m_CurAdo.GetRecordSet(vSql);
	pRs1=m_CurAdo.GetRecordSet(vSql1);
	int i=0;
	//定义_variant_t变量
	_variant_t Holder;
	CString str,str1;
	CStringArray sa_Stu[2],sa_count;
	//判断记录集,获得记录集中的数据
	while(pRs1->adoEOF==0)
	{
		//获得学号
		Holder=pRs1->GetCollect("StudentNum");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
        sa_Stu[0].Add(str);

		//获得为出操次数
		Holder=pRs1->GetCollect("IsNotDo");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
        sa_Stu[1].Add(str);             
		i++;
		pRs1->MoveNext();
	}
	i=0;
	//获取记录集中的数据
	while(pRs->adoEOF==0)
	{
		//获得学号
		Holder=pRs->GetCollect("StudentNum");
		str1=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.InsertItem(i,str1);

		//获得姓名
		Holder=pRs->GetCollect("Name");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,1,str);

		//获得性别
		Holder=pRs->GetCollect("Sex");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,2,str);

		//获得年级
		Holder=pRs->GetCollect("GradeName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,3,str);

		//获得专业
		Holder=pRs->GetCollect("SpecialtyName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,4,str);

		//获得班级
		Holder=pRs->GetCollect("ClassName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,5,str);

		//获得可参加活动次数
		Holder=pRs->GetCollect("IsDo");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlActivityList.SetItemText(i,6,str);

		//获得必须参加活动次数
		if(!str1.Compare(sa_Stu[0].GetAt(i)))
		{
			str=sa_Stu[1].GetAt(i);
			m_ctrlActivityList.SetItemText(i,7,str);
		}

		i++;
		pRs->MoveNext();
	}
}

⌨️ 快捷键说明

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