?? changeview.cpp
字號(hào):
// ChangeView.cpp : implementation file
//
#include "stdafx.h"
#include "zhaoliang.h"
#include "ChangeView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase db;
/////////////////////////////////////////////////////////////////////////////
// CChangeView
IMPLEMENT_DYNCREATE(CChangeView, CFormView)
CChangeView::CChangeView()
: CFormView(CChangeView::IDD)
{
//{{AFX_DATA_INIT(CChangeView)
m_strID = _T("");
m_Time = CTime::GetCurrentTime();
m_strName = _T("");
m_strDescription = _T("");
//}}AFX_DATA_INIT
}
CChangeView::~CChangeView()
{
}
void CChangeView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChangeView)
DDX_Control(pDX, IDC_CHANGE_CMB_JOB, m_cJob);
DDX_Control(pDX, IDC_CHANGE_CMB_DEPARTMENT, m_cDepartment);
DDX_Text(pDX, IDC_CHANGE_EDT_ID, m_strID);
DDX_DateTimeCtrl(pDX, IDC_CHANGE_DATETIMEPICKER, m_Time);
DDX_Text(pDX, IDC_CHANGE_EDT_NAME, m_strName);
DDX_Text(pDX, IDC_CHANGE_EDT_DESCRIPTION, m_strDescription);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChangeView, CFormView)
//{{AFX_MSG_MAP(CChangeView)
ON_WM_DESTROY()
ON_EN_CHANGE(IDC_CHANGE_EDT_ID, OnChangeChangeEdtId)
ON_BN_CLICKED(IDC_CHANGE_BTN_CHANGE, OnChangeBtnChange)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChangeView diagnostics
#ifdef _DEBUG
void CChangeView::AssertValid() const
{
CFormView::AssertValid();
}
void CChangeView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CChangeView message handlers
void CChangeView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 使框架窗口大小與視圖匹配
GetParentFrame()->RecalcLayout();
ResizeParentToFit(FALSE);
GetParentFrame()->SetWindowText("人事變動(dòng)"); // 設(shè)置標(biāo)題
CRecordset rs(&db); // 數(shù)據(jù)集
CString str;
// 設(shè)置部門下拉框所取的值為DEPARTMENT表中的值
rs.Open(CRecordset::forwardOnly, "select NAME from DEPARTMENT");
while(!rs.IsEOF())
{
rs.GetFieldValue("NAME", str);
m_cDepartment.AddString(str);
rs.MoveNext();
}
rs.Close();
// 設(shè)置職務(wù)下拉框所取的值為JOB表中的值
rs.Open(CRecordset::forwardOnly, "select DESCRIPTION from JOB");
while(!rs.IsEOF())
{
rs.GetFieldValue("DESCRIPTION", str);
m_cJob.AddString(str);
rs.MoveNext();
}
rs.Close();
m_brush.CreateSolidBrush(RGB(0,150,200));
Init(); // 調(diào)用初始化函數(shù)
}
void CChangeView::OnDestroy()
{
CFormView::OnDestroy();
((CMainFrame*)AfxGetMainWnd())->m_bItemChange=TRUE; // 開放"人事變動(dòng)"功能"
((CMainFrame*)AfxGetMainWnd())->m_pChange=NULL; // 清空窗口指針
}
void CChangeView::Init()
{
// 初始化成員變量
m_strID = _T("");
m_Time = CTime::GetCurrentTime();
m_strName = _T("");
m_strDescription = _T("");
m_cDepartment.SetCurSel(-1);
m_cJob.SetCurSel(-1);
// 設(shè)置缺省變動(dòng)情況為職務(wù)變更
((CButton*)GetDlgItem(IDC_CHANGE_RADIO_JOB))->SetCheck(TRUE);
UpdateData(FALSE); // 更新界面數(shù)據(jù)
}
void CChangeView::OnChangeChangeEdtId()
{
UpdateData(); // 更新數(shù)據(jù)
CRecordset rs(&db);
CString strDep,strJob;
rs.Open(CRecordset::forwardOnly,
"select NAME,DEPARTMENT,JOB from PERSON where ID='" + m_strID + "'");
if(!rs.IsEOF()) // 非空則獲取員工信息
{
rs.GetFieldValue("NAME", m_strName); // 名字
rs.GetFieldValue("DEPARTMENT", strDep); // 部門編號(hào)
rs.GetFieldValue("JOB", strJob); // 職務(wù)代碼
rs.Close();
if(!strDep.IsEmpty())
{
rs.Open(CRecordset::forwardOnly,
"select NAME from DEPARTMENT where ID='" + strDep + "'");
rs.GetFieldValue("NAME", strDep); // 部門名稱
rs.Close();
}
if(!strJob.IsEmpty())
{
rs.Open(CRecordset::forwardOnly,
"select DESCRIPTION from JOB where CODE='" + strJob + "'");
rs.GetFieldValue("DESCRIPTION", strJob); // 職務(wù)名稱
rs.Close();
}
UpdateData(FALSE); // 更新數(shù)據(jù)
m_cDepartment.SelectString(-1,strDep);
m_cJob.SelectString(-1,strJob);
m_bExist=TRUE; // 該員工存在
}
else // 否則清空員工信息
{
rs.Close();
m_strName.Empty();
m_cDepartment.SetCurSel(-1);
m_cJob.SetCurSel(-1);
UpdateData(FALSE); // 更新數(shù)據(jù)
m_bExist=FALSE; // 該員工不存在
}
}
void CChangeView::OnChangeBtnChange()
{
CRecordset rs(&db);
CString str,strSQL;
int counter;
if(!m_bExist) // 該員工號(hào)不存在
{
MessageBox("請(qǐng)確認(rèn)員工號(hào)!","輸入錯(cuò)誤");
return;
}
UpdateData(); // 更新數(shù)據(jù)
// 獲取人事變動(dòng)記錄號(hào)并累加
rs.Open(CRecordset::forwardOnly,
"select COUNTER_VALUE from COUNTER where ID='C'");
rs.GetFieldValue("COUNTER_VALUE", str);
sscanf(str, "%d", &counter); // 獲取計(jì)數(shù)值
rs.Close(); // 關(guān)閉數(shù)據(jù)集
counter++; // 計(jì)數(shù)器加1
str.Format("%d", counter); // 轉(zhuǎn)換為字符串
strSQL="update COUNTER set COUNTER_VALUE=" + str + " where ID='C'"; // 設(shè)置SQL語句
db.ExecuteSQL(strSQL); // 執(zhí)行
// 更新員工信息
CString strDepID,strJobID,strState,strChange;
// 得到部門ID
m_cDepartment.GetWindowText(str);
rs.Open(CRecordset::forwardOnly,
"select ID from DEPARTMENT where NAME='" + str +"'");
rs.GetFieldValue("ID", strDepID);
rs.Close();
// 得到職務(wù)代碼
m_cJob.GetWindowText(str);
rs.Open(CRecordset::forwardOnly,
"select CODE from JOB where DESCRIPTION='" + str +"'");
rs.GetFieldValue("CODE", strJobID);
rs.Close();
if(((CButton*)GetDlgItem(IDC_CHANGE_RADIO_FIRE))->GetCheck())
{
strState="F";
strChange="2"; // 辭退
}
else
{
strState="T";
strChange="1"; // 職務(wù)變動(dòng)
}
strSQL="update PERSON set STATE='" + strState + "',"
+ "DEPARTMENT='" + strDepID + "',"
+ "JOB='" + strJobID + "'";
db.ExecuteSQL(strSQL); // 執(zhí)行
// 追加人事變動(dòng)記錄
str.Format("%d",counter); // 計(jì)數(shù)值轉(zhuǎn)換為字符串
CString strNow=m_Time.Format("%Y-%m-%d %H:%M:%S");
// 寫SQL語句
strSQL="insert into zhaoliang(ID,PERSON,CHANGE,RECORD_TIME,DESCRIPTION)\
values("
+ str + ",'" // ID
+ m_strID + "','" // PERSON
+ strChange + "','" // CHANGE
+ strNow + "','" // RECORD_TIME
+ m_strDescription + "')"; // DESCRIPTION
db.ExecuteSQL(strSQL);
// 重新初始化窗口
Init();
}
HBRUSH CChangeView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = (HBRUSH)m_brush;
if(nCtlColor==CTLCOLOR_STATIC)
{ pDC->SetBkMode(TRANSPARENT);
return hbr;
}
if(nCtlColor==CTLCOLOR_EDIT)
{
return NULL;
}
return hbr;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -