【Help】:ODBC数据库 删除记录后 刷新列表框时提示:试图越过数据的有效存贮空间,该如何解决

【Help】:ODBC数据库 删除记录后 刷新列表框时提示:试图越过数据的有效存贮空间
我写了个学生成绩管理系统,里面有列表框,有列表框刷新按钮,有删除按钮。

但是,我发现当我删除了一个指定的记录后,再按刷新按钮刷新时,就会提示“试图越过数据的有效存贮空间”的错误,
想了很久也没明白为什么。

新手求助,希望这里有人帮忙,麻烦告诉我哪里有问题,最好是帮我改改,谢啦!

附代码(我是用ODBC数据源的):

删除按钮的代码:
void CStudentView::OnButtonDelete() 
{
// TODO: Add your control notification handler code here
m_pSet->Requery(); 
UpdateData(TRUE);
if(m_pSet->IsOpen())
m_pSet->Close();
m_pSet->m_strFilter.Format("姓名='%s'",m_name);
m_pSet->Open();
try
{
m_pSet->Delete();

if(!m_pSet->IsEOF())
m_pSet->MoveNext();
else
m_pSet->MoveLast();

UpdateData(FALSE);
m_pSet->Requery();
RefreshData();

}
catch(CDBException* pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}


刷新列表框的的代码:
void CStudentView::OnButtonReflash() 
{
// TODO: Add your control notification handler code here
m_pSet->Requery();
m_listctrl.DeleteAllItems();
CString s;
int i=0;
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
s.Format("%s",m_pSet->m_column7);
m_listctrl.InsertItem(i,s);
m_listctrl.SetItemText(i,1,m_pSet->m_column6);

  s.Format("%s",m_pSet->m_column1);
m_listctrl.SetItemText(i,2,s);

s.Format("%s",m_pSet->m_column4);
m_listctrl.SetItemText(i,3,s);

s.Format("%.1f",m_pSet->m_column3);
m_listctrl.SetItemText(i,4,s);

s.Format("%.1f",m_pSet->m_column5);
m_listctrl.SetItemText(i,5,s);

s.Format("%.1f",m_pSet->m_column8);
m_listctrl.SetItemText(i,6,s);

m_pSet->MoveNext();
i++;
}

}

是不是数据库指针m_pSet指向的问题啊?但是我删除了一个数据后,调用OnButtonReflash()时不是让m_pSet移到第一个记录的位置了吗?怎么还会提示试图越过数据的有效存贮空间的? 
如果需要全部源程序,留个邮箱,我发过去给你看看。

------解决方案--------------------
换个写法试试。用getitemfiledvalue();
刷新就相当于读取信息嘛。你也可以在删除的那个地方UpdateData(TRUE);
不知道我这种理解是正确的不?我也才学这个不久