本人正在用VC++6.0编一个数据库应用程序,使用CRecordSet类中的Delete()删除一条指定的记录,但如果紧接着用AddNew()添加一条记录,这条记录会添加到刚才被删除记录的位置上,而不是添加到表尾。是不是Delete()不能物理删除一条记录??Delete()后是否还要调用其它的函数才能移除记录,并让其下的所有记录都上移一个记录??急用啊,望高手告知,分不够的还可再加。

解决方案 »

  1.   

    MSDN文档中说明了Delete()后不需要加Update(),只有使用AddNew()和Edit()后才用
      

  2.   

    Delete()后调用MoveLast()函数试试
      

  3.   

    m_pSet->delete();
    CRecordsetstatus rstatus;
    m_pSet->Getstatus(rstatus);
    m_pSet->SetAbsolutinPosition(rstatus.mlcurrentRecord+2);
    就可将m_pSet指定记录的最后
      

  4.   

    不行,大家没有明白我的意思,我是想在删除一条记录后,马上添加一条记录到表尾,现在出现的问题是我删除记录后用AddNew()添加记录,记录是添加进去了,但不是添加到表尾,而是加到了刚删除记录的位置上。有没有办法可以解决??
      

  5.   

    对啊。你Delete()后调用MoveLast()函数,然后调用AddNew不就加到末尾了?
      

  6.   

    好象CRecordset类的Delete就是不管用,所以我都是用CDatabase::ExcuteSQL("delete...")来删除记录
      

  7.   

    我也试了SQL语句,可结果还是一样的
      

  8.   

    to 石头:MoveLast()也没有用啊,我觉得这和SQL Server的ODBC驱动有关,不知各位用的是什么,是ACCESS吗?
      

  9.   

    好象可以Delete,试试下面的例子程序
    http://www.yangning.com/cgi-bin/topic.cgi?forum=8&topic=1&show=0
      

  10.   

    加一句m_pSet->Requery();再AddNew()
      

  11.   

    to 王进:你的代码数据源是用SQL Server驱动程序的吗?