【VC开源代码栏目提醒】:网学会员鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“EditUser.cpp”一文,供大家参考学习
// EditUser.cpp : implementation file
//
#include "stdafx.h"
#include "DeviceDBS.h"
#include "EditUser.h"
#include "User.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEditUser dialog
extern User user;
CEditUser::CEditUser(CWnd* pParent /*=NULL*/)
: CDialog(CEditUser::IDD, pParent)
{
//{{AFX_DATA_INIT(CEditUser)
m_strBirth = _T("");
m_strGender = _T("");
m_strName = _T("");
m_strPwd = _T("");
m_bPower = 0;
m_strUserSelected = _T("");
m_strLoginID = _T("");
//}}AFX_DATA_INIT
}
void CEditUser::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditUser)
DDX_Control(pDX, IDC_COMBO_USERLIST, m_bUserList);
DDX_Text(pDX, IDC_User_Birth, m_strBirth);
DDX_Text(pDX, IDC_User_Gender, m_strGender);
DDX_Text(pDX, IDC_User_Name, m_strName);
DDX_Text(pDX, IDC_User_Pwd, m_strPwd);
DDX_Text(pDX, IDC_User_Power, m_bPower);
DDV_MinMaxInt(pDX, m_bPower, 1, 3);
DDX_CBString(pDX, IDC_COMBO_USERLIST, m_strUserSelected);
DDX_Text(pDX, IDC_User_ID, m_strLoginID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditUser, CDialog)
//{{AFX_MSG_MAP(CEditUser)
ON_BN_CLICKED(IDC_ADD_USER, OnAddUser)
ON_BN_CLICKED(IDC_DELETE_USER, OnDeleteUser)
ON_BN_CLICKED(IDC_SAVE_MODIFY, OnSaveModify)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
ON_CBN_CLOSEUP(IDC_COMBO_USERLIST, OnCloseupComboUserlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditUser message handlers
void CEditUser::OnAddUser()
{
// TODO: Add your control notification handler code here
m_pDB->BeginTrans();
CRecordset rs(m_pDB);
CString newID = _T("newID");
newID.Format(newID+"%d",acc++);
CString sql;
sql.Format("insert into user_info(loginID) values('%s')",newID);
TRACE(sql);
m_pDB->ExecuteSQL(sql);
m_pDB->CommitTrans();
RefreshComboNameData();
AfxMessageBox("添加用户成功");
}
void CEditUser::OnDeleteUser()
{
// TODO: Add your control notification handler code here
CString deleteID ;
int sIndex = m_bUserList.GetCurSel();
if(sIndex<0)
return;
//获取当前选择的用户名称
m_bUserList.GetLBText(sIndex,deleteID);
//如果选项为空,退出
if(m_strUserSelected.IsEmpty())
return;
m_pDB->BeginTrans();
CRecordset rs(m_pDB);
CString newID = _T("newID");
newID.Format(newID+"%d",acc++);
CString sql;
sql.Format("delete from user_info where loginID='%s'",deleteID);
TRACE(sql);
m_pDB->ExecuteSQL(sql);
m_pDB->CommitTrans();
RefreshComboNameData();
AfxMessageBox("删除用户成功");
}
void CEditUser::OnSaveModify()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_pDB->BeginTrans();
CString sql;
sql.Format("execute update_user_info '%s','%s','%s','%s','%s',"
"'%d'", m_strLoginID,m_strPwd,m_strName,m_strBirth,m_strGender,m_bPower);
TRACE(sql);
//AfxMessageBox(sql);
m_pDB->ExecuteSQL(sql);
AfxMessageBox("更改成功!");
m_pDB->CommitTrans();
if(!m_strLoginID.Compare(user.getId())) {
//更新用户信息
CRecordset rs(m_pDB);
sql.Format("Select * from user_info "
"where loginID = '%s' ",m_strLoginID);
rs.Open(CRecordset::snapshot, sql);
if(!rs.IsEOF()) {
//更新User
CString id;
rs.GetFieldValue((short)0, id);
user.setId(id);
CString pwd;
rs.GetFieldValue(1,pwd);
user.setPwd(pwd);
CString name;
rs.GetFieldValue(2,name);
user.setName(name);
CString birth;
rs.GetFieldValue(3,birth);
user.setBirth(birth);
CString gender;
rs.GetFieldValue(4,gender);
user.setGender(gender);
CDBVariant var;
rs.GetFieldValue(5, var, SQL_C_SSHORT);
if (var.m_dwType != DBVT_NULL)
user.setPower(var.m_iVal);
var.Clear();
}
}
}
void CEditUser::OnCancel()
{
CDialog::OnCancel();
}
void CEditUser::RefreshComboNameData(){
m_bUserList.ResetContent();
TRY{
CRecordset rs(m_pDB);
//打开所有的用户记录.
rs.Open(CRecordset::dynaset, "select loginID from user_info");
while (!rs.IsEOF()) {
CString id;
//获取用户ID字段值
rs.GetFieldValue((short)0, id);
//向用户组合框添加所有设备名称.
m_bUserList.AddString(id);
rs.MoveNext();
}
}
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
m_bUserList.SetCurSel(0);
RefreshProfileInfo();
}
BOOL CEditUser::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
RefreshComboNameData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEditUser::RefreshProfileInfo(){
}
void CEditUser::OnCloseupComboUserlist()
{
int sIndex = m_bUserList.GetCurSel();
if(sIndex<0)
return;
//获取当前选择的用户名称
m_bUserList.GetLBText(sIndex,m_strUserSelected);
//如果选项为空,退出
if(m_strUserSelected.IsEmpty())
return;
TRY{
CRecordset rs(m_pDB);
//打开所有的用户信息记录.
CString sql;
sql.Format("select * from user_info "
"where loginID = '%s'",m_strUserSelected);
rs.Open(CRecordset::dynaset,sql);
if (!rs.IsEOF()) {
CString id;
rs.GetFieldValue((short)0, id);
m_strLoginID = id;
CString pwd;
rs.GetFieldValue(1,pwd);
m_strPwd = pwd;
CString name;
rs.GetFieldValue(2,name);
m_strName = name;
CString birth;
rs.GetFieldValue(3,birth);
m_strBirth = birth;
CString gender;
rs.GetFieldValue(4,gender);
m_strGender = gender;
CDBVariant var;
rs.GetFieldValue(5, var, SQL_C_SSHORT);
if (var.m_dwType != DBVT_NULL)
m_bPower = var.m_iVal;
var.Clear();
}
UpdateData(false);
}
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
}
上一篇:
EditTreeDlg.cpp
下一篇:
让我掉下眼泪的