?? searchview.cpp
字號:
// SearchView.cpp : implementation file
//
#include "stdafx.h"
#include "Personnel.h"
#include "SearchView.h"
#include "MainFrm.h"
#include "Crypt.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase db;
/////////////////////////////////////////////////////////////////////////////
// CSearchView
IMPLEMENT_DYNCREATE(CSearchView, CFormView)
CSearchView::CSearchView()
: CFormView(CSearchView::IDD)
{
//{{AFX_DATA_INIT(CSearchView)
m_strID = _T("");
m_strSpecialty = _T("");
m_strMemo = _T("");
m_strPasswd = _T("");
m_strName = _T("");
m_strBirthday = _T("");
m_strAddress = _T("");
m_strTel = _T("");
m_strEmail = _T("");
//}}AFX_DATA_INIT
}
CSearchView::~CSearchView()
{
}
void CSearchView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSearchView)
DDX_Control(pDX, IDC_SEARCH_LIST, m_cList);
DDX_Control(pDX, IDC_SEARCH_CMB_JOB, m_cJob);
DDX_Control(pDX, IDC_SEARCH_CMB_EDULEVEL, m_cEdulevel);
DDX_Control(pDX, IDC_SEARCH_CMB_DEPARTMENT, m_cDepartment);
DDX_Text(pDX, IDC_SEARCH_EDT_ID, m_strID);
DDX_Text(pDX, IDC_SEARCH_EDT_SPECIALTY, m_strSpecialty);
DDX_Text(pDX, IDC_SEARCH_EDT_MEMO, m_strMemo);
DDX_Text(pDX, IDC_SEARCH_EDT_PASSWD, m_strPasswd);
DDX_Text(pDX, IDC_SEARCH_EDT_NAME, m_strName);
DDX_Text(pDX, IDC_SEARCH_EDT_BIRTHDAY, m_strBirthday);
DDX_Text(pDX, IDC_SEARCH_EDT_ADDRESS, m_strAddress);
DDX_Text(pDX, IDC_SEARCH_EDT_TEL, m_strTel);
DDX_Text(pDX, IDC_SEARCH_EDT_EMAIL, m_strEmail);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSearchView, CFormView)
//{{AFX_MSG_MAP(CSearchView)
ON_WM_DESTROY()
ON_EN_CHANGE(IDC_SEARCH_EDT_ID, OnChangeSearchEdtId)
ON_BN_CLICKED(IDC_SEARCH_BTN_CHANGE, OnSearchBtnChange)
ON_BN_CLICKED(IDC_SEARCH_BTN_CHGPASSWD, OnSearchBtnChgpasswd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSearchView diagnostics
#ifdef _DEBUG
void CSearchView::AssertValid() const
{
CFormView::AssertValid();
}
void CSearchView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSearchView message handlers
void CSearchView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 給m_cList加入網格
DWORD style=m_cList.GetExtendedStyle();
m_cList.SetExtendedStyle(style|LVS_EX_GRIDLINES);
// 使框架窗口大小與視圖匹配
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();
// 設置受教育水平下拉框所取的值為EDU_LEVEL表中的值
rs.Open(CRecordset::forwardOnly, "select DESCRIPTION from EDU_LEVEL");
while(!rs.IsEOF())
{
rs.GetFieldValue("DESCRIPTION", str);
m_cEdulevel.AddString(str);
rs.MoveNext();
}
rs.Close();
// 添加List控件的列
m_cList.InsertColumn(0, "記錄編號", LVCFMT_LEFT, 100);
m_cList.InsertColumn(1, "記錄時間", LVCFMT_LEFT, 100);
m_cList.InsertColumn(2, "具體描述", LVCFMT_LEFT, 215);
Init(); // 調用初始化函數
}
void CSearchView::OnDestroy()
{
CFormView::OnDestroy();
((CMainFrame*)AfxGetMainWnd())->m_bItemSearch=TRUE; // 開放"查詢修改"功能"
((CMainFrame*)AfxGetMainWnd())->m_pSearch=NULL; // 清空窗口指針
}
void CSearchView::Init()
{
// 清空成員變量
m_strID = _T("");
m_strSpecialty = _T("");
m_strMemo = _T("");
m_strPasswd = _T("");
m_strName = _T("");
m_strBirthday = _T("");
m_strAddress = _T("");
m_strTel = _T("");
m_strEmail = _T("");
UpdateData(FALSE); // 更新界面數據
}
void CSearchView::OnChangeSearchEdtId()
{
UpdateData(); // 更新數據
m_cList.DeleteAllItems(); // 清空列表框
CRecordset rs(&db);
CString strDep,strJob,strEdulevel,strSex;
rs.Open(CRecordset::forwardOnly,
"select * from PERSON where ID='" + m_strID + "'");
if(!rs.IsEOF()) // 非空則獲取員工信息
{
rs.GetFieldValue("NAME", m_strName); // 名字
rs.GetFieldValue("DEPARTMENT", strDep); // 部門編號
rs.GetFieldValue("JOB", strJob); // 職務代碼
rs.GetFieldValue("EDU_LEVEL", strEdulevel); // 受教育水平
rs.GetFieldValue("SPECIALTY", m_strSpecialty); // 專業
rs.GetFieldValue("REMARK", m_strMemo); // 備注
rs.GetFieldValue("BIRTHDAY", m_strBirthday); // 生日
m_strBirthday=m_strBirthday.Left(10); // 取日期部分
rs.GetFieldValue("ADDRESS", m_strAddress); // 住址
rs.GetFieldValue("TEL", m_strTel); // 電話
rs.GetFieldValue("EMAIL", m_strEmail); // Email
rs.GetFieldValue("SEX", strSex); // 性別
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();
}
// 得到教育水平描述
if(!strEdulevel.IsEmpty())
{
rs.Open(CRecordset::forwardOnly,
"select DESCRIPTION from EDU_LEVEL where CODE='"
+ strEdulevel + "'");
rs.GetFieldValue("DESCRIPTION", strEdulevel); // 教育水平描述
rs.Close();
}
// 設置性別選框
if(strSex=="M") ((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->SetCheck(TRUE);
else ((CButton*)GetDlgItem(IDC_SEARCH_RADIO_FEMALE))
->SetCheck(TRUE);
UpdateData(FALSE); // 更新數據
m_cDepartment.SelectString(-1,strDep);
m_cJob.SelectString(-1,strJob);
m_cEdulevel.SelectString(-1,strEdulevel);
// 更新列表框數據
int i=0;
CString str1,str2,str3;
rs.Open(CRecordset::forwardOnly,
"select ID,RECORD_TIME,DESCRIPTION from PERSONNEL\
where PERSON='" + m_strID + "'");
while(!rs.IsEOF())
{
// 得到數據
rs.GetFieldValue("ID", str1);
rs.GetFieldValue("RECORD_TIME", str2);
str2=str2.Left(10); // 只取日期
rs.GetFieldValue("DESCRIPTION", str3);
// 加入List
m_cList.InsertItem(i,"");
m_cList.SetItemText(i, 0, str1);
m_cList.SetItemText(i, 1, str2);
m_cList.SetItemText(i, 2, str3);
i++;
rs.MoveNext(); // 移動記錄
}
rs.Close();
m_bExist=TRUE; // 該員工存在
}
else // 否則清空員工信息
{
rs.Close();
m_strSpecialty = _T("");
m_strMemo = _T("");
m_strPasswd = _T("");
m_strName = _T("");
m_strBirthday = _T("");
m_strAddress = _T("");
m_strTel = _T("");
m_strEmail = _T("");
m_cDepartment.SetCurSel(-1);
m_cJob.SetCurSel(-1);
m_cEdulevel.SetCurSel(-1);
UpdateData(FALSE); // 更新數據
((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->SetCheck(FALSE);
((CButton*)GetDlgItem(IDC_SEARCH_RADIO_FEMALE))->SetCheck(FALSE);
m_bExist=FALSE; // 該員工不存在
}
}
void CSearchView::OnSearchBtnChgpasswd()
{
if(!m_bExist) // 該員工號不存在
{
AfxMessageBox("該員工號不存在");
return;
}
UpdateData(); // 更新數據
CString str,strSQL;
str=CCrypt::Encrypt(m_strPasswd, 123); // 加密
strSQL="update PERSON set PASSWD='" + str + "'"; // 寫SQL語句
db.ExecuteSQL(strSQL); // 執行
}
void CSearchView::OnSearchBtnChange()
{
if(!m_bExist) // 該員工號不存在
{
AfxMessageBox("該員工號不存在");
return;
}
UpdateData(); // 更新數據
// 修改員工個人信息記錄
CString str,strSex,strDepID,strJobID,strEduID,strSQL;
CRecordset rs(&db);
// 判斷性別
if(((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->GetCheck()) strSex="M";
else strSex="F";
// 得到部門ID
m_cDepartment.GetWindowText(str);
if(!str.IsEmpty()) // 不空
{
rs.Open(CRecordset::forwardOnly,
"select ID from DEPARTMENT where NAME='" + str +"'");
rs.GetFieldValue("ID", strDepID);
rs.Close();
}
// 得到職務代碼
m_cJob.GetWindowText(str);
if(!str.IsEmpty()) // 不空
{
rs.Open(CRecordset::forwardOnly,
"select CODE from JOB where DESCRIPTION='" + str +"'");
rs.GetFieldValue("CODE", strJobID);
rs.Close();
}
// 得到受教育水平代碼
m_cEdulevel.GetWindowText(str);
if(!str.IsEmpty()) // 不空
{
rs.Open(CRecordset::forwardOnly,
"select CODE from EDU_LEVEL where DESCRIPTION='" + str +"'");
rs.GetFieldValue("CODE", strEduID);
rs.Close();
}
// 寫SQL語句
strSQL="update PERSON set\
NAME='" + m_strName //NAME
+ "',SEX='" + strSex // SEX
+ "',BIRTHDAY='" + m_strBirthday // BIRTHDAY
+ "',DEPARTMENT='" + strDepID // DEPARTMENT
+ "',JOB='" + strJobID // JOB
+ "',EDU_LEVEL='" + strEduID // EDU_LEVEL
+ "',SPECIALTY='" + m_strSpecialty // SPECIALTY
+ "',ADDRESS='" + m_strAddress // ADDRESS
+ "',TEL='" + m_strTel // TEL
+ "',EMAIL='" + m_strEmail // EMAIL
+ "',REMARK='" + m_strMemo // REMARK
+ "' where ID='" + m_strID + "'"; // 條件
db.ExecuteSQL(strSQL); // 執行
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -