我是个新手,我是用CDAO做的一个数据库,它和对话框中的ListCtrl是关联在一起的
我在ListCtrl中想删除多条记录,但是数据库中的相对的记录我也想给删除,
但是只能删除一个记录!为什么呢?下面是删除按钮的代码!
void WriteCard::OnDeleteButton() 
{

db.Close();
CString st;
st.Format("mj.mdb");
db.Open(st,false,false,NULL);
rs->Close();
int i,iState;
int nItemSelected=m_list.GetSelectedCount();//所选表项数
int nItemCount=m_list.GetItemCount();//表项总数
if(nItemSelected<1) return;
for(i=nItemCount-1;i>=0;i--)
{
iState=m_list.GetItemState(i,LVIS_SELECTED);
if(iState!=0)
{
CString str,strstatus;
strstatus=m_list.GetItemText(i,0);
strstatus.TrimLeft();
strstatus.TrimRight();

str.Format("select * from state where tatus='%'",strstatus);
rs->Open(2,str);
rs->Delete();
m_list.DeleteItem(i);

}
}
rs->Close();
db.Close();
}

解决方案 »

  1.   

    这么写这句话
    rs->Open(2,str);
    rs->Delete();
    改为
    rs->Open(2,str);
    rs->MoveFirst();
    while(!rs->IsEOF())
      rs->Delete();
      

  2.   

    同意楼上的,不过其中好象有点小错误
    改为
    rs->Open(2,str);
    if (GetRecordCount( )>0)
    {
         rs->MoveFirst();
         while(!rs->IsEOF())
         {
             rs->Delete();
             rs->MoveNext();
         }
    }
    应该加上异常处理
    顺便提个建议,尽量不要用DAO,已经快淘汰的技术了,很容易出错。用ADO或ODBC吧。
      

  3.   

    两位大哥,不行啊!我用你们的方法试过了,还是在数据库里只能删除一个记录
    而在listctrl中可以全部删除,如果重新加载一次,会有一个记录恢复过来,
    能不能再帮帮我呢?