解决方案 »

  1.   

    貌似是lz的rp问题
    类同的代码,测试完全没有问题
    int l=13;
    Rs->MoveFirst();
    Rs->Move((long)l);另外,你错误捕捉应该是错误的写法,*e要改成&e ,写成指针e应该捕捉不到错误
      

  2.   

    catch那句改一下,让程序报一下错误什么
      

  3.   


    用& 的话系统有红色波浪线 
      

  4.   


    再请教下,像代码这种 ADO 操作 access如何删除或更新某条数据,如 sql = "delete from table where name = 'alice' ";这该如何执行呢?谢谢谢谢~~本人菜鸟,希望能赐教!
      

  5.   

    _Connection cnn;
    .....
    _Variant_t v;
    cnn.Execute(sql,&v,-1);
      

  6.   


    cnn.Execute(_bstr_t(sql),&v,-1); 
      

  7.   


    大侠,这样虽然不报错了,但是 数据删不掉void CaccessTestDlg::OnBnClickedDelete()
    {
    _variant_t v;
    theApp.m_pConnection->Execute(_bstr_t("delete from DemoTable where username = 'alice' "),&v,-1);
    // TODO: 在此添加控件通知处理程序代码
    }
      

  8.   

    那你的检查alice数据有没有存在,"delete DemoTable.* from DemoTable where username = 'alice' "
    这样写规范点
      

  9.   


    有个问题哎,当我删一个不存在的名字时  它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
    try
    {
    UpdateData(true);
    if(m_Name == _T(""))
    {
    AfxMessageBox(_T("请输入要删除的姓名!"));
    return;
    }
    _variant_t v;

    CString str = _T("delete DemoTable.* from DemoTable where username = '");
    str += m_Name;
    str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
    AfxMessageBox(_T("删除成功!")); m_Name = _T("");
    m_Age = _T("");
    UpdateData(false); }
    catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }
      

  10.   


    有个问题哎,当我删一个不存在的名字时  它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
    try
    {
    UpdateData(true);
    if(m_Name == _T(""))
    {
    AfxMessageBox(_T("请输入要删除的姓名!"));
    return;
    }
    _variant_t v;

    CString str = _T("delete DemoTable.* from DemoTable where username = '");
    str += m_Name;
    str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
    AfxMessageBox(_T("删除成功!")); m_Name = _T("");
    m_Age = _T("");
    UpdateData(false); }
    catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }
    查看Execute的返回值v
      

  11.   


    返回值??
    你指的是 _variant_t v; 吧?我看了下,存在的数据删除时,和不存在的数据删除时,对应的 v 值
    是不是 关键是那个 I4 的值?? 为 1 就代表 成功?  为0 就代表不成功?网上找的有点乱,所以在此请教一下大家~谢谢!
      

  12.   


    如果写个判断  可以不可以这样:if(v.I4 == 1)
    {
        success!
    }
    else
    {
        failed!
    }
      

  13.   

    http://blog.csdn.net/johe2003/article/details/3903197
      

  14.   

    theApp.m_pConnection->Execute(_bstr_t(str),&v,-1); 
    返回执行成功的条数(,v.lvale)
      

  15.   


    有个问题哎,当我删一个不存在的名字时  它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
    try
    {
    UpdateData(true);
    if(m_Name == _T(""))
    {
    AfxMessageBox(_T("请输入要删除的姓名!"));
    return;
    }
    _variant_t v;

    CString str = _T("delete DemoTable.* from DemoTable where username = '");
    str += m_Name;
    str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
    AfxMessageBox(_T("删除成功!")); m_Name = _T("");
    m_Age = _T("");
    UpdateData(false); }
    catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }呵呵,错误也能继承,那你*e,有没有捕捉到错误?
      

  16.   


    是 v.Ival  是返回受影响条数,没有Ivale~ :)谢谢  解决这个问题了另外捕捉错误没起到作用  是*e的问题?  但是写成&e  就有红色波浪线。而且网上都这样写的。帖子再放几天,再等等其他热心网友来解决1楼的问题~~~谢谢各位啦~~
      

  17.   


    为什么select 时,就算查到数据,Ival 的值还是为0 呢? 我该如何知道 查到了 几条 数据呢?
    CString str1 = _T("select * from DemoTable where username = '");
    str1 += m_Name;
    str1 += _T("'");
    theApp.m_pConnection->Execute((_bstr_t)str1,&v,-1);在网上找了别的办法,说用
    m_pCommand->CommandText = "select count(*) from DemoTable where username = 'sdd' ";
    v = m_pCommand->Execute(NULL,NULL,adCmdText);但是这个命令 我一执行就报错。。囧,所以我还是偏向了  用 connection来excute(用它不报错)
      

  18.   

    _ConnectionPtr pConn(__uuidof(Connection));
    pConn->CursorLocation=adUseClient;
    pConn->Open(_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Data\\Northwind\\NORTHWINDA.MDB;Persist Security Info=False"),_bstr_t(""),_bstr_t(""),-1); _CommandPtr cmdX(__uuidof(Command));
    cmdX->PutActiveConnection(_variant_t((IUnknown*)pConn));
    cmdX->CommandText=_bstr_t("Employees");
    _RecordsetPtr rsX=cmdX->Execute(NULL,NULL,adCmdTable);
    int n=rsX->RecordCount;command的使用方法看上述代码;连接的execute使用select时,并不会对数据库产生影响,所以返回v值为0,v的值用于指明对数据库产生作用的记录条数;