m_pRecordset->Delete(adAffectCurrent);来删除当前纪录,是否马上删除该纪录,还是该记录只做了删除标记,等Update()后才真正删除。若马上删除纪录,这m_pRecordset指针指向那里,是否指向删除纪录的下条纪录,还有不知为啥我的程序在删除时,在用Move移动时,总会出现“行句柄引用一个已删除的行或被标记删除的行“ ,谢谢了。
解决方案 »
- 在多行Edit里,如果得到行前光标所有在的行数?
- 请问怎么能连接到没有固定ip的服务器?
- vc串口编程比其他语言如何?
- 我看到有的系统服务程序,没有结束,手机和禁用,不知道怎么弄的?
- 为什么弹出的菜单是灰色的?
- 请教大侠,在ListCtrl中可以添加标准的控件如复选按钮等,我有一个注册的自定义的控件,是否也可以添加到ListCtrl中?
- CString类型与LPTSTR类型之间如何转换?
- 转换问题-----请高手回答
- 哪里有屏幕保护源程序下载,谢谢!
- 关于CTypedPtrList<CObList,CLis*> m_Lis;的一个简单问题?高手也要来!
- 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()来查找对应纪录,可是不大会用。