📄 dialogcou.cpp
字号:
// DialogCOU.cpp : implementation file
//
#include "stdafx.h"
#include "YDMS.h"
#include "DialogCOU.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialogCOU dialog
CDialogCOU::CDialogCOU(CWnd* pParent /*=NULL*/)
: CDialog(CDialogCOU::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogCOU)
m_CouID = 0;
m_CouName = _T("");
m_CouScore = 0;
m_CouKind = _T("");
m_CouTea = 0;
//}}AFX_DATA_INIT
}
void CDialogCOU::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogCOU)
DDX_Control(pDX, IDC_EDIT_COUID, m_ctlCouID);
DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
DDX_Control(pDX, IDC_BUTTON_PRE, m_btnPre);
DDX_Control(pDX, IDC_BUTTON_OK, m_btnOK);
DDX_Control(pDX, IDC_BUTTON_NEXT, m_btnNext);
DDX_Control(pDX, IDC_BUTTON_MODIFY, m_btnModify);
DDX_Control(pDX, IDC_BUTTON_LAST, m_btnLast);
DDX_Control(pDX, IDC_BUTTON_FIRST, m_btnFirst);
DDX_Control(pDX, IDC_BUTTON_DELETE, m_btnDelete);
DDX_Control(pDX, IDC_BUTTON_ADD, m_btnAdd);
DDX_Text(pDX, IDC_EDIT_COUID, m_CouID);
DDV_MinMaxInt(pDX, m_CouID, 0, 10000);
DDX_Text(pDX, IDC_EDIT_COUNAME, m_CouName);
DDV_MaxChars(pDX, m_CouName, 50);
DDX_Text(pDX, IDC_EDIT_COUSCORE, m_CouScore);
DDV_MinMaxInt(pDX, m_CouScore, 0, 20);
DDX_CBString(pDX, IDC_COMBO_KIND, m_CouKind);
DDX_Text(pDX, IDC_EDIT_TEAID, m_CouTea);
DDV_MinMaxInt(pDX, m_CouTea, 0, 10000);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogCOU, CDialog)
//{{AFX_MSG_MAP(CDialogCOU)
ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
ON_BN_CLICKED(IDC_BUTTON_PRE, OnButtonPre)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOK)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
ON_BN_CLICKED(IDC_BUTTON_GOBACK, OnButtonGoBack)
ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogCOU message handlers
//
//添加枚举变量来实现对不同功能的区分
//
enum examCOU
{
INIT, //对应没有功能
SEARCH, //对应查找功能
ADD, //对应添加功能
DEL, //对应删除功能
MODIFY, //对应修改功能
};
//定义枚举变量FOUNCTION
examCOU FOUNCTION = INIT;
BOOL CDialogCOU::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: ADD extra initialization here
//创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordsetCHO.CreateInstance(__uuidof(Recordset));
//打开课程表
OpenCOURSES();
_variant_t var;
CString str;
try
{
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
//如果表内数据为空,设置控件属性并初始对话框
else
{
AfxMessageBox("表内数据为空");
m_btnQuery.EnableWindow(FALSE);
m_btnDelete.EnableWindow(FALSE);
m_btnModify.EnableWindow(FALSE);
m_btnFirst.EnableWindow(FALSE);
m_btnPre.EnableWindow(FALSE);
m_btnNext.EnableWindow(FALSE);
m_btnLast.EnableWindow(FALSE);
m_btnOK.SetFocus();
return TRUE;
}
//
// 读入库中首字段并加入控件中
//
//更新编辑框m_CouID
var = m_pRecordset->GetCollect("CouID");
if(var.vt != VT_NULL)
m_CouID = var.iVal ;
//更新编辑框m_CouName
var = m_pRecordset->GetCollect("CouName");
str = (LPCSTR)_bstr_t(var);
m_CouName = str;
//更新组合框m_CouKind
var = m_pRecordset->GetCollect("CouKind");
str = (LPCSTR)_bstr_t(var);
m_CouKind = str;
//更新编辑框m_CouScore
var = m_pRecordset->GetCollect("CouScore");
m_CouScore = var.iVal;
//更新编辑框m_CouTea
var = m_pRecordset->GetCollect("CouTea");
m_CouTea = var.iVal;
//更新所有控件显示
UpdateData(false);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDialogCOU::OpenCOURSES()
{
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
try
{
//从SQL数据库中打开COURSES表
m_pRecordset->Open("SELECT * FROM COURSES",
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CDialogCOU::OpenTEACHERS()
{
try
{
//从SQL数据库中打开TEACHERS表
m_pRecordset->Open("SELECT * FROM TEACHERS",
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CDialogCOU::OnButtonQuery()
{
// TODO: ADD your control notification handler code here
m_CouID = 0;
m_CouScore = 0;
m_CouName = "";
m_CouKind = "";
m_CouTea = 0;
UpdateData(false);
//更新FOUNCTION值
FOUNCTION = SEARCH;
//修改各个矩形按钮的属性
m_btnQuery.SetState(TRUE);
m_btnAdd.EnableWindow(FALSE);
m_btnDelete.EnableWindow(FALSE);
m_btnModify.EnableWindow(FALSE);
m_btnFirst.EnableWindow(FALSE);
m_btnPre.EnableWindow(FALSE);
m_btnNext.EnableWindow(FALSE);
m_btnLast.EnableWindow(FALSE);
m_btnOK.SetFocus();
}
//////////////////////////
//
//执行查找功能
//
/////////////////////////
void CDialogCOU::Query()
{
//定义变量
_variant_t var;
CString str;
//更新控件变量的值
UpdateData(true);
try
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("CouID");
if(m_CouID == var.iVal)
{
var = m_pRecordset->GetCollect("CouID");
if(var.vt != VT_NULL)
{
m_CouID = var.iVal;
}
var = m_pRecordset->GetCollect("CouName");
str = (LPCSTR)_bstr_t(var);
m_CouName = str;
var = m_pRecordset->GetCollect("CouKind");
str = (LPCSTR)_bstr_t(var);
m_CouKind = str;
var = m_pRecordset->GetCollect("CouScore");
m_CouScore = var.iVal;
var = m_pRecordset->GetCollect("CouScore");
m_CouScore = var.iVal;
UpdateData(false);
break;
}
else
{
m_pRecordset->MoveNext();
}
}
if(m_pRecordset->adoEOF)
{
MessageBox("没有这个课程号!");
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
//////////////////////////
//
//执行添加功能
//
/////////////////////////
void CDialogCOU::Add()
{
//定义变量
_variant_t var;
CString str;
//更新控件变量的值
UpdateData(true);
//判断要添加的课程号是否存在
if(m_CouID != 0 && !m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("CouID");
if(m_CouID == var.iVal)
{
AfxMessageBox("已经存在这个课程号!");
break;
}
m_pRecordset->MoveNext();
}
if(!m_pRecordset->adoEOF)
{
return;
}
}
//判断要添加的导师号是否存在
if(m_CouTea !=0)
{
m_pRecordset->Close();
OpenTEACHERS();
if(m_pRecordset->BOF)
{
AfxMessageBox("导师表为空,需先建立导师表!");
m_pRecordset->Close();
OpenCOURSES();
return;
}
else
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("TeaID");
if(m_CouTea == var.iVal)
{
break;
}
m_pRecordset->MoveNext();
}
if(m_pRecordset->adoEOF)
{
AfxMessageBox("没有这个导师号!");
m_pRecordset->Close();
OpenCOURSES();
return;
}
else
{
m_pRecordset->Close();
OpenCOURSES();
}
}
}
if(m_CouID == 0 || m_CouTea == 0)
{
AfxMessageBox("课程号和导师号都不能为空!");
return;
}
else
{
try
{
//
// 写入各字段值
//
m_pRecordset->AddNew();
//写入CouID字段
var.iVal = m_CouID;
m_pRecordset->PutCollect("CouID", var.iVal);
//写入CouName字段
m_pRecordset->PutCollect("CouName", _variant_t(m_CouName));
//写入CouKind字段
m_pRecordset->PutCollect("CouKind", _variant_t(m_CouKind));
//写入CouScore字段
var.iVal = m_CouScore;
m_pRecordset->PutCollect("CouScore", var.iVal);
//写入CouTea字段
var.iVal = m_CouTea;
m_pRecordset->PutCollect("CouTea", var.iVal);
//更新SQL数据库
m_pRecordset->Update();
//当前记录移动到最后
m_pRecordset->MoveLast();
AfxMessageBox("插入成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
}
//////////////////////////
//
//执行删除功能
//
/////////////////////////
void CDialogCOU::Delete()
{
//定义变量
_variant_t var;
CString str;
//判断当前是否有记录
if(m_CouID == 0)
{
MessageBox(" 没有记录!");
return;
}
//判断是否作为外键被使用
str.Format("select * from CHOICES where CouID = %d",m_CouID);
m_pRecordsetCHO->Open(str.AllocSysString(),
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(!m_pRecordsetCHO->BOF)
{
AfxMessageBox("此数据正在被其他表使用,不能删除!");
m_pRecordsetCHO->Close();
return;
}
else
{
m_pRecordsetCHO->Close();
}
try
{
//
// 删除当前行记录
//
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
m_pRecordset->MoveFirst();
//判断删除后表内数据是否为空
if(m_pRecordset->BOF)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -