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

📄 powsetdialog.cpp

📁 VC+SQL SERVER 2000环境下开发的商品销售管理系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// PowSetDialog.cpp : 实现文件
//

#include "stdafx.h"
#include "SaleManager.h"
#include "PowSetDialog.h"
#include ".\powsetdialog.h"


// CPowSetDialog 对话框

IMPLEMENT_DYNAMIC(CPowSetDialog, CDialog)
CPowSetDialog::CPowSetDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CPowSetDialog::IDD, pParent), m_FlagAdd(FALSE),
	  m_FlagModify(FALSE), m_FlagDel(FALSE)
{
}

CPowSetDialog::~CPowSetDialog()
{
}

void CPowSetDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST_POWER, m_PowerNameList);
	DDX_Control(pDX, IDC_LIST_NOPOWER, m_ManagerPowNotYetList);
	DDX_Control(pDX, IDC_LIST_POWERED, m_ManagerPowNameList);
	DDX_Control(pDX, IDC_LIST_MODULE, m_ListModule);
	DDX_Control(pDX, IDC_LIST_NOMODULE, m_ListNoModule);
}


BEGIN_MESSAGE_MAP(CPowSetDialog, CDialog)
	ON_LBN_SELCHANGE(IDC_LIST_POWER, OnLbnSelchangeListPower)
	ON_BN_CLICKED(IDC_LEAVE, OnBnClickedLeave)
	ON_BN_CLICKED(IDC_BUTTON_ADDPOW, OnBnClickedButtonAddpow)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDC_BUTTON_MODIFP, OnBnClickedButtonModifp)
	ON_BN_CLICKED(IDC_CANCEL, OnBnClickedCancel)
	ON_BN_CLICKED(IDC_BUTTON_DELPOW, OnBnClickedButtonDelpow)
	ON_BN_CLICKED(IDC_USER_GIVE, OnBnClickedUserGive)
	ON_BN_CLICKED(IDC_USER_RECEDE, OnBnClickedUserRecede)
	ON_BN_CLICKED(IDC_USER_ALLGIVE, OnBnClickedUserAllgive)
	ON_BN_CLICKED(IDC_USER_ALLRECEDE, OnBnClickedUserAllrecede)
	ON_LBN_SELCHANGE(IDC_LIST_MODULE, OnLbnSelchangeListModule)
	ON_BN_CLICKED(IDC_MODULE_RECEDE, OnBnClickedModuleRecede)
	ON_BN_CLICKED(IDC_MODULE_GIVE, OnBnClickedModuleGive)
	ON_BN_CLICKED(IDC_MODULE_ALLGIVE, OnBnClickedModuleAllgive)
	ON_BN_CLICKED(IDC_MODULE_ALLRECEDE, OnBnClickedModuleAllrecede)
END_MESSAGE_MAP()


// CPowSetDialog 消息处理程序

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

	HRESULT hr;
	try
	{
		hr = m_pConnection.CreateInstance(__uuidof(Connection));

		if(SUCCEEDED(hr))
		{
			m_pConnection->ConnectionString = "File Name=SaleManagerdata.udl";
			m_pConnection->ConnectionTimeout = 20;

			hr = m_pConnection->Open("","","",adConnectUnspecified);

			if(FAILED(hr))
			{
				AfxMessageBox("打开失败");
				return TRUE;
			}
		}
		else
		{
			AfxMessageBox("创建连接实例失败!");
			return TRUE;
		}
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.ErrorMessage());
		return TRUE;
	}
    
	InitPowNameList();
	ControlCanNotUse();
	
	return TRUE; 
}

void CPowSetDialog::ControlCanNotUse()
{
	CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
	pEdit->EnableWindow(FALSE);

	CButton *pButton = (CButton*)GetDlgItem(IDOK);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_CANCEL);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_USER_GIVE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_USER_RECEDE);
	pButton->EnableWindow(FALSE);
	
	pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
	pButton->EnableWindow(FALSE);
	
	pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_USER_ALLRECEDE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_GIVE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_RECEDE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLGIVE);
	pButton->EnableWindow(FALSE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLRECEDE);
	pButton->EnableWindow(FALSE);
}

void CPowSetDialog::ControlCanUse()
{
    CButton *pButton = (CButton*)GetDlgItem(IDC_USER_GIVE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_USER_RECEDE);
	pButton->EnableWindow(TRUE);
	
	pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
	pButton->EnableWindow(TRUE);
	
	pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_USER_ALLRECEDE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_GIVE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_RECEDE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLGIVE);
	pButton->EnableWindow(TRUE);

	pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLRECEDE);
	pButton->EnableWindow(TRUE);
}

void CPowSetDialog::InitPowNameList()
{
	_RecordsetPtr  m_pRecordsetP;
	HRESULT        hrP;
	try
	{
		hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
		
		if(FAILED(hrP))
		{
			AfxMessageBox (_T("不能创建记录集实例!"));
			return;
		}
		hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
			                     m_pConnection.GetInterfacePtr(),
			                     adOpenDynamic,
			                     adLockOptimistic,
			                     adCmdText);
		if(SUCCEEDED(hrP))
		{
			_variant_t var;
			CString    strValue;

			while(!m_pRecordsetP->adoEOF)
			{
				var = m_pRecordsetP->GetCollect ("PowerName");
				strValue = (LPCSTR) _bstr_t(var);
				if(strValue != _T("超级用户"))
				  m_PowerNameList.InsertString (-1,strValue);

				m_pRecordsetP->MoveNext();
			}
			m_pRecordsetP->Close();
			m_pRecordsetP = NULL;
		}
	}
	catch(_com_error &e)
	{
		AfxMessageBox (e.ErrorMessage());
	}
}

void CPowSetDialog::InitManagerPowNameListList(CString m_tempPowName)
{
	_RecordsetPtr  m_pRecordsetM;
	HRESULT        hrM;
	try
	{
		hrM = m_pRecordsetM.CreateInstance (__uuidof(Recordset));
		
		if(FAILED(hrM))
		{
			AfxMessageBox (_T("不能创建记录集实例!"));
			return;
		}
		CString strSQL;
		strSQL.Format("select * from PowerManagerTable where PowerName = '%s'", m_tempPowName);
		hrM = m_pRecordsetM->Open (_bstr_t(strSQL),
			                     m_pConnection.GetInterfacePtr(),
			                     adOpenDynamic,
			                     adLockOptimistic,
			                     adCmdText);
		if(SUCCEEDED(hrM))
		{
			_variant_t var;
			CString    strValue;

			if(!m_pRecordsetM->adoEOF)
			{
				var = m_pRecordsetM->GetCollect ("ManagerPowNum");
				strValue = (LPCSTR) _bstr_t(var);

				_RecordsetPtr  m_pRecordsetP;
                HRESULT        hrP;
				hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
		
				if(FAILED(hrP))
				{
					AfxMessageBox (_T("不能创建记录集实例!"));
					return;
				}

				hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
										m_pConnection.GetInterfacePtr(),
										adOpenDynamic,
										adLockOptimistic,
										adCmdText);

				int Count = strValue.GetLength();
				CString PowerNum;

				for(int index = 0; index < Count; index++)
				{

					PowerNum = "";
					PowerNum += strValue[index];
					m_pRecordsetP->MoveFirst();
					while(!m_pRecordsetP->adoEOF)
					{
						CString tempPowNum;
						var = m_pRecordsetP->GetCollect("PowerNum");
						tempPowNum = (LPCSTR)_bstr_t(var);
						if(tempPowNum == PowerNum)
							   break;

						m_pRecordsetP->MoveNext();
					}
					var = m_pRecordsetP->GetCollect("PowerName");
					CString tempstrValue;
					tempstrValue = (LPCSTR) _bstr_t(var);
					m_ManagerPowNameList.InsertString(-1,tempstrValue);
					PowerNum.Empty();
				}

			}
			m_pRecordsetM->Close();
			m_pRecordsetM = NULL;
		}
	}
	catch(_com_error &e)
	{
		AfxMessageBox (e.ErrorMessage());
	}
}

void CPowSetDialog::OnLbnSelchangeListPower()
{
	int Count = m_ManagerPowNameList.GetCount();
	for(int index =0; index< Count; index++)
	   m_ManagerPowNameList.DeleteString(0);
	
	Count = m_ManagerPowNotYetList.GetCount();
	for(int index =0; index< Count; index++)
	  m_ManagerPowNotYetList.DeleteString(0);
	
	CString PowerName;
	int Index = m_PowerNameList.GetCurSel();
	m_PowerNameList.GetText(Index,PowerName);
	InitManagerPowNameListList(PowerName);
	InitManagerPowNotYetList(PowerName);
	
	Count = m_ListModule.GetCount();
    for(int index = 0; index < Count; index++)
		m_ListModule.DeleteString(0);
	Count = m_ListNoModule.GetCount();
	for(int index = 0; index< Count; index++)
		m_ListNoModule.DeleteString(0);
	
	InitManagerModule(PowerName);
	InitManagerNotYetModule(PowerName);
}

void CPowSetDialog::InitManagerPowNotYetList(CString m_tempPowName)
{
	HRESULT         hrM;
	_RecordsetPtr   m_pRecordsetM;

	try
	{
		hrM = m_pRecordsetM.CreateInstance(__uuidof(Recordset));
		if(FAILED(hrM))
		{
			AfxMessageBox(_T("创建实例失败!"));
			return ;
		}

		CString strSQL;
		strSQL.Format ("select * from PowerManagerTable where PowerName = '%s'", m_tempPowName);
		hrM = m_pRecordsetM->Open (_bstr_t(strSQL),
			                m_pConnection.GetInterfacePtr(),
							adOpenDynamic,
			                adLockOptimistic,
			                adCmdText);
		
		if(SUCCEEDED(hrM))
		{
			CString         strValue;
			CString         ManagerPowNum;
			_variant_t      var;

			if(!m_pRecordsetM->adoEOF)
			{
				var = m_pRecordsetM->GetCollect ("ManagerPowNum");
				if(var.vt != VT_NULL)
					ManagerPowNum = (LPCSTR)_bstr_t(var);

				_RecordsetPtr  m_pRecordsetP;
                HRESULT        hrP;
				hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
		
				if(FAILED(hrP))
				{
					AfxMessageBox (_T("不能创建记录集实例!"));
					return;
				}

				hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
										    m_pConnection.GetInterfacePtr(),
										    adOpenDynamic,
										    adLockOptimistic,
										    adCmdText);			
				if(m_pRecordsetP->adoEOF)
					return;

                int RecordCount = 0;
				while(!m_pRecordsetP->adoEOF)
				{
					RecordCount++;
					m_pRecordsetP->MoveNext();
				}

				m_pRecordsetP->MoveFirst();

				struct FlagPowerNum{
					CString  PowerNum;
					CString  PowerName;
					bool     flag;
				};
				FlagPowerNum  *pFlagPowerNum;
				pFlagPowerNum = new FlagPowerNum[RecordCount]; //用来判断哪一个可以插入ListBox,如果是true就可以
                                                                //插入
                int     index = 0;
				CString PowerNumtemp;
				while(!m_pRecordsetP->adoEOF)
				{
					   var = m_pRecordsetP->GetCollect ("PowerName");
					   strValue  = (LPCSTR) _bstr_t(var);
					if(strValue != m_tempPowName)
					{
						var = m_pRecordsetP->GetCollect ("PowerName");
						strValue  = (LPCSTR) _bstr_t(var);
						pFlagPowerNum[index].PowerName = strValue;
					    var = m_pRecordsetP->GetCollect ("PowerNum");
						strValue  = (LPCSTR) _bstr_t(var);
						pFlagPowerNum[index].PowerNum = "";
                        pFlagPowerNum[index].PowerNum += strValue;
						pFlagPowerNum[index++].flag = FALSE	;
					}
					else{
						var = m_pRecordsetP->GetCollect("PowerNum");
						PowerNumtemp = (LPCSTR)_bstr_t(var);
					}
					m_pRecordsetP->MoveNext();
				}

				int Count = ManagerPowNum.GetLength();
				CString PowerNum;

				for(int index1 = 0; index1 < Count; index1++)
				{

					PowerNum = "";
					PowerNum += ManagerPowNum[index1];
					
					for(int index2 = 0; index2 < RecordCount; index2++)
					{
						if(PowerNum == pFlagPowerNum[index2].PowerNum)
							pFlagPowerNum[index2].flag = TRUE;
					}
				}

				m_pRecordsetM->Close();
				hrM = m_pRecordsetM->Open ("select * from PowerManagerTable", //为了将m_pRecordsetM移到第一条记录
			                m_pConnection.GetInterfacePtr(),
			                adOpenDynamic,
			                adLockOptimistic,
			                adCmdText);

				while(!m_pRecordsetM->adoEOF)
				{
					var = m_pRecordsetM->GetCollect ("ManagerPowNum");
					strValue = (LPCSTR)_bstr_t(var);
					var = m_pRecordsetM->GetCollect("PowerName");
					CString name = (LPCSTR)_bstr_t(var);
                   
					if(name != m_tempPowName)
					{
						int Count = strValue.GetLength();
						for(int index = 0; index< Count; index++)
						{
							if(strValue[index] == PowerNumtemp[0])
							{
								var = m_pRecordsetM->GetCollect("PowerName");
								strValue = (LPCSTR)_bstr_t(var);
								for(int index2 = 0; index2 < RecordCount; index2++)
								{
									if(pFlagPowerNum[index2].PowerName == strValue)
									{
										pFlagPowerNum[index2].flag = TRUE;
										break;
									}
								}
								break;
							}
						}//for
					}//if
					m_pRecordsetM->MoveNext();
				}//while

				for(int index1 = 0;index1 < RecordCount; index1++)
				{
					if(pFlagPowerNum[index1].flag == FALSE)
						m_ManagerPowNotYetList.InsertString(-1, pFlagPowerNum[index1].PowerName);
				}

				m_pRecordsetM->Close();
				m_pRecordsetP->Close();
				delete []pFlagPowerNum;
				m_pRecordsetM = NULL;
				m_pRecordsetP = NULL;
				pFlagPowerNum = NULL;
			}//if
		}//if
	}//try
	catch(_com_error e)
	{
		AfxMessageBox(e.ErrorMessage());
		return;
	}

⌨️ 快捷键说明

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