?? changeview.cpp
字號:
// ChangeView.cpp : implementation file
//
#include "stdafx.h"
#include "Personnel.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)
//}}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("人事變動"); // 設置標題
CRecordset rs(&db); // 數據集
CString str;
// 設置部門下拉框所取的值為DEPARTMENT表中的值
rs.Open(CRecordset::forwardOnly, "select NAME from DEPARTMENT");
while(!rs.IsEOF())
{
rs.GetFieldValue("NAME", str);
m_cDepartment.AddString(str);
rs.MoveNext();
}
rs.Close();
// 設置職務下拉框所取的值為JOB表中的值
rs.Open(CRecordset::forwardOnly, "select DESCRIPTION from JOB");
while(!rs.IsEOF())
{
rs.GetFieldValue("DESCRIPTION", str);
m_cJob.AddString(str);
rs.MoveNext();
}
rs.Close();
Init(); // 調用初始化函數
}
void CChangeView::OnDestroy()
{
CFormView::OnDestroy();
((CMainFrame*)AfxGetMainWnd())->m_bItemChange=TRUE; // 開放"人事變動"功能"
((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);
// 設置缺省變動情況為職務變更
((CButton*)GetDlgItem(IDC_CHANGE_RADIO_JOB))->SetCheck(TRUE);
UpdateData(FALSE); // 更新界面數據
}
void CChangeView::OnChangeChangeEdtId()
{
UpdateData(); // 更新數據
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); // 部門編號
rs.GetFieldValue("JOB", strJob); // 職務代碼
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); // 職務名稱
rs.Close();
}
UpdateData(FALSE); // 更新數據
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); // 更新數據
m_bExist=FALSE; // 該員工不存在
}
}
void CChangeView::OnChangeBtnChange()
{
CRecordset rs(&db);
CString str,strSQL;
int counter;
if(!m_bExist) // 該員工號不存在
{
MessageBox("請確認員工號!","輸入錯誤");
return;
}
UpdateData(); // 更新數據
// 獲取人事變動記錄號并累加
rs.Open(CRecordset::forwardOnly,
"select COUNTER_VALUE from COUNTER where ID='C'");
rs.GetFieldValue("COUNTER_VALUE", str);
sscanf(str, "%d", &counter); // 獲取計數值
rs.Close(); // 關閉數據集
counter++; // 計數器加1
str.Format("%d", counter); // 轉換為字符串
strSQL="update COUNTER set COUNTER_VALUE=" + str + " where ID='C'"; // 設置SQL語句
db.ExecuteSQL(strSQL); // 執行
// 更新員工信息
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();
// 得到職務代碼
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"; // 職務變動
}
strSQL="update PERSON set STATE='" + strState + "',"
+ "DEPARTMENT='" + strDepID + "',"
+ "JOB='" + strJobID + "'";
db.ExecuteSQL(strSQL); // 執行
// 追加人事變動記錄
str.Format("%d",counter); // 計數值轉換為字符串
CString strNow=m_Time.Format("%Y-%m-%d %H:%M:%S");
// 寫SQL語句
strSQL="insert into PERSONNEL(ID,PERSON,CHANGE,RECORD_TIME,DESCRIPTION)\
values("
+ str + ",'" // ID
+ m_strID + "','" // PERSON
+ strChange + "','" // CHANGE
+ strNow + "','" // RECORD_TIME
+ m_strDescription + "')"; // DESCRIPTION
db.ExecuteSQL(strSQL);
// 重新初始化窗口
Init();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -