谢谢

解决方案 »

  1.   

    一个OLE字段的例子,不过是图形的,你可以参考一下。
    http://www.yesky.com/20020311/1601097.shtml
      

  2.   

    用ado stream很容易,例子可以参考msdn
      

  3.   

    用ADO,先创建一个临时文件然后在richeditctl里面指定这个临时文件名long lDataSize = m_recordset->GetFields()->GetItem((_bstr_t)InputFieldName)->ActualSize;
    //得到数据的长度
    if(lDataSize>0) 
    {
    CString csYourOleField=.......;
    _variant_t var;
    var = m_recordset->GetFields()->GetItem((_bstr_t)csYourOleField)->GetChunk(lDataSize);
    if (var.vt==(VT_ARRAY | VT_UI1))
    {
    char *pBufTemp=NULL;
    HRESULT hr=SafeArrayAccessData(var.parray,(void **)&pBufTemp);
    SafeArrayUnaccessData (var.parray);
    if (hr==S_OK)
    {
    CFile f;
    if(!f.Open(m_csDrawingName,CFile::modeWrite|CFile::modeCreate))
    {
    AfxMessageBox("创建临时文件失败.");
    return FALSE;
    }
    f.WriteHuge(pBufTemp,lDataSize);
    f.Close();
    }
    else
    {
    AfxMessageBox("从数据库读取文件失败.");
    return FALSE;
    }
    }
    }
      

  4.   

    不好意思,上面写错了一点
    把CString csYourOleField=.......;放到最前面
    把InputFieldName改成csYourOleField