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

📄 crdbsdlg.cpp

📁 数据库客户信息管理系统,C++,SQL下完成.进入系统前需要身份验证、用户名、密码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH					
}

void CCRDBSDlg::OnBtnProfessionMod() 
{
	if(!UpdateData())
		return;
	if(m_strConfigProfession.IsEmpty())
		return;
	int nItem = m_listProfession.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的职位信息");
		return;
	}	
	//从列表框控件中获取选择的职位信息.
	int id = atoi(m_listProfession.GetItemText(nItem,0));	
	TRY{
		CRecordset rs(&m_db);
		CString sql;
        //更新新的职位信息记录. 
		sql.Format("update Profession_info_tab "
			"set Profession_name = '%s'  "
			"where Profession_id = %d",m_strConfigProfession,id);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		//修改界面上的值.
		m_listProfession.SetItemText(nItem,1,m_strConfigProfession);
		//更新职位信息组合框的数据
		RefreshProfComboData();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH			
}

void CCRDBSDlg::OnBtnProfessionDel() 
{
	int nItem = m_listProfession.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要删除的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的职位信息");
		return;
	}
	//从列表框控件中获取选择的职位信息.
	int id = atoi(m_listProfession.GetItemText(nItem,0));	
	TRY{
		CString deletedSql;
		//删除职位信息
		deletedSql.Format("delete from Profession_info_tab where Profession_id = %d",id);
		m_db.ExecuteSQL(deletedSql);
		//删除界面上的数据
		m_listProfession.DeleteItem(nItem);
		//更新职位信息数据
		RefreshProfComboData();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH				
}

void CCRDBSDlg::OnBtnVocationAdd() 
{
	if(!UpdateData())
		return;
	if(m_strConfigVocation.IsEmpty())
		return;
	TRY{
		CRecordset rs(&m_db);
		CString sql;
		//打开记录集,获取最大的行业ID值.
		rs.Open(CRecordset::dynaset, 
			"Select max(Vocation_id) from Vocation_info_tab");
		//设置新添加记录的行业ID值.
		int newID = 1;
		//如果数据库里面已经有记录了,则新的行业ID是行业ID最大值+1
		if(!rs.IsEOF()) {
			CDBVariant var;
			rs.GetFieldValue((short)0, var, SQL_C_SLONG);
			if (var.m_dwType != DBVT_NULL)	
				newID = var.m_iVal + 1;
		}
        //插入新的行业信息记录. 
		sql.Format("Insert into Vocation_info_tab(Vocation_id,"
			"Vocation_name) "
			"VALUES("
			"%d,'%s')",newID,m_strConfigVocation);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		//向界面中插入新的行业信息.
		InsertConfigItem(&m_listVocation,newID,m_strConfigVocation);
		//更新行业信息组合框的数据
		RefreshVocComboData();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH					
}

void CCRDBSDlg::OnBtnVocationMod() 
{
	if(!UpdateData())
		return;
	if(m_strConfigVocation.IsEmpty())
		return;
	int nItem = m_listVocation.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的行业信息");
		return;
	}	
	//从列表框控件中获取选择的行业信息.
	int id = atoi(m_listVocation.GetItemText(nItem,0));	
	TRY{
		CRecordset rs(&m_db);
		CString sql;
        //更新新的行业信息记录. 
		sql.Format("update Vocation_info_tab "
			"set Vocation_name = '%s'  "
			"where Vocation_id = %d",m_strConfigVocation,id);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		//修改界面上的值.
		m_listVocation.SetItemText(nItem,1,m_strConfigVocation);
		//更新行业信息组合框的数据
		RefreshVocComboData();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH			
}

void CCRDBSDlg::OnBtnVocationDel() 
{
	int nItem = m_listVocation.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要删除的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的行业信息");
		return;
	}
	//从列表框控件中获取选择的行业信息.
	int id = atoi(m_listVocation.GetItemText(nItem,0));	
	TRY{
		CString deletedSql;
		//删除行业信息
		deletedSql.Format("delete from Vocation_info_tab where Vocation_id = %d",id);
		m_db.ExecuteSQL(deletedSql);
		//删除界面上的数据
		m_listVocation.DeleteItem(nItem);
		//更新行业信息数据
		RefreshVocComboData();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH				
}

void CCRDBSDlg::OnBtnHrAdd() 
{
	if(!UpdateData())
		return;
	if(m_strName.IsEmpty()){
		AfxMessageBox("姓名不能够为空");
		return;
	}
	TRY{
		m_db.BeginTrans();
		CRecordset rs(&m_db);
		CString sql;
		//获取新的客户ID值.
//		rs.Open(CRecordset::dynaset, 
//			"Select seq_human_id.NEXTVAL from customer_info_tab");
		int newID = -1;
//		if(!rs.IsEOF()) {
//			CDBVariant var;
//			rs.GetFieldValue((short)0, var, SQL_C_SLONG);
//			if (var.m_dwType != DBVT_NULL)	
//				newID = var.m_iVal ;
//		}
        //插入新的客户信息记录. 
		sql.Format("execute add_customer_info_tab %d ,'%s','%s','%s','%s','%s',"
			"'%s','%s','%s','%s','%s','%s'", newID,m_strName,m_strSelectedArea,
			m_strSelectedProfession,m_strSelectedVocation,m_strCompany,m_strSelectedApproach,
			m_strEmail,m_strPhone,m_strMobile,m_strInterest,m_strMemo);
		TRACE(sql);
		//AfxMessageBox(sql);
		m_db.ExecuteSQL(sql);
		sql.Format("Select id from customer_info_tab where "
				   "name = '%s'",m_strName);
			rs.Open(CRecordset::dynaset,sql);
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					newID = var.m_iVal;
			}
	        rs.Close();
		//向界面中插入新的客户信息.
		InsertHRInfoItem(newID,m_strName,m_strSelectedArea,m_strSelectedProfession,m_strSelectedVocation,m_strCompany,m_strSelectedApproach,
			m_strEmail,m_strPhone,m_strMobile,m_strInterest,m_strMemo);
		m_db.CommitTrans();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);	
		m_db.Rollback();
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
		m_db.Rollback();
	}
	END_CATCH					
}

void CCRDBSDlg::OnBtnHrMod() 
{
	if(!UpdateData())
		return;
	if(m_strName.IsEmpty()){
		AfxMessageBox("姓名不能够为空");
		return;
	}
	int nItem = m_listHR.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的客户信息");
		return;
	}	
	//从列表框控件中获取选择的客户信息.
	int id = atoi(m_listHR.GetItemText(nItem,0));	
	TRY{
		m_db.BeginTrans();
		CRecordset rs(&m_db);
		CString sql;
        //插入新的客户信息记录. 
		sql.Format("execute add_customer_info_tab %d ,'%s','%s','%s','%s','%s',"
			"'%s','%s','%s','%s','%s','%s' " ,id,m_strName,m_strSelectedArea,
			m_strSelectedProfession,m_strSelectedVocation,m_strCompany,m_strSelectedApproach,
			m_strEmail,m_strPhone,m_strMobile,m_strInterest,m_strMemo);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		//向界面中插入新的客户信息.
		//设置该行的其他列的值.
		m_listHR.SetItemText(nItem,1,m_strName);
		m_listHR.SetItemText(nItem,2,m_strSelectedArea);	
		m_listHR.SetItemText(nItem,3,m_strSelectedProfession);	
		m_listHR.SetItemText(nItem,4,m_strSelectedVocation);	
		m_listHR.SetItemText(nItem,5,m_strCompany);	
		m_listHR.SetItemText(nItem,6,m_strSelectedApproach);
		m_listHR.SetItemText(nItem,7,m_strEmail);	
		m_listHR.SetItemText(nItem,8,m_strPhone);	
		m_listHR.SetItemText(nItem,9,m_strMobile);	
		m_listHR.SetItemText(nItem,10,m_strInterest);
		m_listHR.SetItemText(nItem,11,m_strMemo);
		m_db.CommitTrans();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);	
		m_db.Rollback();
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
		m_db.Rollback();
	}
	END_CATCH					
}

void CCRDBSDlg::OnBtnHrDel() 
{
	int nItem = m_listHR.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要删除的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的客户信息");
		return;
	}	
	//从列表框控件中获取选择的客户信息.
	int id = atoi(m_listHR.GetItemText(nItem,0));		
	TRY{
		m_db.BeginTrans();
		CString deletedSql;
		//删除客户信息
		deletedSql.Format("delete from customer_info_tab where id = %d",id);
		m_db.ExecuteSQL(deletedSql);
		//删除界面上的数据
		m_listHR.DeleteItem(nItem);
		m_db.CommitTrans();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
		m_db.Rollback();
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
		m_db.Rollback();
	}
	END_CATCH				
}

void CCRDBSDlg::OnBtnHrQuery() 
{
	if(!UpdateData())
		return;
	if(m_strName.IsEmpty()){
		AfxMessageBox("姓名不能够为空");
		return;
	}
	if(!m_db.IsOpen()){
		MessageBox("数据库未打开");
		return;
	}
	m_listHR.DeleteAllItems();
	TRY{
		CRecordset rs(&m_db);
		//打开所有的客户信息记录,根据提供的姓名模糊查询
		CString temp = "%";
		CString sql;
		sql.Format("select * from customer_info_tab where name like '%s%s%s'",
			temp,m_strName,temp);
		rs.Open(CRecordset::dynaset, sql);
		while (!rs.IsEOF()) {
			int id;
			CString name,area,profession,vocation,company;
			CString approach,email,phone,mobile,interest,memo;
			CDBVariant var;
			//获取客户信息ID字段值
			rs.GetFieldValue((short)0, var, SQL_C_SLONG);
			if (var.m_dwType != DBVT_NULL)	
				id = var.m_iVal;
			var.Clear();			
			//获取姓名字段值
			rs.GetFieldValue(1, name);
			//获取地区信息字段值
			rs.GetFieldValue(2, area);
			//获取职业字段值
			rs.GetFieldValue(3, profession);
			//获取行业字段值
			rs.GetFieldValue(4, vocation);
			//获取所在单位字段值
			rs.GetFieldValue(5, company);
			//获取结识途径字段值
			rs.GetFieldValue(6, approach);
			//获取email字段值
			rs.GetFieldValue(7, email);
			//获取固定电话字段值
			rs.GetFieldValue(8, phone);
			//获取移动电话字段值
			rs.GetFieldValue(9, mobile);
			//获取爱好字段值
			rs.GetFieldValue(10, interest);
			//获取备注字段值
			rs.GetFieldValue(11, memo);
			//向客户信息列表框控件中加入新的一行信息.
			InsertHRInfoItem(id,name,area,profession,vocation,company,approach,
				email,phone,mobile,interest,memo);
			rs.MoveNext();	
		}
		rs.Close();
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox ("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH   				
}

void CCRDBSDlg::OnBtnDetailQuery() 
{
	//创建详细信息查询对话框实列.
	CDetailQueryDlg dlg;
	//把数据库的指针传入对话框中.
	dlg.m_pDB = &m_db;
	//打开详细信息查询对话框.
	dlg.DoModal();		
}

void CCRDBSDlg::OnBtnStatQuery() 
{
	// TODO: Add your control notification handler code here
	//创建统计信息查询对话框实列.
	CStatQueryDlg dlg;
	//把数据库的指针传入对话框中.
	dlg.m_pDB = &m_db;
	//打开统计信息查询对话框.
	dlg.DoModal();			
}

void CCRDBSDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

void CCRDBSDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

void CCRDBSDlg::OnSysExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -