m_AdoConn.m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);
while(!m_AdoConn.m_pRecordset->adoEOF)
{
m_Grid.InsertItem(i,"");
m_Grid.SetItemText(i,0,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("UserNo"));
m_Grid.SetItemText(i,1,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Username"));
m_Grid.SetItemText(i,2,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Userlogin"));
m_Grid.SetItemText(i,3,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Userpwd"));
m_Grid.SetItemText(i,4,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("UserID"));
m_Grid.SetItemText(i,5,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Usertel"));
m_Grid.SetItemText(i,6,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Useradd"));
m_Grid.SetItemText(i,7,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("User"));
m_AdoConn.m_pRecordset->MoveNext();
i++;
}
这个循环读取字段值时,为NULL时,出现错误,怎么样判断为空时直接输出一个固定值??

解决方案 »

  1.   

    先把值赋给VARIANT 、_variant_t类,判断不为NULL,再赋给m_Grid.SetItemText。
      

  2.   

        只能先判断是否为NULL然后面赋值
        或者是数据库里表每个字段的值默认为空格" ",这样就不用判断了,这是在设计数据库里的表时定义的,每个字段都有各种属性,比如类型,大小,默认值,键值等属性
      

  3.   

    也可以对查询语句进行处理,对于可能null的字段,改写为ISNULL(xxxx,'')...强制返回一个值
      

  4.   

    使用 这个函数时,提示error C2065 ,使用前需要调取哪个头文件啊??
      

  5.   

    "SELECT ISNULL(字串字段名,''),...ISNULL(整数字段名,0)... FROM 表 ..."ISNULL 是SQL Server中的函数,在你构造的查询语句中,由SQL服务器进行解析,确保不会返回不好处理的空值
      

  6.   


    _variant_t var=m_AdoConn.m_pRecordset->GetCollect("UserNo");
    if(var.vt != VT_NULL)
        m_Grid.SetItemText(i,0,(LPCTSTR)(_bstr_t)var);
    else
        m_Grid.SetItemText(i,0,TEXT(""));
      

  7.   

    m_Grid.SetItemText(i,0,m_AdoConn.m_pRecordset->GetCollect("UserNo")).vt_null?"":(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("UserNo"));判断他是不是NULL。是插入字符""不是就插入原值