📄 usersetdialog.cpp
字号:
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 + -