m_pRecordset->Delete(adAffectCurrent);来删除当前纪录,是否马上删除该纪录,还是该记录只做了删除标记,等Update()后才真正删除。若马上删除纪录,这m_pRecordset指针指向那里,是否指向删除纪录的下条纪录,还有不知为啥我的程序在删除时,在用Move移动时,总会出现“行句柄引用一个已删除的行或被标记删除的行“ ,谢谢了。
解决方案 »
- VC操作ini文件的小问题
- 半夜啦 达人们该起床啦~~远程线程注入有什么作用?
- 我现在想关闭原来的那个对话框,应该怎么实现?
- 用UDP发送数据包可不可以把服务器和客户端写在一起(一个工程)即是服务器又是客户端.
- 同一个socket在不同的线程中同时recv()?在某一时刻,可以控制由哪个线程接收?
- 请教一个关于CHtmlView的问题
- LoadXml失败的问题
- 请问一个概念:回调函数CALLBACK的目的,作用,用法,用途
- C++ 如何获得其他exe程序的视图句柄
- 一个c写的简单dll,只有dll文件和函数名,如何在c++中调用?
- Visual Studio初始化有问题无法继续工作,恳请您来帮忙!
- 如何编写自定义AppWizard
用MoveNext()函数式式
m_pRecordset->Delete(adAffectCurrent)删除当前纪录,当前纪录个字段设为NULL,指针还指在该纪录,用MoveNext()函数可以移开该指针
/**************************************************************
响应"证卡管理"->"撤户办理(&X)"
历史纪录:历史纪录:andy-24/5/2002
***************************************************************/
void CMyView::OnCardRelease()
{
m_strTableName=_T("用户信息");//设置当前操作的数据库表名称
//监测dao数据库对象的有效性,并在纪录集对象打开时关闭该记录集
if(!m_pDatabase->IsOpen())
return;
if(!m_pRecordset)
return;
if(m_pRecordset->IsOpen())
m_pRecordset->Close();
/////////////////////////////////////////////////////////
CCarddeleteuser dlg;
if(dlg.DoModal()!=IDOK)
return;
CString userid=dlg.m_userid;
//AfxMessageBox(userid);
CString strSql,str;
//////////////////////////////////////////////////////////
//判断是否是合法用户
strSql.Format("select * from 用户信息");
m_pRecordset->Open(dbOpenDynaset,strSql);
str.Format("读者号='%s'",userid);
if(!m_pRecordset->FindFirst(str))
{
str.Format("该用户未注册或输入错误,请确认输入!");
AfxMessageBox(str);
return;
}
m_pRecordset->Close();
//判断是否借有书
strSql.Format("select * from %s where 读者号='%s'",m_strTableName,userid);
m_pRecordset->Open(dbOpenDynaset,strSql);
str.Format("借阅书目个数>0");
if(m_pRecordset->FindFirst(str))
{
AfxMessageBox("该用户还借有图书,不能注销!");
return;
}
else
{
strSql.Format("delete from %s where 读者号='%s'",m_strTableName,userid);
}
try
{
if(m_pDatabase->CanUpdate())
m_pDatabase->Execute(strSql);
}
catch(CDaoException *e)
{
e->ReportError();
e->Delete();
return;
}
OnZhbbUserall();}
delete from...简单方便,又通用,不必细究特性!!!
数据库里的数据,
m_CollegeList.DeleteItem(m_nCurrentSel);
int count = m_CollegeList.GetItemCount();
if(count <= m_nCurrentSel)
m_nCurrentSel = count-1;
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->MoveNext();
m_pRecordset->Update()\\担心
m_pRecordset->Move(m_nCurrentSel,_variant_t((long)adBookFirst));
其中m_nCurrentSel是表示当前纪录,用这种方式构成列表和数据库的对应
m_CollegeList 是CListCtl,我怕用了m_pRecordset->Update(),会导致列表控件上的列表,和数据库上的数据纪录不会一一对应,请高人指点,谢谢。
我打算用m_pRecordset->Find()来查找对应纪录,可是不大会用。