📄 mypredlg.cpp
字号:
m_pRecordset->PutCollect("Name",_variant_t(m_name));
m_pRecordset->PutCollect("Chinese", _variant_t((short)m_chinese));
m_pRecordset->PutCollect("Math",_variant_t((short)m_math));
m_pRecordset->PutCollect("English",_variant_t((short)m_english));
m_pRecordset->PutCollect("Physics",_variant_t((short)m_physics));
m_pRecordset->PutCollect("Chemistry",_variant_t((short)m_chemistry));
m_pRecordset->PutCollect("Polity",_variant_t((short)m_polity));
m_pRecordset->PutCollect("History",_variant_t((short)m_history));
m_pRecordset->PutCollect("Geography",_variant_t((short)m_geography));
m_pRecordset->PutCollect("Biology",_variant_t((short)m_biology));
m_pRecordset->PutCollect("All_grade",_variant_t((short)m_all_grade));
m_pRecordset->PutCollect("Avg_grade",_variant_t((float)m_avg_grade));
m_pRecordset->Update();
int nCurSel=m_list.GetSelectionMark();
ReadData();
m_list.SetHotItem(nCurSel);
// UpdateData(false);
// nClickList();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
////////////////////////////////////////////////
//函数:
//功能:删除数据
////////////////////////////////////////////////
void CMypreDlg::OnBTNdelete()
{
// TODO: Add your control notification handler code here
if(m_list.GetItemCount()==0)
return;
else if(m_list.GetSelectionMark()<0||m_list.GetSelectionMark()>m_list.GetItemCount())
m_list.SetSelectionMark(0);
if(m_number==""||m_name==""||m_list.GetSelectedCount()<1)
{
AfxMessageBox("请选择要删除的记录!");
return;
}
try
{
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
int nCurSel=m_list.GetSelectionMark();
m_list.DeleteItem(nCurSel);
if(nCurSel==0&&(m_list.GetItemCount()!=0))
m_list.SetHotItem(nCurSel);
else if(m_list.GetItemCount()!=0)
m_list.SetHotItem(nCurSel-1);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
SetIndex();///////////////////////////////////////////
ReadData();
}
///////////////////////////////////////////////////////////////////////////////
///函数:ReadData()
///功能:读出Access中的数据
///////////////////////////////////////////////////////////////////////////////
void CMypreDlg::ReadData()
{
_variant_t var,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13;
// CString varStr="";
CString number="";
CString name="";
CString id="";
CString chinese,math,english,physics,chemistry,polity,history,geography,biology;
CString all_grade,avg_grade;
m_list.DeleteAllItems();
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("List is empty!");
return;
}
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("id");
if(var.vt!=VT_NULL)
id=(LPCSTR)_bstr_t(var);
var1 = m_pRecordset->GetCollect("number");
if(var1.vt!=VT_NULL)
number=(LPCSTR)_bstr_t(var1);
var2 = m_pRecordset->GetCollect("name");
if(var2.vt!=VT_NULL)
name=(LPCSTR)_bstr_t(var2);
var3 = m_pRecordset->GetCollect("chinese");
if(var3.vt!=VT_NULL)
chinese=(LPCSTR)_bstr_t(var3);
var4 = m_pRecordset->GetCollect("math");
if(var4.vt!=VT_NULL)
math=(LPCSTR)_bstr_t(var4);
var5 = m_pRecordset->GetCollect("english");
if(var5.vt!=VT_NULL)
english=(LPCSTR)_bstr_t(var5);
var6 = m_pRecordset->GetCollect("physics");
if(var6.vt!=VT_NULL)
physics=(LPCSTR)_bstr_t(var6);
var7 = m_pRecordset->GetCollect("chemistry");
if(var7.vt!=VT_NULL)
chemistry=(LPCSTR)_bstr_t(var7);
var8 = m_pRecordset->GetCollect("polity");
if(var8.vt!=VT_NULL)
polity=(LPCSTR)_bstr_t(var8);
var9 = m_pRecordset->GetCollect("history");
if(var9.vt!=VT_NULL)
history=(LPCSTR)_bstr_t(var9);
var10 = m_pRecordset->GetCollect("geography");
if(var10.vt!=VT_NULL)
geography=(LPCSTR)_bstr_t(var10);
var11 = m_pRecordset->GetCollect("biology");
if(var11.vt!=VT_NULL)
biology=(LPCSTR)_bstr_t(var11);
var12 = m_pRecordset->GetCollect("all_grade");
if(var12.vt!=VT_NULL)
all_grade=(LPCSTR)_bstr_t(var12);
var13 = m_pRecordset->GetCollect("avg_grade");
if(var13.vt!=VT_NULL)
avg_grade=(LPCSTR)_bstr_t(var13);
int nCount = m_list.GetItemCount();
int nItem = m_list.InsertItem (nCount,_T(""));
m_list.SetItemText (nItem,0,id);
m_list.SetItemText (nItem,1,number);
m_list.SetItemText (nItem,2,name);
m_list.SetItemText (nItem,3,chinese);
m_list.SetItemText (nItem,4,math);
m_list.SetItemText (nItem,5,english);
m_list.SetItemText (nItem,6,physics);
m_list.SetItemText (nItem,7,chemistry);
m_list.SetItemText (nItem,8,polity);
m_list.SetItemText (nItem,9,history);
m_list.SetItemText (nItem,10,geography);
m_list.SetItemText (nItem,11,biology);
m_list.SetItemText (nItem,12,all_grade);
m_list.SetItemText (nItem,13,avg_grade);
m_pRecordset->MoveNext();
}
// m_list.SetHotItem(0);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
///函数:SelChangeListen()
///功能:光标选择
/////////////////////////////////////////////////////////////////////////////
//void CMypreDlg::SelChangeListen()
//{
//}
BOOL CMypreDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
// 关闭记录集
m_pRecordset->Close();
m_pRecordset = NULL;
return CDialog::DestroyWindow();
}
void CMypreDlg::OnItemclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CMypreDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//HCURSOR hCursor = ::LoadCursor(NULL, IDC_APPSTARTING);
//m_list.SetHotCursor(hCursor);
int curSel=m_list.GetSelectionMark();
_variant_t var;
CString varStr="";
if(curSel<0)
return;
try
{
m_pRecordset->MoveFirst();
m_pRecordset->Move(long(curSel));
var = m_pRecordset->GetCollect("Number");
if(var.vt!=VT_NULL)
m_number=(LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Name");
if(var.vt!=VT_NULL)
m_name=(LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Chinese");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_chinese=atoi(varStr);}
var = m_pRecordset->GetCollect("Math");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_math=atoi(varStr);}
var = m_pRecordset->GetCollect("English");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_english=atoi(varStr);}
var = m_pRecordset->GetCollect("Physics");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_physics=atoi(varStr);}
var = m_pRecordset->GetCollect("Chemistry");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_chemistry=atoi(varStr);}
var = m_pRecordset->GetCollect("Polity");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_polity=atoi(varStr);}
var = m_pRecordset->GetCollect("History");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_history=atoi(varStr);}
var = m_pRecordset->GetCollect("Geography");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_geography=atoi(varStr);}
var = m_pRecordset->GetCollect("Biology");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_biology=atoi(varStr);}
var = m_pRecordset->GetCollect("All_grade");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_all_grade=atoi(varStr);}
var = m_pRecordset->GetCollect("Avg_grade");
if(var.vt!=VT_NULL)
{ varStr=(LPCSTR)_bstr_t(var);
m_avg_grade=atof(varStr);}
/// SetIndex();///////////////////////
UpdateData(false);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
*pResult = 0;
}
//////////////////////////////////////////////////////////
//函数:
//功能:排序
//////////////////////////////////////////////////////////
void CMypreDlg::OnBTNsort()
{
// TODO: Add your control notification handler code her
CString Clum[]={"Geography","Chemistry","History","Biology","Math","Physics","English"
,"Chinese","Polity","All_grade"};
// CString text="";
int nsel=m_combo.GetCurSel();
// m_combo.GetLBText( nsel , text);
if(nsel==CB_ERR)
{ AfxMessageBox("请选择按那一科成绩排序!");
return;
}
CString text=Clum[nsel];
CString SQLtext="SELECT * FROM StudentGrade ORDER BY "+text+" DESC";
//UpdateData();
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(_variant_t(SQLtext), // 查询StudentGrade表中所有字段
theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
SetIndex();//////////////////////////////////////
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);
// return -1;
}
UpdateData(false);
ReadData();
// DWORD nCurSel=nsel+3;
// m_list.SortItems((PFNLVCOMPARE)ComPareFun, nCurSel);
}
void CMypreDlg::OnSelchangeCombo()
{
// TODO: Add your control notification handler code here
}
void CMypreDlg::OnRADIOnumber()
{
// TODO: Add your control notification handler code here
m_radio=0;
UpdateData(false);
}
void CMypreDlg::OnRADIOname()
{
// TODO: Add your control notification handler code here
m_radio=1;
UpdateData(false);
}
///////////////////////////////////////////////////////////
//函数:
//功能:查找数据
///////////////////////////////////////////////////////////
void CMypreDlg::OnBTNquery()
{
// TODO: Add your control notification handler code here
int i;
// LVFINDINFO info;
// info.flags = LVFI_PARTIAL|LVFI_STRING|LVFI_PARAM;
UpdateData();
if(m_query=="")
{
AfxMessageBox("请输入要查找的数据!");
return;
}
if(m_radio==0)
{
// info.lParam=1;
i=1;
}
else if(m_radio==1)
{
// info.lParam=2;
i=2;
}
// info.psz = m_query;
for(int n=0;n<=(m_list.GetItemCount());n++)
{
CString text=m_list.GetItemText(n,i);
if(strcmp(m_query,text)==0)
{
// if((n=m_list.FindItem(&info))!=-1)
// {
m_list.SetHotItem(n);
return;
}
// }
// else
// {
}
AfxMessageBox("没找到你要查找的记录!");
return;
// }
UpdateData(false);
}
void CMypreDlg::OnOK()
{
}
void CMypreDlg::OnBTN_exit()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CMypreDlg::OnBTNabout()
{
// TODO: Add your control notification handler code here
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
//////////////////////////////////////////////////////////////
//函数:
//功能:对ID进行设置
//////////////////////////////////////////////////////////////
void CMypreDlg::SetIndex()
{
// m_pRecordset.CreateInstance(__uuidof(Recordset));
UpdateData();
int i=1;
try{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("List is empty!");
return;
}
while(i<=m_list.GetItemCount())
{
m_pRecordset->PutCollect("ID",_variant_t((short)i));
i++;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
// m_pRecordset->Update();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -