📄 studentinfodlg.cpp
字号:
if(strcmp(sex,str)==0)
break;
}
m_cSex.SetCurSel(i);
CString departName=m_listStudentInfo.GetItemText(nItem,3); //设置当前系别
iCount=m_cDepart.GetCount();
for(i=0;i<iCount;i++)
{
CString str;
m_cDepart.GetLBText(i,str);
if(strcmp(departName,str)==0)
break;
}
m_cDepart.SetCurSel(i);
m_iDepFrm=1;
RefreshClass(departName); //通过系名来更新班级名
CString className=m_listStudentInfo.GetItemText(nItem,4); //设置当前班级
iCount=m_cClass.GetCount();
for(i=0;i<iCount;i++)
{
CString str;
m_cClass.GetLBText(i,str);
if(strcmp(className,str)==0)
break;
}
m_cClass.SetCurSel(i);
}
*pResult = 0;
}
BOOL CStudentInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_cSDepart.AddString("所有系别");
m_cSDepart.SetCurSel(0);
m_cSClass.AddString("所有班级");
m_cSClass.SetCurSel(0);
DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|
LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;
m_listStudentInfo.SetExtendedStyle(dwExStyle);
m_listStudentInfo.InsertColumn(0,"学号",LVCFMT_CENTER,70);
m_listStudentInfo.InsertColumn(1,"姓名",LVCFMT_CENTER,80);
m_listStudentInfo.InsertColumn(2,"性别",LVCFMT_CENTER,60);
m_listStudentInfo.InsertColumn(3,"系别",LVCFMT_CENTER,120);
m_listStudentInfo.InsertColumn(4,"班级",LVCFMT_CENTER,100);
m_listStudentInfo.InsertColumn(5,"备注",LVCFMT_CENTER,80);
m_listStudentInfo.InsertColumn(6,"考勤号",LVCFMT_CENTER,80);
m_cSSex.AddString("男&女");
m_cSSex.AddString("男");
m_cSSex.AddString("女");
m_cSSex.SetCurSel(0);
// GetDlgItem(IDC_EDIT_SID)->ShowWindow(SW_HIDE);
// GetDlgItem(IDC_EDIT_SNAME)->ShowWindow(SW_HIDE);
// GetDlgItem(IDC_BTN_QUERY)->ShowWindow(SW_HIDE);
InitCtrlData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStudentInfoDlg::InitCtrlData()
{
m_cSex.AddString("男");
m_cSex.AddString("女");
m_cSex.SetCurSel(0);
if(!m_db.IsOpen())
{
MessageBox("数据没有打开!");
return;
}
CString sql;
CRecordset rs(&m_db);
//下面通过获得数据库中的数据初始化控件
TRY{
sql.Format("select *from tab_depart");
rs.Open(CRecordset::dynaset,sql);
while(!rs.IsEOF()){ //显示系别控件
int id;
CString temp,name;
CDBVariant var;
rs.GetFieldValue((short)0,var,SQL_C_SLONG);
if(var.m_dwType!=DBVT_NULL)
id=var.m_iVal;
var.Clear();
temp.Format("%d",id);
rs.GetFieldValue(1,name);
m_cDepart.AddString(name);
m_cSDepart.AddString(name);
rs.MoveNext();
}
rs.Close();
sql.Format("select *from tab_Class");
rs.Open(CRecordset::dynaset,sql);
while(!rs.IsEOF()){
int id;
CString temp,name;
CDBVariant var;
rs.GetFieldValue((short)0,var,SQL_C_SLONG);
if(var.m_dwType!=DBVT_NULL)
id=var.m_iVal;
var.Clear();
temp.Format("%d",id);
rs.GetFieldValue(1,name);
// m_cClass.AddString(name);
m_cSClass.AddString(name);
rs.MoveNext();
}
rs.Close();
sql.Format("select *from tab_Student order by sId");
rs.Open(CRecordset::dynaset,sql);
while(!rs.IsEOF())
{
int tempId;
CString id,tempName,tempSex,tempId2,tempId3,tempId4,tempMemo;
CDBVariant var;
rs.GetFieldValue((short)0,var,SQL_C_SLONG);
if(var.m_dwType!=DBVT_NULL)
tempId=var.m_lVal;
var.Clear();
id.Format("%d",tempId);
// MessageBox(id);return;
rs.GetFieldValue(1,tempName);
rs.GetFieldValue(2,tempSex);
// rs.GetFieldValue(3,tempId2); //系别编号
rs.GetFieldValue(3,tempId3); //班级编号
rs.GetFieldValue(4,tempId4); //考勤号
rs.GetFieldValue(5,tempMemo);
//由班级编号获得系编号,再由系编号获取系名称
tempId2=ReturnDepartID(tempId3);
CString sClassName;
CString sDepartName;
if(tempId2!=-1)
{
sDepartName=FromIDToName("tab_Depart","DepartID",atoi(tempId2));
sClassName=FromIDToName("tab_Class","ClassID",atoi(tempId3));
}
// MessageBox(sDepartName);return;
InsertToItem(id,tempName,tempSex,sDepartName,sClassName,tempMemo,tempId4);
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
}
CString CStudentInfoDlg::ReturnDepartID(CString ClassID)
{
CRecordset rs(&m_db);
CString sql;
sql.Format("Select DepartID from tab_Class where ClassID=%d",atoi(ClassID));
rs.Open(CRecordset::dynaset,sql);
if(!rs.IsEOF())
{
int departId;
CString sId;
CDBVariant var;
rs.GetFieldValue((short)0,var,SQL_C_SLONG);
if(var.m_dwType!=DBVT_NULL)
departId=var.m_lVal;
var.Clear();
sId.Format("%d",departId);
return sId;
}
return -1;
}
void CStudentInfoDlg::InsertToDb(CString id, CString name, CString sex, CString depart, CString classes, CString memo)
{
if(!m_db.IsOpen())
return;
int tempId,tempId2,tempId3;
tempId=atoi(id);
TRY{
CRecordset rs(&m_db);
CString sql;
sql.Format("select *from tab_Student where sID=%d",tempId);
rs.Open(CRecordset::dynaset,sql);
if(!rs.IsEOF())
{
MessageBox("该学号已在存在!");
m_strID.Empty();
return;
}
rs.Close();
tempId2=FromNameToID("tab_Depart","DepartName",depart);
tempId3=FromNameToID("tab_Class","ClassName",classes);
sql.Format("insert into tab_Student(sID,sName,sSex,ClassID,AttendID,Memo) "
"values('%d','%s','%s',%d,%d,'%s')",
tempId,name,sex,tempId3,atoi(""),memo);
TRACE(sql);
m_db.ExecuteSQL(sql);
InsertToItem(id,name,sex,depart,classes,memo,_T(""));
}
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 CStudentInfoDlg::InsertToItem(CString id, CString name, CString sex, CString depart, CString classes, CString memo, CString id2)
{
if(strcmp(id2,"0")==0)
id2=_T("");
int nIndex=m_listStudentInfo.GetItemCount();
LV_ITEM lvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
lvItem.pszText=(char*)(LPCTSTR)id;
m_listStudentInfo.InsertItem(&lvItem);
m_listStudentInfo.SetItemText(nIndex,1,name);
m_listStudentInfo.SetItemText(nIndex,2,sex);
m_listStudentInfo.SetItemText(nIndex,3,depart);
m_listStudentInfo.SetItemText(nIndex,4,classes);
m_listStudentInfo.SetItemText(nIndex,5,memo);
m_listStudentInfo.SetItemText(nIndex,6,id2);
}
void CStudentInfoDlg::RefreshClass(CString departname)
{
int departId=FromNameToID("tab_Depart","DepartName",departname);
CString sql;
sql.Format("Select *from tab_Class where DepartID=%d",departId);//选择属于某个系别的所有班级
CString sCount;
if(m_iDepFrm==1) //删除更新模块中的班级数据
{
int iCount=m_cClass.GetCount();
for(int i=0;i<iCount;i++)
{
m_cClass.DeleteString(0); //每删除一个,下一个就又变为第一个
}
}
else //删除查询模块中的班级数据
{
if(strcmp(departname,"所有系别")==0)//如果选定的是“所有系别”,更新查询条件
sql.Format("Select *from tab_Class");
int iCount=m_cSClass.GetCount();
for(int i=0;i<iCount;i++)
{
m_cSClass.DeleteString(0); //每删除一个,下一个就又变为第一个
}
m_cSClass.AddString("所有班级");
}
TRY{
CRecordset rs(&m_db);
rs.Open(CRecordset::dynaset,sql);
if(rs.IsEOF()) //所选系别没有班级
{
if(m_iDepFrm==1)
m_cClass.Clear();
else
m_cSClass.Clear();
}
while(!rs.IsEOF())
{
CString className;
rs.GetFieldValue(1,className);
if(m_iDepFrm==1)
m_cClass.AddString(className);
else
m_cSClass.AddString(className);
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
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -