⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicinfodlg.cpp

📁 VC++和ACCESS使用ADO连接
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -