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

📄 crm.cpp

📁 自已做的简单的库存管理软件。包含员工信息管理等
💻 CPP
字号:
// CRM.cpp : 实现文件
//

#include "stdafx.h"
#include "CRM.h"
#include "AddCustomer.h"
#include "AddContact.h"

extern _ConnectionPtr pMyConnect;
CString str_customername = _T("");
// CCRM 对话框

IMPLEMENT_DYNAMIC(CCRM, CDialog)

CCRM::CCRM(CWnd* pParent /*=NULL*/)
	: CDialog(CCRM::IDD, pParent)
{

}

CCRM::~CCRM()
{
}

void CCRM::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST_CUSTOMER, m_list_customer);
	DDX_Control(pDX, IDC_LIST_CONTACT, m_list_contact);
}


BEGIN_MESSAGE_MAP(CCRM, CDialog)
	ON_NOTIFY(NM_CLICK, IDC_LIST_CUSTOMER, &CCRM::OnNMClickListCustomer)
	ON_BN_CLICKED(IDC_BUTTON_ADD, &CCRM::OnBnClickedButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_DEL, &CCRM::OnBnClickedButtonDel)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_CUSTOMER, &CCRM::OnNMDblclkListCustomer)
	ON_BN_CLICKED(IDC_BUTTON_BROWSH, &CCRM::OnBnClickedButtonBrowsh)
	ON_NOTIFY(NM_CLICK, IDC_LIST_CONTACT, &CCRM::OnNMClickListContact)
	ON_BN_CLICKED(IDC_BUTTON_ADDCONTACT, &CCRM::OnBnClickedButtonAddcontact)
	ON_BN_CLICKED(IDC_BUTTON_DELCONTACT, &CCRM::OnBnClickedButtonDelcontact)
END_MESSAGE_MAP()


// CCRM 消息处理程序

