我的CRECORDSET 类DELETE()总是出错?不晓是为什么?请各位指点一下代码如CRECORDSET RS(&DB);
RS.OPEN(AFX_DB_USE_DEFAULT_TYPE,"SELECT * FROM DELIVER")
IF(!RS.ISBOF())
{
RS.MOVEFIRST();
RS.DELETE();
IF(!RS.ISEOF)
RS.MOVENEXT();
ELSE
RS.MOVELAST();
}
执行到RS。DELETE()时就出什么DBCORE。CPP错误。
编绎是没没问题的。
如果用TRY的话也CATCH不到CDBEXCEPTION *错误。
我查过贴子,以前有人和我提了一样的问题,不过没人回答。没结贴。
不知道怎么搞的!!各位拜托帮帮忙啊。
非常着急

解决方案 »

  1.   

    这是我通常的做法:
    IADORecordBinding   *picRs = NULL;
    _RecordsetPtr pRs("ADODB.Recordset");
    _ConnectionPtr pConn("ADODB.Connection" );
    CFootballTeamRs rsFootballTeam; pConn->ConnectionString = chDataSource;
    pConn->Provider = _T("Microsoft.Jet.OLEDB.4.0");

    try
    {
    pConn->Open(pConn->ConnectionString, "", "", adModeUnknown);
      pRs->QueryInterface(
      __uuidof(IADORecordBinding), (LPVOID*)&picRs);   pRs->Open(  (_variant_t)chSqlSentence,                // 查询DemoTable表中所有字段
    pConn.GetInterfacePtr(),  // 获取库接库的IDispatch指针
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);
    TESTHR(picRs->BindToRecordset(&rsFootballTeam));
    }
    catch (_com_error &e)
    {
       sprintf(errMsg,_T("Code meaning = %s\n"), (char*) e.ErrorMessage());
       AfxMessageBox(errMsg);
       return;
    }
    try
    {
    pRs->MoveFirst();
    pRs->Move(nCurrentIndex);
    pRs->Delete(adAffectCurrent);
    pRs->Update();
    pRs->Close();
    pConn->Close(); }
    catch (_com_error &e)
    {
       sprintf(errMsg,_T("Code meaning = %s\n"), (char*) e.ErrorMessage());
       AfxMessageBox(errMsg);
       return;
    }
      

  2.   

    用ODBC不用ADO啊。请给些意见。谢谢
      

  3.   

    而且我在用ADDNEW();UPDATE()的时候也出现同样错误。。到底是怎么回事。