📄 subform_1.cpp
字号:
// SubForm_1.cpp : implementation file
//
#include "stdafx.h"
#include "Exam.h"
#include "SubForm_1.h"
#include "ExamDoc.h"
#include "ExamView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSubForm_1 dialog
CSubForm_1::CSubForm_1(CWnd* pParent /*=NULL*/)
: CDialog(CSubForm_1::IDD, pParent)
{
//{{AFX_DATA_INIT(CSubForm_1)
m_sClass = _T("");
m_sGrade = _T("");
//}}AFX_DATA_INIT
m_nCourseID = -1;
}
void CSubForm_1::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSubForm_1)
DDX_Control(pDX, IDC_COURSE, m_ctrlCourse);
DDX_CBString(pDX, IDC_CLASS, m_sClass);
DDX_Control(pDX, IDC_DBGRID, m_ctrlDBGrid);
DDX_Control(pDX, IDC_REMOTEDATACTL, m_clsRdc);
DDX_CBString(pDX, IDC_GRADE, m_sGrade);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSubForm_1, CDialog)
//{{AFX_MSG_MAP(CSubForm_1)
ON_CBN_SELCHANGE(IDC_GRADE, OnSelchangeGrade)
ON_CBN_SELCHANGE(IDC_CLASS, OnSelchangeClass)
ON_CBN_SELCHANGE(IDC_COURSE, OnSelchangeCourse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSubForm_1 message handlers
BOOL CSubForm_1::OnInitDialog()
{
CDialog::OnInitDialog();
m_pView = (CExamView*)GetParent();
// Recordset对象
_RecordsetPtr pRecordset;
try
{
// 创建Recordset对象
pRecordset.CreateInstance(__uuidof(Recordset));
// 打开记录集,使用静态光标和开放式锁定方式
pRecordset->Open(_bstr_t("SELECT * FROM 课程信息"),
_variant_t((IDispatch*)m_pView->m_pConnection, true),
adOpenStatic,
adLockOptimistic,
adCmdText);
}
catch (_com_error e)
{
// 显示错误信息
CString errormessage;
errormessage.Format("打开记录集失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
return FALSE;
}
// 显示信息录入对话框
_variant_t vField;
try
{
// 取得所有课程名称
for (int i = 0; i < pRecordset->GetRecordCount(); i++)
{
vField = pRecordset->GetCollect(long(1));
m_ctrlCourse.AddString(CString(vField.bstrVal));
pRecordset->MoveNext();
}
// 关闭记录集
pRecordset->Close();
}
catch (_com_error e)
{
// 显示错误信息
CString errormessage;
errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSubForm_1::OnSelchangeGrade()
{
// 得到选中的课程名称
CString sCourse;
int nSel = m_ctrlCourse.GetCurSel();
if (nSel >= 0)
m_ctrlCourse.GetLBText(nSel, sCourse);
UpdateData(TRUE);
if (m_sGrade != "" && m_sClass != "" && m_sCourse != "")
{
// Recordset对象
_RecordsetPtr pRecordset;
_variant_t vField;
try
{
// 创建Recordset对象
pRecordset.CreateInstance(__uuidof(Recordset));
// 打开指定的记录集,使用静态光标和开放式锁定方式
CString sCmd = "SELECT * FROM 班级信息 WHERE 年级 = '" + m_sGrade + "' AND 班级名称 = '" + m_sClass + "'";
pRecordset->Open(_bstr_t(sCmd),
_variant_t((IDispatch*)m_pView->m_pConnection, true),
adOpenStatic,
adLockOptimistic,
adCmdText);
// 得到班级ID索引
vField = pRecordset->GetCollect(long(0));
// 关闭记录集
pRecordset->Close();
}
catch (_com_error e)
{
// 显示错误信息
CString errormessage;
errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
}
CString sSQL;
if (m_nCourseID == -1)
sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d ORDER BY 成绩 DESC", vField.lVal);
else
sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d AND 课程ID = %d ORDER BY 成绩 DESC", vField.lVal, m_nCourseID);
// 直接执行SQL语句
m_clsRdc.SetSql(sSQL);
// 更新记录集
m_clsRdc.Refresh();
}
}
void CSubForm_1::OnSelchangeClass()
{
// 得到选中的课程名称
CString sCourse;
int nSel = m_ctrlCourse.GetCurSel();
if (nSel >= 0)
m_ctrlCourse.GetLBText(nSel, sCourse);
UpdateData(TRUE);
if (m_sGrade != "" && m_sClass != "" && m_sCourse != "")
{
// Recordset对象
_RecordsetPtr pRecordset;
_variant_t vField;
try
{
// 创建Recordset对象
pRecordset.CreateInstance(__uuidof(Recordset));
// 打开指定的记录集,使用静态光标和开放式锁定方式
CString sCmd = "SELECT * FROM 班级信息 WHERE 年级 = '" + m_sGrade + "' AND 班级名称 = '" + m_sClass + "'";
pRecordset->Open(_bstr_t(sCmd),
_variant_t((IDispatch*)m_pView->m_pConnection, true),
adOpenStatic,
adLockOptimistic,
adCmdText);
// 得到班级ID索引
vField = pRecordset->GetCollect(long(0));
// 关闭记录集
pRecordset->Close();
}
catch (_com_error e)
{
// 显示错误信息
CString errormessage;
errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
}
CString sSQL;
if (m_nCourseID == -1)
sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d ORDER BY 成绩 DESC", vField.lVal);
else
sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d AND 课程ID = %d ORDER BY 成绩 DESC", vField.lVal, m_nCourseID);
// 直接执行SQL语句
m_clsRdc.SetSql(sSQL);
// 更新记录集
m_clsRdc.Refresh();
}
}
void CSubForm_1::OnSelchangeCourse()
{
// 得到选中的课程名称
m_ctrlCourse.GetLBText(m_ctrlCourse.GetCurSel(), m_sCourse);
UpdateData();
if (m_sCourse != "")
{
// Recordset对象
_RecordsetPtr pRecordset;
_variant_t vField;
try
{
// 创建Recordset对象
pRecordset.CreateInstance(__uuidof(Recordset));
// 打开记录集,使用静态光标和开放式锁定方式
CString sCmd = "SELECT * FROM 课程信息 WHERE 课程名称 = '" + m_sCourse + "'";
pRecordset->Open(_bstr_t(sCmd),
_variant_t((IDispatch*)m_pView->m_pConnection, true),
adOpenStatic,
adLockOptimistic,
adCmdText);
// 得到班级ID索引
vField = pRecordset->GetCollect(long(0));
// 关闭记录集
pRecordset->Close();
}
catch (_com_error e)
{
// 显示错误信息
CString errormessage;
errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
}
CString sSQL;
m_nCourseID = vField.lVal;
sSQL.Format("Select * from 考生信息 WHERE 课程ID = %d", vField.lVal);
// 直接执行SQL语句
m_clsRdc.SetSql(sSQL);
// 更新记录集
m_clsRdc.Refresh();
}
}
BEGIN_EVENTSINK_MAP(CSubForm_1, CDialog)
//{{AFX_EVENTSINK_MAP(CSubForm_1)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -