📄 dlgusertx.cpp
字号:
// DlgUserTx.cpp : implementation file
//
#include "stdafx.h"
#include "Kvip.h"
#include "DlgUserTx.h"
#include "MainFrm.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgUserTx dialog
CDlgUserTx::CDlgUserTx(CWnd* pParent /*=NULL*/)
: CDialog(CDlgUserTx::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgUserTx)
m_strCode = _T("");
m_strUser = _T("");
m_strNote = _T("");
m_strPassword = _T("");
m_strPassword2 = _T("");
//}}AFX_DATA_INIT
m_pParent = NULL;
m_nItem = -1;
m_bEnabled = TRUE;
m_bManager = FALSE;
m_bAppend = FALSE;
}
void CDlgUserTx::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgUserTx)
DDX_Control(pDX, IDC_MASTER, m_Master);
DDX_Control(pDX, IDC_MANAGER, m_btManager);
DDX_Control(pDX, IDC_ENABLED, m_btEnabled);
DDX_Text(pDX, IDC_CODE, m_strCode);
DDX_Text(pDX, IDC_NAME, m_strUser);
DDX_Text(pDX, IDC_NOTE, m_strNote);
DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
DDX_Text(pDX, IDC_PASSWORD1, m_strPassword2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgUserTx, CDialog)
//{{AFX_MSG_MAP(CDlgUserTx)
ON_BN_CLICKED(IDC_OK, OnOK)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgUserTx message handlers
BOOL CDlgUserTx::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT( m_pParent != NULL );
// TODO: Add extra initialization here
CString strSQL;
CWnd *pWnd;
m_RecordSetHead.SetAdoConnection(&m_pParent->m_Connection);
m_RecordSetBody.SetAdoConnection(&m_pParent->m_Connection);
if (m_bAppend == FALSE)
{//编辑模式
m_strCode = m_pParent->m_Master.GetItemText(m_nItem,1);
strSQL = "Select * From kv_user Where us_code = '" +
m_strCode + "'";
if (!m_RecordSetHead.Open(strSQL))
{
MessageBox("错误:UST-00001 打开数据库失败!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
PostMessage(WM_CLOSE);
return FALSE;
}
m_RecordSetHead.GetCollect("us_code", m_strCode);
m_RecordSetHead.GetCollect("us_name", m_strUser);
m_RecordSetHead.GetCollect("us_password", m_strPassword);
m_RecordSetHead.GetCollect("us_enabled", m_bEnabled);
m_RecordSetHead.GetCollect("us_manager", m_bManager);
m_RecordSetHead.GetCollect("us_note", m_strNote);
m_strPassword2 = m_strPassword;
strSQL = "Select * From kv_user_tx Where ut_code = '" +
m_strCode + "'";
if (!m_RecordSetBody.Open(strSQL))
{
MessageBox("错误:UST-00001 打开数据库失败!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
PostMessage(WM_CLOSE);
return FALSE;
}
}
if (m_bAppend == FALSE)
{
pWnd = GetDlgItem(IDC_CODE);
pWnd->EnableWindow(FALSE);
}
m_Master.SetHeadings(_T("有效,1, 40;功能编号,1,80; 说明,0, 300"));
m_Master.SetGridLines(TRUE);
m_Master.SetCheckboxes(TRUE);
if (m_bEnabled) m_btEnabled.SetCheck(1);
if (m_bManager) m_btManager.SetCheck(1);
LoadData();
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgUserTx::OnOK()
{
// TODO: Add your control notification handler code here
UpdateData();
CString strEnabled, strManager, strSQL;
CString strKey;
//有效性比较
m_strPassword.TrimLeft();
m_strPassword.TrimRight();
m_strPassword.MakeUpper();
m_strPassword2.TrimLeft();
m_strPassword2.TrimRight();
m_strPassword2.MakeUpper();
m_strCode.TrimLeft();
m_strCode.TrimRight();
m_strCode.MakeUpper();
if (m_strPassword != m_strPassword2)
{
MessageBox("错误:密码与密码确认不一致!!!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
return ;
}
if (m_strPassword.IsEmpty())
{
MessageBox("错误:密码不能为空值!!!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
return ;
}
if (m_strCode.IsEmpty()) //编号不能为空值
{
MessageBox("错误:用户编号不能为空值 !!!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
return ;
}
strSQL = "Select * From kv_user Where us_code = '" +
m_strCode + "'";
if ( m_bAppend &&
(!m_RecordSetHead.Open(strSQL) || //打开失败
m_RecordSetHead.GetRecordCount() > 0)) //编号已存在
{
MessageBox("错误:用户编号不重复 !!!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
return ;
}
//保存
if (SaveData() < 0)
{
MessageBox("错误:UST-00002 保存数据库失败!",
"系统提示", MB_OK|MB_ICONEXCLAMATION);
return ;
}
//更新显示
if (m_bAppend)// 新增
{
m_nItem = m_pParent->m_Master.InsertItem(m_nItem,_T(""));
strKey.Format("%5d", m_pParent->m_Master.GetItemCount());
m_pParent->m_Master.SetItemText(m_nItem, 0, strKey);
}
m_pParent->m_Master.SetItemText(m_nItem, 1, m_strCode);
m_pParent->m_Master.SetItemText(m_nItem, 2, m_strUser);
if (m_btEnabled.GetCheck() == 1)
strEnabled = "是";
else
strEnabled = "否";
if (m_btManager.GetCheck() == 1)
strManager = "是";
else
strManager = "否";
m_pParent->m_Master.SetItemText(m_nItem, 1, m_strCode);
m_pParent->m_Master.SetItemText(m_nItem, 2, m_strUser);
m_pParent->m_Master.SetItemText(m_nItem, 3, strEnabled);
m_pParent->m_Master.SetItemText(m_nItem, 4, strManager);
m_pParent->m_Master.SetItemText(m_nItem, 5, m_strNote);
CDialog::OnOK();
}
void CDlgUserTx::OnCancel()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CDlgUserTx::LoadMenu(CMenu *pMenu)
{
CMenu *pSubMenu;
UINT nID;
CString strID, str;
for(UINT i = 0; i < pMenu->GetMenuItemCount(); i++)
{
pSubMenu = pMenu->GetSubMenu(i);
if (pSubMenu) LoadMenu(pSubMenu);
nID = pMenu->GetMenuItemID(i);
pMenu->GetMenuString(i, str, MF_BYPOSITION);
// if (nID >= IDD_MENU_BEGIN && nID <= IDD_MENU_END) //0表示结束
// if (str.Find('(') > 0 && nID < IDD_MENU_END)
if (nID > 0 && nID < MAX_MENU_ID)
{
strID.Format("%6d", nID);
m_Master.InsertItemEx(0," ", strID, str);
}
}
}
BOOL CDlgUserTx::LoadData()
{
CString strCode;
BOOL bFound;
long lFunction, lID, lCode;
//装入所有功能选项
CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd();
ASSERT( pMain != NULL);
CMenu *pMenu = pMain->GetMenuEx();
ASSERT( pMenu != NULL);
LoadMenu(pMenu);
if (m_bAppend) return true;
//取用户功能
m_RecordSetBody.MoveFirst();
while(!m_RecordSetBody.IsEOF())
{
bFound = FALSE;
m_RecordSetBody.GetCollect("ut_function", lFunction);
m_RecordSetBody.GetCollect("ut_id", lID);
//对比所有功能
for (int i =0; i < m_Master.GetItemCount(); i++)
{
strCode = m_Master.GetItemText(i, 1);
lCode = atol((LPCSTR)strCode);
if (lCode == lFunction)
{
bFound = TRUE;
break;
}
}//end for
if (bFound == FALSE)
{//没发现
m_Master.SetCheck(i, false);
m_Master.SetItemData(i, 0);
}
else
{//发现
m_Master.SetCheck(i, true);
m_Master.SetItemData(i, lID);
}
m_RecordSetBody.MoveNext();
}// end for
return TRUE;
}
BOOL CDlgUserTx::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
m_RecordSetHead.Close();
m_RecordSetBody.Close();
return CDialog::DestroyWindow();
}
int CDlgUserTx::SaveData()
{
BOOL bChecked;
long lID;
CString strSQL;
CString strManager, strEnabled, strDate, strFunction;
CTime tNow = CTime::GetCurrentTime();
//设置数据格式
m_pParent->m_Connection.BeginTrans();
if(m_btEnabled.GetCheck() == 1)
strEnabled = "true";
else
strEnabled = "false";
if(m_btManager.GetCheck() == 1)
strManager = "true";
else
strManager = "false";
strDate = tNow.Format("%Y/%m/%d");
// strDate = "2005/12/03";
//写用户表
if (m_bAppend)
{// 新增用户
if (m_strNote.IsEmpty())
strSQL.Format("INSERT INTO kv_user(us_code, us_name, us_manager, us_password,us_date, us_enabled, us_note) VALUES ('%s', '%s', %s, '%s', '%s', %s, ' ')",
m_strCode, m_strUser, strManager, m_strPassword,
strDate, strEnabled);
else
strSQL.Format("INSERT INTO kv_user(us_code, us_name, us_manager, us_password,us_date, us_enabled, us_note) VALUES ('%s', '%s', %s, '%s', '%s', %s, '%s')",
m_strCode, m_strUser, strManager, m_strPassword,
strDate, strEnabled, m_strNote);
if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) //执行此sql语句
{
m_pParent->m_Connection.RollbackTrans();
return -1;
}
}
else
{// 更新用户
if (m_strNote.IsEmpty())
strSQL.Format("UPDATE kv_user SET us_name='%s',us_manager=%s,us_password='%s',us_date='%s',us_enabled=%s,us_note = ' ' WHERE us_code = '%s'",
m_strUser, strManager, m_strPassword,
strDate, strEnabled,m_strCode);
else
strSQL.Format("UPDATE kv_user SET us_name='%s',us_manager=%s,us_password='%s',us_date='%s',us_enabled=%s,us_note='%s' WHERE us_code = '%s'",
m_strUser, strManager, m_strPassword,
strDate, strEnabled, m_strNote, m_strCode);
if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) //执行此sql语句
{
m_pParent->m_Connection.RollbackTrans();
return -1;
}
}
//写用户功能表
for (int i =0; i < m_Master.GetItemCount(); i++)
{
bChecked = m_Master.GetCheck(i);
lID = (long)m_Master.GetItemData(i);
strFunction = m_Master.GetItemText(i, 1);
if (bChecked == TRUE && lID == 0)
{//APPEND
strSQL.Format("INSERT INTO kv_user_tx(ut_code, ut_function) VALUES ('%s', %s)",
m_strCode, strFunction);
if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) //执行此sql语句
{
m_pParent->m_Connection.RollbackTrans();
return -1;
}
}
else if (bChecked == FALSE && lID != 0)
{//DELETE
strSQL.Format("DELETE FROM kv_user_tx WHERE ut_id = %d", lID);
if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) //执行此sql语句
{
m_pParent->m_Connection.RollbackTrans();
return -1;
}
}
}//end for
m_pParent->m_Connection.CommitTrans();
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -