?? pagecou.cpp
字號:
// PageCou.cpp : implementation file
//
#include "stdafx.h"
#include "UGMS.h"
#include "PageCou.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPageCou dialog
CPageCou::CPageCou(CWnd* pParent /*=NULL*/)
: CDialog(CPageCou::IDD, pParent)
{
//{{AFX_DATA_INIT(CPageCou)
m_CKind = -1;
m_CID = 0;
m_CName = _T("");
m_CScore = 0;
//}}AFX_DATA_INIT
}
void CPageCou::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPageCou)
DDX_Control(pDX, IDC_EDIT_COUID, m_ctlCID);
DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
DDX_Control(pDX, IDC_BUTTON_PREVIOUS, 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_btnDel);
DDX_Control(pDX, IDC_BUTTON_ADD, m_btnAdd);
DDX_CBIndex(pDX, IDC_COMBO_KIND, m_CKind);
DDX_Text(pDX, IDC_EDIT_COUID, m_CID);
DDX_Text(pDX, IDC_EDIT_COUNAME, m_CName);
DDX_Text(pDX, IDC_EDIT_COUSCORE, m_CScore);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPageCou, CDialog)
//{{AFX_MSG_MAP(CPageCou)
ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
ON_BN_CLICKED(IDC_BUTTON_PREVIOUS, OnButtonPrevious)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
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_OK, OnButtonOk)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPageCou message handlers
enum enumCOU
{
NONE, //對應沒有功能
SEARCH, //對應查找功能
ADD, //對應添加功能
DEL, //對應刪除功能
MODIFY, //對應修改功能
};
//定義枚舉變量FOUNCTION
enumCOU FOUNCTION = NONE;
BOOL CPageCou::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: ADD extra initialization here
//創建記錄集對象
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordsetCHO.CreateInstance(__uuidof(Recordset));
//打開COURSES表
OpenCOURSES();
_variant_t var;
CString str;
try
{
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
//如果表內數據為空,設置控件屬性并初始對話框
else
{
AfxMessageBox("表內數據為空");
m_btnQuery.EnableWindow(FALSE);
m_btnDel.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_CID
var = m_pRecordset->GetCollect("CID");
if(var.vt != VT_NULL)
m_CID = var.iVal ;
//更新編輯框m_CName
var = m_pRecordset->GetCollect("CName");
str = (LPCSTR)_bstr_t(var);
m_CName = str;
//更新組合框m_CScore
var = m_pRecordset->GetCollect("CScore");
m_CScore = var.iVal;
//更新組合框m_CKind
var = m_pRecordset->GetCollect("CKind");
m_CKind = var.iVal;
//更新所有控件顯示
UpdateData(false);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
return TRUE;
}
void CPageCou::OpenCOURSES()
{
//在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
//因為它有時會經常出現一些想不到的錯誤
try
{
//從SQL數據庫中打開STUDENTS表
m_pRecordset->Open("SELECT * FROM COURSES",
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
//////////////////////////
//
//執行查找功能
//
/////////////////////////
void CPageCou::Query()
{
//定義變量
_variant_t var;
CString str;
//更新控件變量的值
UpdateData(true);
try
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("CID");
if(m_CID == var.iVal)
{
var = m_pRecordset->GetCollect("CID");
if(var.vt != VT_NULL)
{
m_CID = var.iVal;
}
var = m_pRecordset->GetCollect("CName");
str = (LPCSTR)_bstr_t(var);
m_CName = str;
var = m_pRecordset->GetCollect("CScore");
if(var.vt != VT_NULL)
{
m_CScore = var.iVal;
}
var = m_pRecordset->GetCollect("CKind");
if(var.vt != VT_NULL)
{
m_CKind = var.iVal;
}
UpdateData(false);
break;
}
else
{
m_pRecordset->MoveNext();
}
}
if(m_pRecordset->adoEOF)
{
MessageBox("沒有這個課程號!");
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
//////////////////////////
//
//執行添加功能
//
/////////////////////////
void CPageCou::Add()
{
//定義變量
_variant_t var;
CString str;
//更新控件變量的值
UpdateData(true);
//判斷要添加的課程號是否存在
if(m_CID != 0 && !m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("CID");
if(m_CID == var.iVal)
{
AfxMessageBox("已經存在這個課程號!");
break;
}
m_pRecordset->MoveNext();
}
if(!m_pRecordset->adoEOF)
{
return;
}
}
if(m_CID == 0 )
{
AfxMessageBox("課程號信息不能為空!");
return;
}
else
{
try
{
//
// 寫入各字段值
//
m_pRecordset->AddNew();
//寫入CID字段
var.iVal = m_CID;
m_pRecordset->PutCollect("CID", var.iVal);
//寫入CName字段
m_pRecordset->PutCollect("CName", _variant_t(m_CName));
//寫入CScore字段
var.iVal=m_CScore;
m_pRecordset->PutCollect("CScore", var.iVal);
//寫入CKind字段
var.iVal=m_CKind;
m_pRecordset->PutCollect("CKind", var.iVal);
//更新SQL數據庫
m_pRecordset->Update();
//當前記錄移動到最后
m_pRecordset->MoveLast();
AfxMessageBox("插入成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
}
//////////////////////////
//
//執行刪除功能
//
/////////////////////////
void CPageCou::Delete()
{
//定義變量
_variant_t var;
CString str;
//判斷當前是否有記錄
if(m_CID == 0)
{
MessageBox(" 沒有記錄!");
return;
}
//判斷是否作為外鍵被使用
str.Format("select * from CHOICES where CID = %d",m_CID);
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)
{
AfxMessageBox("表內數據已經為空!");
m_btnQuery.EnableWindow(FALSE);
m_btnDel.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;
}
//顯示最后一條記錄
m_pRecordset->MoveLast();
var = m_pRecordset->GetCollect("CID");
if(var.vt != VT_NULL)
m_CID = var.iVal ;
var = m_pRecordset->GetCollect("CName");
str = (LPCSTR)_bstr_t(var);
m_CName = str;
var = m_pRecordset->GetCollect("CScore");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -