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