这个我从网上找了些资料看了,结果收获还是不多,比较乱,那位给点提示

解决方案 »

  1.   

    m_listcontrol.DeleteItem(m_listcontrol.GetNextItem(-1,LVNI_SELECTED));
    记得给分啊
      

  2.   

    awperpvip 
    awperpvip 
    等 级:
     发表于:2008-01-18 16:07:412楼 得分:0 
    m_listcontrol.DeleteItem(m_listcontrol.GetNextItem(-1,LVNI_SELECTED)); 
    记得给分啊 
    //你这个只能删除ListControl中记录,那数据库里的数据怎么删除呢
      

  3.   

    m_pRecordset->Delete() 具体怎么用?
      

  4.   

    楼主,你的思路可以换一下,删除的时候,把记录集里面的记录删除了,再把记录重新加载到控件不就行了?//可以,但是为了使用者方便,那也得先把选中的记录提取出来,找到数据库中记录删除后,再更新一次看你什么数据库啊//简单的access数据库
      

  5.   

    m_pRecordset->Delete(m_listcontrol.GetNextItem(-1,LVNI_SELECTED));
    m_pRecordset->Requery(adOptionUnspecified);
    m_listcontrol->DeleteAllItems();
    重新添加记录的代码
      

  6.   

    //建立一个指针,用以操作ListCtrl输出用户记录
    CListCtrl *ctl;
    ctl=&GetListCtrl();
    //寻找当前选中的记录的位置
    POSITION pos=ctl->GetFirstSelectedItemPosition();
    if (pos==NULL)
    {
    //如果没有选择记录,则提示并退出
    AfxMessageBox("请先选中一条记录!");
    return;
    }
    //获取当前记录的位置游标
    int m_CurUser=ctl->GetNextSelectedItem(pos);
    //
    //创建一个CUserDlg的实例
    CUserDlg m_UserDlg;
    //创建一个临时字符串来保存当前用户信息
    char chrTemp[21] = {'\0'};
    //取得用户ID
    ctl->GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));
    //将用户ID转换为整数保存,后面的数据库操作将以此为匹配条件
    int m_CurUserID = atoi(chrTemp); //创建CUserRecordSet的实例
    CUserRecordSet m_UserRecordSet; try
    {
    if(m_UserRecordSet.IsOpen())
    m_UserRecordSet.Close();
    //输入匹配条件UserID = m_CuruserID
    m_UserRecordSet.m_strFilter.Format(" UserID = %d order by UserID",m_CurUserID);
    m_UserRecordSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
    //如果用户记录存在,则进行修改操作
    if(m_UserRecordSet.IsOpen() && !m_UserRecordSet.IsEOF())
    {
    //设置编辑当前记录
    m_UserRecordSet.Delete();
    //更新完毕,关闭数据库
    if(m_UserRecordSet.IsOpen())
    m_UserRecordSet.Close();
    //提示用户,修改成功
    AfxMessageBox("删除成功!");
    }
    else //考虑特例,如果操作中用户信息不存在了
    {
    //关闭数据库
    if(m_UserRecordSet.IsOpen())
    m_UserRecordSet.Close();
    //提示用户
    AfxMessageBox("该记录不存在,无法删除!");
    return;
    }
    }
    catch(CDBException*e)
    {
    e->ReportError ();
    //e->Delete ();
    return;
    } //在ListCtrl中删除当前用户信息
    ctl->DeleteItem(m_CurUser);这里是一个非ado连接的例子,我想参考下,但是我的listcontrol在对话框里,而例子的基类baseclass:ClistView,提示:GetListCtrl()这些函数等都不能用
      

  7.   

    别,最好别重新加载
    分开来,数据库和list分别删除
    不然如果数据量大,加载一次得花不少时间呢
    ps:如何解决加载慢的问题??
    为什么可以绑定的控件加载都很快
      

  8.   

    m_pRecordset-> Delete(m_listcontrol.GetNextItem(-1,LVNI_SELECTED)); 
    m_pRecordset-> Requery(adOptionUnspecified); 
    m_listcontrol-> DeleteAllItems(); 
    重新添加记录的代码//红色部分不行吧,一般是先选中记录,括号里不是删除当前记录的参数adAffectCurrent,现在问题是删除时候提示错误,是不是记录和数据库还要什么地方协调下,新手晕了~
      

  9.   

    看样子今天要加班解决这个问题了,意思就是把从Listcontrol选中的记录从数据库和控件中删除,方法无所谓,我再好好想想,那位大哥这方面比较熟悉,希望多提示,有点代码就更好了,谢谢
      

  10.   

    m_pRecordset->Move(m_listcontrol.GetNextItem(-1,LVNI_SELECTED));
    m_pRecordset->Delete(adAffectCurrent);
    m_pRecordset->Requery(adOptionUnspecified);   
    m_listcontrol->DeleteAllItems();
    ... 重新添加记录到ListCtrl
      

  11.   

    除了你上面的办法,数据库一般经过了排序,序号怕乱了,可考虑用Execute "SQL语句"删除你要的记录。
    1.利用Connection对象的Execute方法执行SQL命令
    m_pConnection->Execute "SELECT * FROM xxx WHERE ...特征(比如你listconcrol上选定看到的他某项)..."
    或者
    2.利用Command对象来执行SQL命令m_pCommand->Execute "SELECT * FROM xxx WHERE ...特征..."
    ...
    不早了,回家过年了...
      

  12.   

    晕..加班解决 -_-b.. 如果还不行,把代码发过来,我帮你调调 [email protected]
      

  13.   

    晕..加班解决   -_-b..   如果还不行,把代码发过来,我帮你调调   [email protected]//如果今天解决不了,明天再发给您,虽然简单,不想什么问题都让别人替做了,呵呵,谢谢了
      

  14.   

        try
    {
    m_pRecordset->MoveFirst();
            m_pRecordset-> Move(m_ListCtrl.GetNextItem(-1,LVNI_SELECTED));    
            m_pRecordset->Delete(adAffectCurrent);  
            // 参数adAffectCurrent为删除当前记录
            m_pRecordset->Update();
    }
        catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }
    //竟然这样就可以了,各位帮着看看,还有什么什么鲁棒性的问题-_-#
      

  15.   

    m_pRecordset->MoveFirst();
    //以前就是因为没有加这句,但是不是很明白,为什么加了它就可以了呢,明天希望大哥们给解释下,呵呵,脖子疼了,先吃饭了,呵呵
      

  16.   

    加个判断嘛~~
    int a = m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);
    if( a != 未查到数据的返回值)
    {
        m_pRecordset->MoveFirst();
        m_pRecordset->Move(a);
        m_pRecordset->Delete(adAffectCurrent);  
        // 参数adAffectCurrent为删除当前记录
        m_pRecordset->Update();
    }
      

  17.   

       try
    {
    int a=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED); 
            if(a!=-1)
    {
    m_pRecordset->MoveFirst();
                m_pRecordset-> Move(a);    
                m_pRecordset->Delete(adAffectCurrent);  
                // 参数adAffectCurrent为删除当前记录
                m_pRecordset->Update();
    }
    else AfxMessageBox("请选择要删除的记录");
    }
        catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }
    按照上边加了判断就可以了,非常感谢:tabby -_-b .. 内存泄漏和 shakaqrj,再有不会的还问你们-_-# 
     
      

  18.   

    为啥我把代码写到delete的响应函数中,会出现错误啊,其他函数里还需要添加什么吗?