📄 basicinfodlg.cpp
字号:
// BasicInfoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MinistryPerson.h"
#include "BasicInfoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
BasicInfoDlg::BasicInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(BasicInfoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(BasicInfoDlg)
//}}AFX_DATA_INIT
}
void BasicInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(BasicInfoDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(BasicInfoDlg, CDialog)
//{{AFX_MSG_MAP(BasicInfoDlg)
ON_BN_CLICKED(IDC_BUTTON_BASIC_SAVE, OnButtonBasicSave)
ON_BN_CLICKED(IDC_BUTTON_BASIC_MODIFY, OnButtonBasicModify)
ON_EN_KILLFOCUS(IDC_EDIT_EMPLOYEE_IDCARD, OnKillfocusEditEmployeeIdcard)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// BasicInfoDlg message handlers
BOOL BasicInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if (!g_bQueryToShow)
{
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(FALSE);
IniAllTimePicker();
m_bSaveNotModify_Basic = TRUE;
}
else // 查询状态 调出“基本信息”时
{
GetBasicInfoFromDB();
CtrlStatus_Basic(FALSE);
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(TRUE);
m_bSaveNotModify_Basic = FALSE;
}
return TRUE;
}
/*********************************************************************
函数说明: 保存
函数参数:
*********************************************************************/
BOOL BasicInfoDlg::BasicSave(int nKeyID)
{
CADOOperation ADOdbo;
CString SQL;
SQL.Format("insert into Employee_BasicInfor_Table\
(employee_ID, employee_Name, employee_IDCard, employee_Sex, employee_Age, \
employee_Birthday, employee_Race, employee_NativePlace, employee_Marriage, employee_PolityVisage, \
employee_JoinTime, employee_JobPosition, employee_TechPost, employee_TechSpecial, employee_HighestDiploma, \
employee_GraduateSchool, employee_LanguageLevel, employee_ComputerLevel, employee_TECHANG, employee_FirstJobTime, \
employee_Address, employee_DocumentPlace, employee_HUKOUProperty, employee_HUKOUPlace, employee_Postalcode, \
employee_Telephone, employee_MobilePhone, employee_Email, employee_UrgencyLinkman, \
employee_UrgencyManTel, employee_Remark, employee_Accreditation) \
values (%d, '%s', '%s', '%s', '%s', \
'%s', '%s', '%s', '%s', '%s', \
'%s', '%s', '%s', '%s', '%s', \
'%s', '%s', '%s', '%s', '%s', \
'%s', '%s', '%s', '%s', '%s', \
'%s', '%s', '%s', '%s', \
'%s', '%s', '%s')",
nKeyID, m_B_strName, m_B_strIDCard, m_B_strSex, m_B_strAge,
m_B_strBirthday, m_B_strRace, m_B_strNative, m_B_strMarriage, m_B_strPolity,
m_B_strJT, m_B_strJobPos, m_B_strTechPost, m_B_strTechSpe, m_B_strHighestDip,
m_B_strGraSchool, m_B_strLanLevel, m_B_strComLevel, m_B_strTECHANG, m_B_strFirstJT,
m_B_strAdd, m_B_strDocPlace, m_B_strHUKOUPro, m_B_strHUKOUPlace, m_B_strPostalcode,
m_B_strTel, m_B_strMobile, m_B_stremail, m_B_strUrgLM,
m_B_strUrgLMTel, m_B_strRemark, m_B_strAccreditation);
ADOdbo.OpenRecordset(SQL);
ADOdbo.CloseRecorset();
SetDlgItemInt(IDC_EDIT_EMPLOYEE_ID, nKeyID);
CtrlStatus_Basic(FALSE);
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(TRUE);
MessageBox("员工 【基本信息】 录入成功!", "成功", MB_OK | MB_ICONEXCLAMATION);
g_In_nID = nKeyID;
g_In_strIDCard = m_B_strIDCard;
return TRUE;
}
/*********************************************************************
函数说明: [按钮] 保存
函数参数:
*********************************************************************/
void BasicInfoDlg::OnButtonBasicSave()
{
if (!CheckAllInfo_Basic())
{
return;
}
if (!m_bSaveNotModify_Basic) // 修改状态
{
if (g_bQueryToShow)
{
BasicModify(g_nEmployee_ID, g_strEmployee_IDCard);
}
else
{
BasicModify(g_In_nID, g_In_strIDCard);
}
}
else // 保存状态
{
CADOOperation ADOdbo;
int employeeID = 0;
ADOdbo.OpenTable("Employee_BasicInfor_Table");
if (ADOdbo.IsLastRow())
{
employeeID = 1; // 添加第一条员工编号
}
else
{
employeeID = (ADOdbo.GetMaxID() + 1); // 找目前记录集中员工编号最大的值,并自动增加
}
ADOdbo.CloseTable();
BasicSave(employeeID);
}
}
/*********************************************************************
函数说明: 修改按钮
函数参数:
*********************************************************************/
void BasicInfoDlg::OnButtonBasicModify()
{
m_bSaveNotModify_Basic = FALSE;
CtrlStatus_Basic(TRUE);
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(FALSE);
}
/*********************************************************************
函数说明: 修改
函数参数:
*********************************************************************/
BOOL BasicInfoDlg::BasicModify(int nKeyID, CString strKeyIDCard)
{
CADOOperation ADOdbo;
CString SQL;
SQL.Format("update Employee_BasicInfor_Table \
set employee_Name = '%s', employee_IDCard = '%s', employee_Sex = '%s', employee_Age = '%s', \
employee_Birthday = '%s', employee_Race = '%s', employee_NativePlace = '%s', employee_Marriage = '%s', employee_PolityVisage = '%s', \
employee_JoinTime = '%s', employee_JobPosition = '%s', employee_TechPost = '%s', employee_TechSpecial = '%s', employee_HighestDiploma = '%s', \
employee_GraduateSchool = '%s', employee_LanguageLevel = '%s', employee_ComputerLevel = '%s', employee_TECHANG = '%s', employee_FirstJobTime = '%s', \
employee_Address = '%s', employee_DocumentPlace = '%s', employee_HUKOUProperty = '%s', employee_HUKOUPlace = '%s', employee_Postalcode = '%s', \
employee_Telephone = '%s', employee_MobilePhone = '%s', employee_Email = '%s', employee_UrgencyLinkman = '%s', \
employee_UrgencyManTel = '%s', employee_Remark = '%s', employee_Accreditation = '%s' \
where employee_ID = %d AND employee_IDCard = '%s'",
m_B_strName, m_B_strIDCard, m_B_strSex, m_B_strAge,
m_B_strBirthday, m_B_strRace, m_B_strNative, m_B_strMarriage, m_B_strPolity,
m_B_strJT, m_B_strJobPos, m_B_strTechPost, m_B_strTechSpe, m_B_strHighestDip,
m_B_strGraSchool, m_B_strLanLevel, m_B_strComLevel, m_B_strTECHANG, m_B_strFirstJT,
m_B_strAdd, m_B_strDocPlace, m_B_strHUKOUPro, m_B_strHUKOUPlace, m_B_strPostalcode,
m_B_strTel, m_B_strMobile, m_B_stremail, m_B_strUrgLM,
m_B_strUrgLMTel, m_B_strRemark, m_B_strAccreditation,
nKeyID, strKeyIDCard);
ADOdbo.OpenRecordset(SQL);
ADOdbo.CloseRecorset();
CtrlStatus_Basic(FALSE);
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(TRUE);
MessageBox("员工 【基本信息】 修改成功!", "成功", MB_OK | MB_ICONEXCLAMATION);
return TRUE;
}
/*********************************************************************
函数说明: 初始化时间显示
函数参数:
*********************************************************************/
void BasicInfoDlg::IniAllTimePicker()
{
SYSTEMTIME sysTime = {0};
sysTime.wYear = 1900;
sysTime.wMonth = 1;
sysTime.wDay = 1;
((CDateTimeCtrl*)GetDlgItem(IDC_DTP_EMPLOYEE_BIRTHDAY))->SetTime(&sysTime);
((CDateTimeCtrl*)GetDlgItem(IDC_DTP_EMPLOYEE_FIRSTJOBTIME))->SetTime(&sysTime);
((CDateTimeCtrl*)GetDlgItem(IDC_DTP_EMPLOYEE_JOINTIME))->SetTime(&sysTime);
}
/*********************************************************************
函数说明: 显示其他基本信息
函数参数: nID 员工编号
*********************************************************************/
void BasicInfoDlg::GetBasicInfoFromDB()
{
CADOOperation ADOdbo;
CString SQL;
CString strFields[] = {""};
CString strFieldsValue[32] = {""}; // 基本信息所有字段有32个
int nFieldsCount = 32;
SQL.Format("select * from Employee_BasicInfor_Table \
where employee_ID = %d AND employee_IDCard = '%s'",
g_nEmployee_ID, g_strEmployee_IDCard);
ADOdbo.OpenRecordset(SQL);
ADOdbo.GetFieldsValue(strFields, nFieldsCount, strFieldsValue, TRUE);
ADOdbo.CloseRecorset();
CFuncOper FunOper;
SetDlgItemInt(IDC_EDIT_EMPLOYEE_ID, atoi(strFieldsValue[0]));
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_NAME, strFieldsValue[1]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_IDCARD, strFieldsValue[2]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_SEX, strFieldsValue[3]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_AGE, strFieldsValue[4]);
FunOper.SetFieldValueToCTime(this, IDC_DTP_EMPLOYEE_BIRTHDAY, strFieldsValue[5]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_RACE, strFieldsValue[6]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_NATIVEPLACE, strFieldsValue[7]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_MARRIAGE, strFieldsValue[8]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_POLITYVISAGE, strFieldsValue[9]);
FunOper.SetFieldValueToCTime(this, IDC_DTP_EMPLOYEE_JOINTIME, strFieldsValue[10]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_JOBPOSITION, strFieldsValue[11]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_TECHPOST, strFieldsValue[12]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_TECHSPECIAL, strFieldsValue[13]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_HIGHESTDIPLOMA, strFieldsValue[14]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_GRADUATESCHOOL, strFieldsValue[15]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_LANGUAGELEVEL, strFieldsValue[16]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_COMPUTERLEVEL, strFieldsValue[17]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_TECHANG, strFieldsValue[18]);
FunOper.SetFieldValueToCTime(this, IDC_DTP_EMPLOYEE_FIRSTJOBTIME, strFieldsValue[19]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_ADDRESS, strFieldsValue[20]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_DOCUMENTPLACE, strFieldsValue[21]);
FunOper.SetFieldValueToCCombox(this, IDC_COMBO_EMPLOYEE_HUKOUPROPERTY, strFieldsValue[22]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_HUKOUPLACE, strFieldsValue[23]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_POSTALCODE, strFieldsValue[24]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_TELEPHONE, strFieldsValue[25]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_MOBILEPHONE, strFieldsValue[26]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_EMAIL, strFieldsValue[27]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_URGENCYLINKMAN, strFieldsValue[28]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_URGENCYMANTEL, strFieldsValue[29]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_REMARK, strFieldsValue[30]);
FunOper.SetFieldValueToCEdit(this, IDC_EDIT_EMPLOYEE_ACCREDITATION, strFieldsValue[31]);
}
/*********************************************************************
函数说明: 使内容可以编辑
函数参数:
*********************************************************************/
void BasicInfoDlg::CtrlStatus_Basic(BOOL bStatus)
{
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_NAME))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_IDCARD))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_RACE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_NATIVEPLACE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_JOBPOSITION))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_TECHSPECIAL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_GRADUATESCHOOL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_LANGUAGELEVEL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_COMPUTERLEVEL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_TECHANG))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_ADDRESS))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_DOCUMENTPLACE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_HUKOUPLACE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_POSTALCODE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_TELEPHONE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_MOBILEPHONE))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_EMAIL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_URGENCYLINKMAN))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_URGENCYMANTEL))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_REMARK))->EnableWindow(bStatus);
((CEdit*)GetDlgItem(IDC_EDIT_EMPLOYEE_ACCREDITATION))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_SEX))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_MARRIAGE))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_POLITYVISAGE))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_TECHPOST))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_HIGHESTDIPLOMA))->EnableWindow(bStatus);
((CComboBox*)GetDlgItem(IDC_COMBO_EMPLOYEE_HUKOUPROPERTY))->EnableWindow(bStatus);
((CDateTimeCtrl*)GetDlgItem(IDC_DTP_EMPLOYEE_JOINTIME))->EnableWindow(bStatus);
((CDateTimeCtrl*)GetDlgItem(IDC_DTP_EMPLOYEE_FIRSTJOBTIME))->EnableWindow(bStatus);
}
/*********************************************************************
函数说明: 身份证编辑框失去焦点后的处理
函数参数:
*********************************************************************/
void BasicInfoDlg::OnKillfocusEditEmployeeIdcard()
{
CADOOperation ADOdbo;
CString SQL;
CString strNewIDCard;
CString strGetInfo[2];
strGetInfo[0] = "TRUE";
strGetInfo[1] = "NOID";
CString strFields[2] = {"employee_IDCard", "employee_ID"};
GetDlgItemText(IDC_EDIT_EMPLOYEE_IDCARD, strNewIDCard);
if (!CheckIDCard(strNewIDCard))
{
GetDlgItem(IDC_EDIT_EMPLOYEE_IDCARD)->SetFocus();
return;
}
else
{
SQL.Format("select employee_IDCard , employee_ID from Employee_BasicInfor_Table \
where employee_IDCard = '%s'", strNewIDCard);
ADOdbo.OpenRecordset(SQL);
ADOdbo.GetFieldsValue(strFields, 2, strGetInfo, FALSE);
ADOdbo.CloseRecorset();
if (!m_bSaveNotModify_Basic)
{
if (((atoi(strGetInfo[1])) == g_nEmployee_ID) || (strGetInfo[1] == "NOID"))
{
return;
}
else
{
MessageBox(" 您输入的【身份证号码】已存在! ", "错误", MB_OK | MB_ICONERROR);
GetDlgItem(IDC_EDIT_EMPLOYEE_IDCARD)->SetFocus();
return;
}
}
else
{
if (strGetInfo[0] != "TRUE")
{
MessageBox(" 您输入的【身份证号码】已存在! ", "错误", MB_OK | MB_ICONERROR);
GetDlgItem(IDC_EDIT_EMPLOYEE_IDCARD)->SetFocus();
return;
}
}
}
}
/*********************************************************************
函数说明: 身份证合法性
函数参数:
*********************************************************************/
BOOL BasicInfoDlg::CheckIDCard(CString strIDCard)
{
SYSTEMTIME sysTime = {0};
GetSystemTime(&sysTime);
int nST_Year = sysTime.wYear;
if (strIDCard.GetLength() == 18) // 18位身份证
{
int num = 0;
char ch;
for (int i = 0; i < 17; i++)
{
ch = strIDCard.GetAt(i); // 获取输入的第一位数
if (ch > 47 && ch < 58) // 如果是数字
{
num++;
}
}
if (i == 17)
{
ch = strIDCard.GetAt(i); // 获取第 18 位
if ((ch > 47 && ch < 58) || (ch == 88 || ch == 120)) // 如果是数字或者是X
{
num++;
}
}
if (num != 18)
{
MessageBox("输入的【身份证号码】无效", "无效", MB_OK | MB_ICONERROR);
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -