这是一个"删除按钮"的OnDel() 函数.可是在点击"删除按钮"时会出错,这是为什么呢?
我做的是单文档的项目,就是可以动态的删除数据库里面的条目信息.
请各位解困了 急~~~~~
代码如下:void CClientView::OnDel() 
{
// TODO: Add your control notification handler code here
//i是记录中所选的记录号,如果没有则返回
int i=m_ctrlperson.GetSelectionMark();//全局变量CListCtrl m_ctrlperson;
CString strSQL,msg,strname;
strname=m_ctrlperson.GetItemText(i,1);
msg.Format("该记录将被删除!是否继续?",i+1,strname);
//如果用户没有选择记录,则提示选取一条记录
if(i==-1)
{
MessageBox("请选择一条要删除的记录!","提示",MB_OK|MB_ICONINFORMATION);
}
else
{

if(MessageBox(msg,"提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
CString strname=m_ctrlperson.GetItemText(i,1);
//从表中删除对应的记录
strSQL.Format("delete from person where name='%s'",strname);
m_database.ExecuteSQL(strSQL);
m_database.Close();
}
}
}

解决方案 »

  1.   

    什么错误了,是不是m_ctrlperson.GetItemText(i,1)这里要变为m_ctrlperson.GetItemText(i,0); 
      

  2.   

    单步调试,看看是不是在下面这行出问题:m_database.ExecuteSQL(strSQL);如果是,那需要保证有 person 这个表等
    还有,你使用的是什么数据库?字段名最好不要使用 name 这种,怕遇到关键字。
      

  3.   

    msg.Format("该记录将被删除!是否继续?",i+1,strname); 这句会出错。
      

  4.   

    执行com控件的时候最好加上try catch字段,免得程序直接崩溃退出
    跟踪你的代码看看是什么地方出的问题,然后再提出相应的问题
      

  5.   


    我用的是ACCESS的数据库 
    最后我把代码改成了这样 还是会出错啊 晕死!!!!!!!
    void CClientView::OnDel() 
    {
    // TODO: Add your control notification handler code here
    //i是记录中所选的记录号,如果没有则返回
    int i=m_ctrlperson.GetSelectionMark();
    //如果用户没有选择记录,则提示选取一条记录
    if(i==-1)
    {
      MessageBox("请选择一条要删除的记录!","提示",MB_OK|MB_ICONINFORMATION);
    }
    else
    {
    }
    }
      

  6.   

    是不是m_ctrlperson没有和控件连接起来?你看看运行到int i=m_ctrlperson.GetSelectionMark(); 时m_ctrlperson的值是否有效。
      

  7.   

    1、msg.Format("该记录将被删除!是否继续?",i+1,strname);  是干什么?2、CString strname=m_ctrlperson.GetItemText(i,1); -------在此对strname进行判断,如果为空执行ExecuteSQL肯定会出错——————//从表中删除对应的记录 
    strSQL.Format("delete from person where name='%s'",strname); 
    m_database.ExecuteSQL(strSQL); 
      

  8.   

    我单调试了 问题在这句
    int i=m_ctrlperson.GetSelectionMark(); 
    我就搞不懂了 ???这句话不应该出错吧 晕死.......
      

  9.   

    单步到这句的时候,按F11,看看抛出的是什么错误
    怀疑m_ctrlperson.m_hWnd为非法值,即m_ctrlperson窗口不存在。