之前一直在搞数据相关滴事情…然后碰到这么个问题,要向Access数据库的数据字段写入空值… 要是字符型字段还好说一点咯,写个空字符串就好了… 这个数字型,想想的话怎么着也要给个数字啊…

最后,研究发现,其实微软的接口使用的是自定义的一种数据封装类…是可以实现向数据字段写入空值滴… 代码如下:

// 使用的是ADO2.H这个ADO封装类
_variant_t vtFld;
vtFld.vt = VT_NULL;
return pRs->SetFieldValue(nIndex, vtFld);

以下是函数的具体实现

BOOL CADORecordset::SetFieldValue(int nIndex, _variant_t vtValue)
{
    _variant_t vtIndex;
    
    vtIndex.vt = VT_I2;
    vtIndex.iVal = nIndex;
    
    return PutFieldValue(vtIndex, vtValue);
}
 
BOOL CADORecordset::PutFieldValue(_variant_t vtIndex, _variant_t vtFld)
{
    if(m_nEditStatus == dbEditNone)
        return FALSE;
 
    try
    {
        m_pRecordset->Fields->GetItem(vtIndex)->Value = vtFld;
        return TRUE;
    }
    catch(_com_error &e)
    {
        dump_com_error(e);
        return FALSE;
    }
}