m_pRecordset->Delete(adAffectCurrent);来删除当前纪录,是否马上删除该纪录,还是该记录只做了删除标记,等Update()后才真正删除。若马上删除纪录,这m_pRecordset指针指向那里,是否指向删除纪录的下条纪录,还有不知为啥我的程序在删除时,在用Move移动时,总会出现“行句柄引用一个已删除的行或被标记删除的行“  ,谢谢了。

解决方案 »

  1.   

    m_pRecordset->Delete(adAffectCurrent);删除当前纪录的各字段设为NULL
    用MoveNext()函数式式
      

  2.   

    When moving through a recordset, deleted records may not be skipped
    m_pRecordset->Delete(adAffectCurrent)删除当前纪录,当前纪录个字段设为NULL,指针还指在该纪录,用MoveNext()函数可以移开该指针
      

  3.   

    用MoveNext()函数可以移开该指针后,是不是该记录就删除了,还是纪录字段为NULL保存在纪录及中,谢谢了
      

  4.   

    用Sql多好,简单又方便
    /**************************************************************
    响应"证卡管理"->"撤户办理(&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();}
      

  5.   

    用MoveNext()函数可以移开该指针后,是不是该记录就删除了,还是纪录字段为NULL保存在纪录及中,谢谢了
      

  6.   

    字段为NULL!!!需进一步操作
      

  7.   

    恩, 用SQL
    delete from...简单方便,又通用,不必细究特性!!!
      

  8.   

    我是用ClistCtr表显示纪录,单删除ClistCtr表中的记录时,也同时删除
    数据库里的数据,
    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()来查找对应纪录,可是不大会用。