关于m_pSet->Update();m_pSet->Requery()的有关问题,请高手指教

关于m_pSet->Update();m_pSet->Requery()的问题,请高手指教啊
我根据按一本讲MFC的书写的编的程序,是数据库记录编辑的程序,有几点不明白请高手指教
void CEx_AddressView::OnRecAdd() 
{
// TODO: Add your control notification handler code here
CPersonDlg dlg;//弹出了cpersondlg的一个对象,也就是那个对话框
if(dlg.DoModal()==IDOK)//按下ok按钮
{
   m_pSet->AddNew();
   m_pSet->m___3=dlg.m_strAddress;
   m_pSet->m___4=dlg.m_strMail;
   m_pSet->m___1=dlg.m_strName;
   m_pSet->m___2=dlg.m_strType;
   m_pSet->Update();
   m_pSet->Requery();
   UpdateData(false);//自己加的,不加的话会出现一种奇怪的现象,如在a,b,c,后添加d,会出现c,b,c,d的现象,我不明白为什么? }
}

void CEx_AddressView::OnRecDel() 
{
// TODO: Add your control notification handler code here
CRecordsetStatus status;
m_pSet->GetStatus(status);
m_pSet->Delete();

if(status.m_lCurrentRecord==0)
m_pSet->MoveNext();
else
m_pSet->MoveFirst();

    
m_pSet->Requery();//自己加的,不加它会显示<已删除>,为什么?

UpdateData(false);//把字段传给控件,即在控件中显示
}
还有UpdateData(false);和m_pSet->Update();有什么区别?
m_pSet->Requery()的作用呢?请高手指教,刚刚学MFC,很多东西不明白。。。
m_pSet->Requery(), m_pSet->Update();

------解决方案--------------------
在a,b,c,后添加d,会出现c,b,c,d的现象,这个用order by强制排序来控制。
第二个问题就不清楚了。
------解决方案--------------------
看看这个应该会对你有帮助
http://blog.****.net/wuyuan2011woaini/article/details/7602065