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

📄 dormpage.cpp

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CDormPage property page

IMPLEMENT_DYNCREATE(CDormPage, CPropertyPage)

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

CDormPage::~CDormPage()
{
}

void CDormPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDormPage)
	DDX_Control(pDX, IDC_LIST_DORM, m_ctrlDormList);
	DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
	DDX_Text(pDX, IDC_STATIC_TOTAL, m_strTotal);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CDormPage message handlers

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

	//设置List的列
	int nWidth=110;
	this->m_ctrlDormList.InsertColumn(0,"学号",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(1,"姓名",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(2,"性别",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(3,"年级",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(4,"专业",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(5,"班级",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(6,"公寓号",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(7,"寝室号",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(8,"寝室违纪次数",LVCFMT_LEFT,nWidth);
	this->m_ctrlDormList.InsertColumn(9,"寝室奖励次数",LVCFMT_LEFT,nWidth);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

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

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

void CDormPage::UpdateList()
{
	CString strFilter;
	CString strSTime;
	CString strETime;
	CString strGradeID;
	CString strSpecialtyID;
	CString strClassID;
	CString strStudentNum;

	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;

	vSql1="Select StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,BuildNum,\
		RommNum,Count(StudentNum) as IsNotDo from DormInfo Where (DormInfo.IsDo=0)"+strFilter+
		"and(DormDateTime>#"+strSTime+"#)and(DormDateTime<#"+strETime+"#)"+
		" Group by  StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,BuildNum,RommNum ";
 

	vSql="Select StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,BuildNum,\
		RommNum,Count(StudentNum) as IsDo from DormInfo Where (DormInfo.IsDo=1)"+strFilter+
		"and(DormDateTime>#"+strSTime+"#)and(DormDateTime<#"+strETime+"#)"+
		" Group by  StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,BuildNum,RommNum ";

	
	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 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");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlDormList.InsertItem(i,str);

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

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

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

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

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

		//获得公寓号
		Holder=pRs->GetCollect("BuildNum");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlDormList.SetItemText(i,6,str);

		//获得寝室号
		Holder=pRs->GetCollect("RommNum");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlDormList.SetItemText(i,7,str);

		//获得违纪次数
		Holder=pRs->GetCollect("IsDo");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlDormList.SetItemText(i,8,str);

		//获得奖励次数
		if(!str1.Compare(sa_Stu[0].GetAt(i)))
		{
			str=sa_Stu[1].GetAt(i);
			m_ctrlDormList.SetItemText(i,9,str);
		}
	

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

⌨️ 快捷键说明

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