BOOL CCRM::OnInitDialog()
{
	CDialog::OnInitDialog();



	m_list_customer.SetExtendedStyle( LVS_EX_GRIDLINES );
	m_list_customer.InsertColumn(0,_T("序号"));         //插入列
	m_list_customer.InsertColumn(1,_T("客户名称"));
	m_list_customer.InsertColumn(2,_T("城市区域"));
	m_list_customer.InsertColumn(3,_T("区域负责人"));
	m_list_customer.InsertColumn(4,_T("网址"));
	m_list_customer.InsertColumn(5,_T("地址"));
	m_list_customer.InsertColumn(6,_T("备注"));

	CRect rect4;
	m_list_customer.GetClientRect(rect4);                    //获得当前客户区信息
	m_list_customer.SetColumnWidth(0,rect4.Width()/10);       //设置列的宽度。
	m_list_customer.SetColumnWidth(1,rect4.Width()/4);
	m_list_customer.SetColumnWidth(2,rect4.Width()/8);
	m_list_customer.SetColumnWidth(3,rect4.Width()/8);
	m_list_customer.SetColumnWidth(4,rect4.Width()/6);
	m_list_customer.SetColumnWidth(5,rect4.Width()/5);
	m_list_customer.SetColumnWidth(6,rect4.Width()/2);


	QueryDB();


	m_list_contact.SetExtendedStyle( LVS_EX_GRIDLINES );
	m_list_contact.InsertColumn(0,_T("序号"));         //插入列
	m_list_contact.InsertColumn(1,_T("客户名称"));
	m_list_contact.InsertColumn(2,_T("联系人"));
	m_list_contact.InsertColumn(3,_T("职位"));
	m_list_contact.InsertColumn(4,_T("性别"));
	m_list_contact.InsertColumn(5,_T("电话"));
	m_list_contact.InsertColumn(6,_T("手机"));
	m_list_contact.InsertColumn(7,_T("传真"));
	m_list_contact.InsertColumn(8,_T("邮箱"));
	m_list_contact.InsertColumn(9,_T("备注"));

	CRect rect5;
	m_list_contact.GetClientRect(rect5);                    //获得当前客户区信息
	m_list_contact.SetColumnWidth(0,rect5.Width()/10);       //设置列的宽度。
	m_list_contact.SetColumnWidth(1,rect5.Width()/4);
	m_list_contact.SetColumnWidth(2,rect5.Width()/8);
	m_list_contact.SetColumnWidth(3,rect5.Width()/8);
	m_list_contact.SetColumnWidth(4,rect5.Width()/10);
	m_list_contact.SetColumnWidth(5,rect5.Width()/6);
	m_list_contact.SetColumnWidth(6,rect5.Width()/6);
	m_list_contact.SetColumnWidth(7,rect5.Width()/6);
	m_list_contact.SetColumnWidth(8,rect5.Width()/5);
	m_list_contact.SetColumnWidth(9,rect5.Width()/2);

	
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CCRM::QueryDB()
{
		
	_RecordsetPtr m_pRs; 
	CString m_strSql; 


	int number = 0;
	CString strTemp;
	m_list_customer.DeleteAllItems();

	
	
	m_strSql.Format(_T("select a.NAME as RESULT1,b.CityName as RESULT2,c.NAME as RESULT3,a.WEBSITE as RESULT4,a.ADDR as RESULT5,a.NOTE as RESULT6 from CUSTOMER_TABLE a,S_City b,STAFF_TABLE c where(a.CITY_ID = b.CityID and a.STAFF_ID = c.STAFF_ID)"));

	m_pRs.CreateInstance( __uuidof(Recordset) ); 
	m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);  
			
	try
	{	
		if ( m_pRs->GetRecordCount() > 0 )
		{
			_variant_t   TheValue;
			_bstr_t tmp;
		
			m_pRs->MoveFirst(); 
			while(m_pRs->adoEOF==VARIANT_FALSE)	
			{
				//Retrieve column's value: 	 									
				strTemp.Format(_T("%d"),number+1);
				m_list_customer.InsertItem(number,strTemp);      //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT1"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 		
					m_list_customer.SetItemText(number,1,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT2"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 		
					m_list_customer.SetItemText(number,2,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT3"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 	
					m_list_customer.SetItemText(number,3,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT4"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 		
					m_list_customer.SetItemText(number,4,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT5"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 	
					m_list_customer.SetItemText(number,5,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT6"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 	
					m_list_customer.SetItemText(number,6,tmp);
				}


				number++;

				//Do something what you want to do:	......
				m_pRs->MoveNext(); 
			}		
		}
	}
	catch (_com_error &e)
	{
		::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
		
	}
	m_pRs->Close(); 

}

void CCRM::QueryContact()
{
	_RecordsetPtr m_pRs; 
	CString m_strSql; 


	int number = 0;
	CString strTemp;
	m_list_contact.DeleteAllItems();

	
	
	m_strSql.Format( _T("select a.NAME as RESULT1,b.CONTACT_NAME as RESULT2,b.POST as RESULT3,b.SEX as RESULT4,b.TEL as RESULT5,b.MOBILE as RESULT6 ,b.FAX as RESULT7,b.EMAIL as RESULT8,b.NOTE as RESULT9 from CUSTOMER_TABLE a,CUSTOMER_CONTACT_TABLE b where(b.CUSTOMER_SN = a.SN and a.NAME ='") 
		+str_customername+ _T("')") );

	m_pRs.CreateInstance( __uuidof(Recordset) ); 
	m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);  
			
	try
	{	
		if ( m_pRs->GetRecordCount() > 0 )
		{
			_variant_t   TheValue;
			_bstr_t tmp;
		
			m_pRs->MoveFirst(); 
			while(m_pRs->adoEOF==VARIANT_FALSE)	
			{
				//Retrieve column's value: 	 									
				strTemp.Format(_T("%d"),number+1);
				m_list_contact.InsertItem(number,strTemp);      //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT1"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,1,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT2"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,2,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT3"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,3,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT4"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,4,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT5"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,5,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT6"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,6,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT7"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,7,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT8"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,8,tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("RESULT9"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					m_list_contact.SetItemText(number,9,tmp);
				}


				number++;

				//Do something what you want to do:	......
				m_pRs->MoveNext(); 
			}
		}
	}
	catch (_com_error &e)
	{
		::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
		
	}
	m_pRs->Close();


}



void CCRM::OnNMClickListCustomer(NMHDR *pNMHDR, LRESULT *pResult)
{
	//LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	::SendMessage(m_list_customer.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
	*pResult = 0;
}

void CCRM::OnBnClickedButtonAdd()
{
	// TODO: 在此添加控件通知处理程序代码
	CAddCustomer addcustomer;
	INT_PTR nResponse = addcustomer.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: 在此处放置处理何时用“确定”来关闭
		//  对话框的代码
		QueryDB();
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用“取消”来关闭
		//  对话框的代码
	}
}

void CCRM::OnBnClickedButtonDel()
{
	// TODO: 在此添加控件通知处理程序代码
	UINT  uSelectedCount = m_list_customer.GetSelectedCount();
	int  nItem = -1;
	CString str_selcet;

	if (uSelectedCount < 1)
	{
		AfxMessageBox(_T("请选择一个客户进行删除!"));
		return;
	}
	else if( uSelectedCount > 1 )
	{
		AfxMessageBox(_T("不能删除多个客户!"));
		return;

			
	}
	else
	{
		nItem = m_list_customer.GetNextItem(nItem, LVNI_SELECTED);
		str_selcet =   m_list_customer.GetItemText(  nItem, 1 );

		CString m_strSql; 
		_variant_t RecordsAffected;
		_RecordsetPtr m_pRs; 
									

		m_strSql.Format(_T("delete from CUSTOMER_TABLE where(NAME='") +str_selcet+  _T("')"));
		bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
		if( !bSuccess )
		{
			AfxMessageBox(_T("删除客户失败,请重启系统!"));
			return;
		}
		AfxMessageBox(_T("删除客户成功!"));

		CString str_customersn;
		m_strSql.Format(_T("select SN from CUSTOMER_TABLE where ( NAME ='") +str_selcet+ _T("')") ); 
		m_pRs.CreateInstance( __uuidof(Recordset) ); 
		m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
	
		try
		{
			if ( m_pRs->GetRecordCount() > 0 )
			{
				_variant_t   TheValue;
				m_pRs->MoveFirst(); 
				while(m_pRs->adoEOF==VARIANT_FALSE)	
				{
					//Retrieve column's value: 	   
					TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;						
					if( TheValue.vt != VT_NULL )
					{
						_bstr_t s1=(_bstr_t)TheValue; 
						CString str_temp = s1;
						str_customersn = str_temp;
					}
				
					//Do something what you want to do:	......
					m_pRs->MoveNext(); 
				}		
			}
		}
		catch (_com_error &e)
		{
			::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
		}
		m_pRs->Close(); 


		m_strSql.Format(_T("delete from CUSTOMER_CONTACT_TABLE where(CUSTOMER_SN='") +str_customersn+  _T("')"));
		bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
		if( !bSuccess )
		{
			AfxMessageBox(_T("删除此客户的联系人失败,请重启系统!"));
			return;
		}
		AfxMessageBox(_T("删除此客户的联系人成功!"));
		QueryDB();
		QueryContact();
	}
}

void CCRM::OnNMDblclkListCustomer(NMHDR *pNMHDR, LRESULT *pResult)
{
	//LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	OnBnClickedButtonBrowsh();


	*pResult = 0;
}

void CCRM::OnBnClickedButtonBrowsh()
{
	// TODO: 在此添加控件通知处理程序代码
	UINT  uSelectedCount = m_list_customer.GetSelectedCount();
	int  nItem = -1;

	if (uSelectedCount < 1)
	{
		AfxMessageBox(_T("请选择一个客户进行浏览!"));
		return;
	}
	else if( uSelectedCount > 1 )
	{
		AfxMessageBox(_T("不能浏览多个客户信息!"));
		return;

			
	}
	else
	{
		nItem = m_list_customer.GetNextItem(nItem, LVNI_SELECTED);
		str_customername =   m_list_customer.GetItemText(  nItem, 1 );
									
		QueryContact();
	}
}

void CCRM::OnNMClickListContact(NMHDR *pNMHDR, LRESULT *pResult)
{
	//LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	::SendMessage(m_list_contact.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
	*pResult = 0;
}

void CCRM::OnBnClickedButtonAddcontact()
{
	// TODO: 在此添加控件通知处理程序代码
	UINT  uSelectedCount = m_list_customer.GetSelectedCount();
	int  nItem = -1;
	if (uSelectedCount < 1)
	{
		AfxMessageBox(_T("请选择一个客户增加联系人!"));
		return;
	}
	else if( uSelectedCount > 1 )
	{
		AfxMessageBox(_T("不能对多个客户增加联系人!"));
		return;

			
	}
	else
	{
		nItem = m_list_customer.GetNextItem(nItem, LVNI_SELECTED);
		str_customername =   m_list_customer.GetItemText(  nItem, 1 );

		CAddContact addcontact;
		INT_PTR nResponse = addcontact.DoModal();
		if (nResponse == IDOK)
		{
			// TODO: 在此处放置处理何时用“确定”来关闭
			//  对话框的代码
			QueryContact();
		}
		else if (nResponse == IDCANCEL)
		{
			// TODO: 在此放置处理何时用“取消”来关闭
			//  对话框的代码
		}
									
	}
}

void CCRM::OnBnClickedButtonDelcontact()
{
	// TODO: 在此添加控件通知处理程序代码
	UINT  uSelectedCount = m_list_contact.GetSelectedCount();
	int  nItem = -1;
	CString str_selcet;

	if (uSelectedCount < 1)
	{
		AfxMessageBox(_T("请选择一个联系人进行删除!"));
		return;
	}
	else if( uSelectedCount > 1 )
	{
		AfxMessageBox(_T("不能删除多个联系人!"));
		return;

			
	}
	else
	{
		nItem = m_list_contact.GetNextItem(nItem, LVNI_SELECTED);
		str_selcet =   m_list_contact.GetItemText(  nItem, 2 );

		CString m_strSql; 
		_variant_t RecordsAffected;
									

		m_strSql.Format(_T("delete from CUSTOMER_CONTACT_TABLE where(CONTACT_NAME='") +str_selcet+  _T("')"));
		bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
		if( !bSuccess )
		{
			AfxMessageBox(_T("删除此客户的联系人失败,请重启系统!"));
			return;
		}
		AfxMessageBox(_T("删除此客户的联系人成功!"));
		QueryContact();
	}
}

⌨️ 快捷键说明

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