📄 searchstdlg.cpp
字号:
/**
* <p> Title: 查询社团的窗口类实现 </p>
* <p> Description:提供查询社团功能 </p>
* <p> Copyright: Copyright (c) 2005-12-17 </p>
* <p> Company: bjut </p>
* @author gaok
* @version 1.0
* @Created on 2005-12-17
*/
#include "stdafx.h"
#include "STMis.h"
#include "SearchSTDlg.h"
#include "AddXsMsgReSet.h"
#include "AddStMsgRSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSearchSTDlg dialog
/*
* 构造函数
*/
CSearchSTDlg::CSearchSTDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSearchSTDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSearchSTDlg)
m_strStuId = _T(""); // 所输入的学生学号
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CSearchSTDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSearchSTDlg)
DDX_Control(pDX, IDC_LIST1, m_ctrList);
DDX_Text(pDX, IDC_EDIT_STUDENTID, m_strStuId); // 学生学号
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSearchSTDlg, CDialog)
//{{AFX_MSG_MAP(CSearchSTDlg)
ON_BN_CLICKED(IDC_Search, OnButtonSearch)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSearchSTDlg message handlers
/*
* 初始化社团列表的列表名字
*/
BOOL CSearchSTDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(TRUE); // 读入用户输入的信息
// 设置学生信息列表的表项
m_ctrList.InsertColumn(0,"社团名称");
m_ctrList.InsertColumn(1,"社团负责人");
m_ctrList.InsertColumn(2,"联系电话");
m_ctrList.SetColumnWidth(0,100);
m_ctrList.SetColumnWidth(1,100);
m_ctrList.SetColumnWidth(2,100);
m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); // 设置列表
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*
* 执行查询操作后刷新社团信息列表的记录
* @param oaValues 数组对象
*/
void CSearchSTDlg::RefreshData(CStringArray* oaValues)
{
int i=0;
StSearch* ssSearch = new StSearch();
m_ctrList.DeleteAllItems(); // 将活动列表的记录清空
m_ctrList.SetRedraw(FALSE);
UpdateData(TRUE); // 读入用户输入的信息
for (int j = 0; j < oaValues->GetSize(); j++) { // 将社团名称依次取出
strSQL.Format("select * from ST where ST_ZZMC='%s' order by ST_ZZMC", oaValues->GetAt(j));
/* 将符合条件的查询结果显示在列表中, 将CRecordset对象转成不同的数据集对象 */
CAddStMsgRSet* m_recordSet = (CAddStMsgRSet *)ssSearch->RefreshData(strSQL);
/* 将记录显示在活动列表中 */
m_ctrList.InsertItem(i,m_recordSet->m_ST_ZZMC); // 社团名称
m_ctrList.SetItemText(i,1,m_recordSet->m_ST_FZR); // 负责人
m_ctrList.SetItemText(i,2,m_recordSet->m_ST_LXDH); // 联系电话
i++;
}
m_database.Close(); // 关掉数据库
m_ctrList.SetRedraw(TRUE);
}
/*
* 执行查询操作
*/
void CSearchSTDlg::OnButtonSearch()
{
UpdateData(); // 读入用户输入的信息
int i=0;
CString strSQL; // sql文
BOOL bHaveCon = FALSE; // 是否输入了“学生学号”
StSearch* ssSearch = new StSearch();
if(m_strStuId!="") { // 若输入了“学生学号”
strSQL.Format("select * from XS where XS_SCBZ=false and XS_XH = '%s' order by XS_STMC",m_strStuId);
bHaveCon = TRUE;
}
if(!bHaveCon) { // 若什么都没有选择,则查询所有的
strSQL.Format("select * from XS where XS_SCBZ=false order by XS_STMC");
}
/* 将符合条件的查询结果显示在列表中, 将CRecordset对象转成不同的数据集对象 */
CAddXsMsgReSet* oaValues = (CAddXsMsgReSet *)ssSearch->getSearchResult(strSQL);
CStringArray* saRecord = new CStringArray();
/* 将有重复的社团过滤掉 */
while (!oaValues->IsEOF()) {
bool flag = true;
CString sStZzmc = oaValues->m_XS_STMC;
CAddXsMsgReSet* oaSecValues = (CAddXsMsgReSet *)ssSearch->getSearchResult(strSQL); // 用来比较是否有重复记录的结果集合
oaSecValues->Move(i); // 记录移到第i条
if (!oaSecValues->IsEOF()) { // 如果不是最后记录了,则向下移动一条记录
oaSecValues->MoveNext();
}
while (!oaSecValues->IsEOF()) {
if (sStZzmc == oaSecValues->m_XS_STMC) { // 如果有重复的,就跳出这层循环
flag = false;
break;
}
oaSecValues->MoveNext();
}
if (flag) { // 将过滤后的社团名称加到数组中
saRecord->Add(sStZzmc);
}
i++;
oaValues->MoveNext();
}
RefreshData(saRecord); // 查询出结果,刷新显示列表
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -