📄 setdlg.cpp
字号:
// SetDlg.cpp : implementation file
//
#include "stdafx.h"
#include "FPSys.h"
#include "SetDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetDlg dialog
int m_PreID;
extern int m_iSetType;
extern CDatabase m_db;
extern CString FromIDToName(CString tabName,CString attr,int id); //通过编号获得名字
extern int FromNameToID(CString tabName,CString attr,CString name); //通过名字获得编号
CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetDlg)
m_strName = _T("");
m_strID = _T("");
//}}AFX_DATA_INIT
}
void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetDlg)
DDX_Control(pDX, IDC_COMBO_DEPART, m_cDepart);
DDX_Control(pDX, IDC_LIST_SHSET, m_listShSet);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDX_Text(pDX, IDC_EDIT_ID, m_strID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
//{{AFX_MSG_MAP(CSetDlg)
ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)
ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_NOTIFY(NM_CLICK, IDC_LIST_SHSET, OnClickListShset)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetDlg message handlers
void CSetDlg::OnBtnMod()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strID.IsEmpty())
return;
int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
if(nItem==-1)
{
AfxMessageBox("没有选择要修改的信息!");
return;
}
if(m_strID.IsEmpty() || m_strName.IsEmpty())
{
MessageBox("请完整填写信息!");
return;
}
int id=atoi(m_strID);
TRY
{
int departId;
CString departName;
CRecordset rs(&m_db);
CString sql;
switch(m_iSetType)
{
case 1:
sql.Format("select * from tab_Depart where DepartID=%d and DepartName='%s'",
id,m_strName);
break;
case 2:
m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
departId=FromNameToID("tab_Depart","DepartName",departName);
sql.Format("Select *from tab_Class where ClassID=%d and ClassName='%s' and DepartID=%d",
id,m_strName,departId);
break;
case 3:
sql.Format("select * from tab_Course where CourseID=%d and CourseName='%s'",
id,m_strName);
break;
case 4:
sql.Format("select * from tab_Classroom where ClassroomID=%d and Classroom='%s'",
id,m_strName);
break;
}
rs.Open(CRecordset::dynaset,sql);
if(!rs.IsEOF())
{
AfxMessageBox("该编号已经存在!");
return;
}
rs.Close();
switch(m_iSetType)
{
case 1:
sql.Format("update tab_Depart set DepartID=%s,DepartName='%s'"
"where DepartID=%d",m_strID,m_strName,m_PreID);
break;
case 2:
// m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
// departId=FromNameToID("tab_Depart","DepartName",departName);
sql.Format("update tab_Class set ClassID=%s,ClassName='%s',DepartID=%d"
"where ClassID=%d",m_strID,m_strName,departId,m_PreID);
break;
case 3:
sql.Format("update tab_Course set CourseID=%s,CourseName='%s'"
"where CourseID=%d",m_strID,m_strName,m_PreID);
break;
case 4:
sql.Format("update tab_Classroom set ClassroomID=%s,ClassroomName='%s'"
"where ClassroomID=%d",m_strID,m_strName,m_PreID);
break;
}
TRACE(sql);
m_db.ExecuteSQL(sql);
m_listShSet.SetItemText(nItem,0,m_strID);
m_listShSet.SetItemText(nItem,1,m_strName);
if(m_iSetType==2)
m_listShSet.SetItemText(nItem,2,departName);
}
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
}
void CSetDlg::OnBtnDel()
{
// TODO: Add your control notification handler code here
int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
if(-1==nItem)
{
AfxMessageBox("请选择要删除的数据");
return;
}
CString sql;
int id;
id=atoi(m_listShSet.GetItemText(nItem,0));
TRY{
switch(m_iSetType)
{
case 1:
sql.Format("delete from tab_Depart where DepartID=%d",m_PreID);
break;
case 2:
sql.Format("delete from tab_Class where ClassID=%d",m_PreID);
break;
case 3:
sql.Format("delete from tab_Course where CourseID=%d",m_PreID);
break;
case 4:
sql.Format("delete from tab_Classroom where ClassroomID=%d",m_PreID);
break;
}
TRACE(sql);
m_db.ExecuteSQL(sql);
m_listShSet.DeleteItem(nItem);
}
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
}
void CSetDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strID.IsEmpty()||m_strName.IsEmpty())
{
MessageBox("请完整填写信息!");
return;
}
if(m_strID.GetLength()>5)
{
MessageBox("你输入的编号的长度太了。\r\n请输入小于6位的编号!");
m_strID.Empty();
UpdateData(FALSE);
return;
}
CString id,name,m_strDepName;
id=m_strID;name=m_strName;
switch(m_iSetType)
{
case 1:
InsertDb("tab_Depart",id,name);
break;
case 2:
if(m_cDepart.GetCurSel()!=CB_ERR)
m_cDepart.GetLBText(m_cDepart.GetCurSel(),m_strDepName);
else
{
MessageBox("请选择系别!");
return;
}
if(m_strID.IsEmpty()||m_strName.IsEmpty()||m_strDepName.IsEmpty())
{
MessageBox("请完整填写信息!");
return;
}
InsertClassDb(m_strID,m_strName,m_strDepName);
break;
case 3:
InsertDb("tab_Course",id,name);
break;
case 4:
InsertDb("tab_Classroom",id,name);
break;
}
int tempId;
tempId=atoi(m_strID);
m_strID.Format("%d",++tempId);
m_strName.Empty();
UpdateData(FALSE);
}
void CSetDlg::OnClickListShset(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
if(nItem!=-1)
{
CString id=m_listShSet.GetItemText(nItem,0);
m_PreID=atoi(id);
CString name=m_listShSet.GetItemText(nItem,1);
GetDlgItem(IDC_EDIT_ID)->SetWindowText(id);
GetDlgItem(IDC_EDIT_NAME)->SetWindowText(name);
if(2==m_iSetType)
{
CString name2=m_listShSet.GetItemText(nItem,2);
int i,iCount;
iCount=m_cDepart.GetCount();
for(i=0;i<iCount;i++)
{
CString str1;
m_cDepart.GetLBText(i,str1);
CString str;
if(strcmp(name2,str1)==0)
break;
}
m_cDepart.SetCurSel(i);
}
GetDlgItem(IDC_BTN_ADD)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_MOD)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_DEL)->EnableWindow(TRUE);
}
*pResult = 0;
}
void CSetDlg::InsertClassItem(CString id1, CString name, CString id2)
{
int nIndex=m_listShSet.GetItemCount();
LV_ITEM lvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
/* CString temp;
temp.Format("%d",id);*/
lvItem.pszText=(char*)(LPCTSTR)id1;
m_listShSet.InsertItem(&lvItem);
m_listShSet.SetItemText(nIndex,1,name);
m_listShSet.SetItemText(nIndex,2,id2);
}
void CSetDlg::InsertClassDb(CString id1, CString name, CString departName)
{
CString sql;
CRecordset rs(&m_db);
TRY{
sql.Format("select *from tab_Class where ClassID=%s",id1);
rs.Open(CRecordset::dynaset,sql);
if(!rs.IsEOF())
{
MessageBox("该编号已经存在!");
m_strID.Empty();
UpdateData(FALSE);
return;
}
rs.Close();
sql.Format("select *from tab_Class where ClassName='%s'",name);
rs.Open(CRecordset::dynaset,sql);
if(!rs.IsEOF())
{
MessageBox("该名称已经存在!");
m_strName.Empty();
UpdateData(FALSE);
return;
}
int departId;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -