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

📄 usersetdialog.cpp

📁 。使用VC.NET做前端应用程序开发工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	pEdit = (CEdit*) GetDlgItem(IDC_EDIT_PASSA);
	pEdit->EnableWindow(FALSE);

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

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

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

	m_Pow.EnableWindow(FALSE);
}

void CUserSetDialog::OnBnClickedAddUser()
{
	// TODO: 在此添加控件通知处理程序代码
    Clear();
	CtrlButtonCanUse();
	CEdit *pEdit = (CEdit*) GetDlgItem(IDC_EDIT_ACCOUNT);
	pEdit->SetFocus();
	m_AddOrChange = TRUE;
	CButton *pButton = (CButton*) GetDlgItem(IDC_BUTTON_CHANGE);
	pButton->EnableWindow(FALSE);
}

void CUserSetDialog::OnBnClickedRadioCan()
{
	m_Canuse = 1;
}

void CUserSetDialog::OnBnClickedRadioNo()
{
	m_Canuse = 0;
}

void CUserSetDialog::AddNew()//增加
{
	HRESULT        hr;
	HRESULT        hrL;
	HRESULT        hrPName;
	_RecordsetPtr  m_pRecordset;
	_RecordsetPtr  m_pRecordsetL;
	_RecordsetPtr  m_pRecordsetPName;

	hr = m_pRecordset.CreateInstance(__uuidof(Recordset));
	hrL = m_pRecordsetL.CreateInstance(__uuidof(Recordset));
	hrPName = m_pRecordsetPName.CreateInstance (__uuidof(Recordset));

    if(FAILED(hr) || FAILED(hrL) || FAILED(hrPName))
	{
		AfxMessageBox(_T("不能创建记录集实例!"));
		return;
	}
	hr = m_pRecordset->Open("select * from PowTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);
	hrL = m_pRecordsetL->Open("select * from LoginTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);
	hrPName = m_pRecordsetPName->Open ("select * from PowerNameTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);

	if(SUCCEEDED(hr) && SUCCEEDED(hrL) && SUCCEEDED(hrPName))
	{	
		CString    strValue;
		CString    tempAccountName;
		_variant_t var;
		int        AccountNum;

		while(!m_pRecordsetL->adoEOF)
		{
			var = m_pRecordsetL->GetCollect("AccountName");
			if(var.vt != VT_NULL)
				tempAccountName = (LPCSTR)_bstr_t(var);
			if(tempAccountName == m_Account)
			{
				AfxMessageBox(_T("已有该帐号"));
				m_Account = "";
				UpdateData(FALSE);
				return;
			}
			m_pRecordsetL->MoveNext();				
		}//while

		m_pRecordsetL->MoveFirst();
		m_pRecordset->AddNew();
		m_Pow.GetWindowText (strValue);

        while(!m_pRecordsetPName->adoEOF)
		{
			CString tempPowName;
			
			var = m_pRecordsetPName->GetCollect ("PowerName");
			if(var.vt != VT_NULL)
				tempPowName = (LPCSTR) _bstr_t(var);
		    if(tempPowName == strValue)
          			  break;
			m_pRecordsetPName->MoveNext();
		}

		if(m_pRecordsetPName->adoEOF)
		{
			AfxMessageBox(_T("没有开放这个级别,请核对!"));
			m_Pow.SetWindowText(_T(""));
			return;
		}

		m_pRecordset->PutCollect ("PowerName",_variant_t(strValue));
		m_pRecordset->PutCollect ("RealName",_variant_t(m_Name));
		m_pRecordset->PutCollect ("CanUse",_variant_t(m_Canuse));
		m_pRecordsetL->MoveLast();
		var = m_pRecordsetL->GetCollect("AccountNum");
		if(var.vt != VT_NULL)
			AccountNum = (int )_variant_t(var);
		m_pRecordsetL->AddNew();
		m_pRecordset->PutCollect ("AccountNum",_variant_t(++AccountNum));

		m_pRecordsetL->PutCollect ("AccountName",_variant_t(m_Account));
		m_pRecordsetL->PutCollect ("Pass", _variant_t(m_PassWord));
		m_pRecordsetL->PutCollect ("PowerName",_variant_t(strValue));
		m_pRecordsetL->PutCollect ("CanUse",_variant_t(m_Canuse));
		m_pRecordsetL->PutCollect ("AccountNum",_variant_t(AccountNum));

		m_pRecordset->Update();
		m_pRecordsetL->Update();

		m_UserList.InsertItem (m_Index, m_Account);
		m_UserList.SetItemText (m_Index, 1, m_Name);
		m_UserList.SetItemText (m_Index, 2, strValue);
		if(m_Canuse)
			m_UserList.SetItemText (m_Index, 3, _T("可用"));
		else
            m_UserList.SetItemText (m_Index, 3, _T("禁用"));

	}
	m_ErrorMessage = TRUE;
	m_pRecordset->Close();
    m_pRecordsetL->Close();
	m_pRecordsetPName->Close();
	m_pRecordset = NULL;
	m_pRecordsetL = NULL;
	m_pRecordsetPName = NULL;
    
	m_UserList.DeleteAllItems();
	InitList();

	MessageBox(_T("新增用户成功!"), _T("用户设置"), MB_ICONASTERISK | MB_OK);
}

void CUserSetDialog::OnBnClickedButtonChange()//单击选择按钮
{
	int sel = m_UserList.GetSelectionMark();
	m_UserList.SetSelectionMark(sel);
	if(sel < 0)
	{
		AfxMessageBox(_T("请选择要修改的用户"));
		return;
	}
	
	m_Index = sel;
	CtrlButtonCanUse();

	CString strValue;

	strValue = m_UserList.GetItemText (sel, 0);
	m_Account = strValue;
	strValue = m_UserList.GetItemText (sel, 1);
	m_Name = strValue;
	strValue = m_UserList.GetItemText (sel,2);
	m_Pow.SelectString(0,strValue);
	strValue = m_UserList.GetItemText (sel,3);
	if(strValue == _T("可用"))
	{
		m_RCanUse.SetCheck (TRUE);
		m_Canuse = TRUE;
	}
	else{
	   CButton *pButton = (CButton*)GetDlgItem(IDC_RADIO_NO);
	   pButton->SetCheck (TRUE);
	   m_Canuse = FALSE;
	}
   
	_RecordsetPtr     m_pRecordsetLogin;
	HRESULT           hrLogin;
	try
	{
		hrLogin = m_pRecordsetLogin.CreateInstance (__uuidof (Recordset));
		if( FAILED(hrLogin))
		{
			AfxMessageBox ("创建实例失败!");
			return;
		}
        CString strSQL;
		strSQL.Format ("select * from LoginTable where  AccountName = '%s'", m_Account);
		hrLogin = m_pRecordsetLogin->Open ( _bstr_t(strSQL),
			                                m_pConnection.GetInterfacePtr(),
											adOpenDynamic,
											adLockOptimistic,
											adCmdText);
		if(SUCCEEDED(hrLogin))
		{
			_variant_t     var;
			
			var = m_pRecordsetLogin->GetCollect ("Pass");
			m_PassWord = (LPCSTR)_bstr_t(var);
			m_PassWordAgain = (LPCSTR)_bstr_t(var);

			m_pRecordsetLogin->Close ();
		}
	}
	catch (_com_error &e)
	{
		AfxMessageBox (e.ErrorMessage ());
		return;
	}


	UpdateData(FALSE);

	m_AddOrChange =FALSE;
	m_IsANChange = m_Account;

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

void CUserSetDialog::OnBnClickedOk()//单击确定按钮
{

	UpdateData(TRUE);
	CEdit *pEdit;

	if(m_Account == "")
	{
		AfxMessageBox (_T("帐号不能为空"));
		pEdit = (CEdit*) GetDlgItem(IDC_EDIT_ACCOUNT);
		pEdit->SetFocus();
		return;
	}
	if(m_Name == "")
	{
		AfxMessageBox (_T("用户姓名不能为空"));
		pEdit = (CEdit*) GetDlgItem(IDC_EDIT_NAME);
		pEdit->SetFocus();
		return;
	}
    if(m_PassWord != m_PassWordAgain)
	{
		AfxMessageBox (_T("两次密码不符合"));
		pEdit = (CEdit*) GetDlgItem(IDC_EDIT_PASSF);
		m_PassWordAgain = "";
		m_PassWord = "";
		UpdateData(FALSE);
		pEdit->SetFocus();
		pEdit->SetFocus();
		return;
	}

	CString tempPow;
	m_Pow.GetWindowText (tempPow);
	if(tempPow == "")
	{
       AfxMessageBox (_T("请选择用户级别"));
	   return ;
	}
	if(m_AddOrChange)
	{
	   AddNew();
	   CButton *pButton = (CButton*) GetDlgItem(IDC_BUTTON_CHANGE);
	   pButton->EnableWindow(TRUE);
	}
	else
	{
		Modification (m_IsANChange);
		CButton *pButton = (CButton*) GetDlgItem(IDC_ADD_USER);
	    pButton->EnableWindow(TRUE);
	}

	if(m_ErrorMessage)
	{
	  Clear();
	  CtrlButtonCannotUse();
	  m_ErrorMessage = FALSE;
	}
}

void CUserSetDialog::OnBnClickedButtonCancel()
{ 
     Clear();
     CtrlButtonCannotUse();
	 CButton *pButton = (CButton*) GetDlgItem(IDC_BUTTON_CHANGE);
	 pButton->EnableWindow(TRUE);
	 pButton = (CButton*) GetDlgItem(IDC_ADD_USER);
	 pButton->EnableWindow(TRUE);
}

void CUserSetDialog::Clear()//清空edit控件
{
	m_Account = "";
	m_Name = "";
    m_PassWord = "";
	m_PassWordAgain = "";

	CButton *pButton = (CButton*)GetDlgItem (IDC_RADIO_CAN);
	pButton->SetCheck (FALSE);
	pButton = (CButton*) GetDlgItem (IDC_RADIO_NO);
	pButton->SetCheck (FALSE);

	CString strValue = "";
	m_Pow.SetWindowText(strValue);

	UpdateData(FALSE);
}

void CUserSetDialog::Modification(CString tAccountName)//用来修改
{
	HRESULT        hr;
	HRESULT        hrL;
	HRESULT        hrPName;
	_RecordsetPtr  m_pRecordset;
	_RecordsetPtr  m_pRecordsetL;
	_RecordsetPtr  m_pRecordsetPName;

	hr = m_pRecordset.CreateInstance(__uuidof(Recordset));
	hrL = m_pRecordsetL.CreateInstance(__uuidof(Recordset));
	hrPName = m_pRecordsetPName.CreateInstance (__uuidof(Recordset));

    if(FAILED(hr) || FAILED(hrL) || FAILED(hrPName))
	{
		AfxMessageBox(_T("不能创建记录集实例!"));
		return;
	}
	hr = m_pRecordset->Open("select * from PowTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);
	hrL = m_pRecordsetL->Open("select * from LoginTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);
	hrPName = m_pRecordsetPName->Open ("select * from PowerNameTable",
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);

	if(SUCCEEDED(hr) && SUCCEEDED(hrL) && SUCCEEDED(hrPName))
	{	
		CString    strValue;
		CString    tempAccountName;
		_variant_t var;
        
		if(m_IsANChange != m_Account)
		{
			while(!m_pRecordsetL->adoEOF)
			{
				var = m_pRecordsetL->GetCollect("AccountName");
				if(var.vt != VT_NULL)
					tempAccountName = (LPCSTR)_bstr_t(var);
				if(tempAccountName == m_Account)
				{
					AfxMessageBox(_T("已有该帐号"));
					m_Account = m_IsANChange;
					UpdateData(FALSE);
					return;
				}
				m_pRecordsetL->MoveNext();				
			}
		}

		m_Pow.GetWindowText (strValue);

        while(!m_pRecordsetPName->adoEOF)
		{
			CString tempPowName;
			
			var = m_pRecordsetPName->GetCollect ("PowerName");
			if(var.vt != VT_NULL)
				tempPowName = (LPCSTR) _bstr_t(var);
		    if(tempPowName == strValue)
          			  break;
			m_pRecordsetPName->MoveNext();
		}

		if(m_pRecordsetPName->adoEOF)
		{
			AfxMessageBox(_T("没有开放这个级别,请核对!"));
			m_Pow.SetWindowText(_T(""));
			return;
		}

		m_pRecordsetL->Close();
		m_pRecordset->Close();

        CString strSQL = NULL;
		strSQL.Format("select * from LoginTable where AccountName = '%s'",tAccountName);
	    m_pRecordsetL->Open(_bstr_t(strSQL),
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);

		var = m_pRecordsetL->GetCollect("AccountNum");
		int AccountNum;
		if(var.vt != VT_NULL)
			AccountNum = (int)_variant_t(var);
        
		strSQL.Empty();
		strSQL.Format( "select * from PowTable where AccountNum = %d", AccountNum);
        m_pRecordset->Open(_bstr_t(strSQL),
			            m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
			            adLockOptimistic,
			            adCmdText);

		m_pRecordset->PutCollect ("PowerName",_variant_t(strValue));
		m_pRecordset->PutCollect ("RealName",_variant_t(m_Name));
		m_pRecordset->PutCollect ("CanUse",_variant_t(m_Canuse));
		m_pRecordsetL->PutCollect("AccountName",_variant_t(m_Account));
		m_pRecordsetL->PutCollect("Pass", _variant_t(m_PassWord));
		m_pRecordsetL->PutCollect("PowerName",_variant_t(strValue));
		m_pRecordsetL->PutCollect("CanUse",_variant_t(m_Canuse));

		m_pRecordset->Update();
		m_pRecordsetL->Update();

		m_UserList.DeleteItem(m_Index);
		m_UserList.InsertItem(m_Index, m_Account);
		m_UserList.SetItemText(m_Index, 1, m_Name);
		m_UserList.SetItemText(m_Index, 2, strValue);
		if(m_Canuse)
			m_UserList.SetItemText(m_Index, 3, _T("可用"));
		else
            m_UserList.SetItemText(m_Index, 3, _T("禁用"));

	}
	m_ErrorMessage = TRUE;
	m_IsANChange.Empty();
	m_pRecordset->Close();
    m_pRecordsetL->Close();
	m_pRecordsetPName->Close();
	m_pRecordset = NULL;
	m_pRecordsetL = NULL;
    m_pRecordsetPName = NULL;
	AfxMessageBox(_T("修改资料成功"));
	m_UserList.DeleteAllItems();
	InitList();
}

void CUserSetDialog::OnLvnHotTrackUserList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
	OnBnClickedButtonChange();
}

void CUserSetDialog::OnBnClickedCancel()
{
	m_pConnection->Close();
	m_pConnection = NULL;
	OnCancel();
}

⌨️ 快捷键说明

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