本人用RECORDSET的GetCollect("name")方法时,发现当数据库中字段name为空值时会出错,可是我设计数据库时该字段可以为空,请问如何解决?

解决方案 »

  1.   

    VARIANT var;
    GetCollect....
    if (var.VT != NULL)
        ....
      

  2.   

    _variant_t  var;
    var=m_ADOSet->GetCollect("name");
    strNet_kind=var.vt==VT_NULL?"":(char*)(_bstr_t)dholder;
      

  3.   

    //这样看看
    _variant_t  var;
    var=m_ADOSet->GetCollect("name");
    CString strNet_kind;
    strNet_kind=var.vt==VT_NULL?"":(char*)(_bstr_t)dholder;
      

  4.   

    strSQL.Format("select * from article where cataid=%d",iCataID);
    pRs1->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
    if(!pRs1->adoEOF)
    {
    pRs1->MoveFirst();
    while(!pRs1->adoEOF)
    {
    _vValue=pRs1->GetCollect("id");
    if(_vValue.vt!=VT_NULL)
    {
    _vValue.ChangeType(VT_I4);
    iID=_vValue.iVal;
    } _vValue=pRs1->GetCollect("title");
    if(_vValue.vt!=VT_NULL)
    {
    _vValue.ChangeType(VT_BSTR);
    strTitle=_vValue.bstrVal;
    } //填充节点
    hSubItem=m_TreeList.InsertItem(strTitle,hItem,TVI_SORT);
    m_TreeList.SetItemData(hSubItem,iID);
    pRs1->MoveNext();
    }//end while
    }//end if

    pRs1->Close();
    pRs->MoveNext();
    }//end while
    pRs->Close();
    }//end if
    return TRUE;
    }
      

  5.   

    可我的程序是在执行GetCollect("name")这一句时就出错了!
      

  6.   

    vValue=pRs1->GetCollect("id");
    if(_vValue.vt!=VT_NULL)
    按这种方式不会错得
      

  7.   

    你的数据库用的是不是oracle?? 而且你用的ADO驱动是oracle提供的那种,而不是微软提供的那种???