这个OLE字段存储的是word文档
我想能读写这个字段,我用如下的代码段    CString Source = _T("select * from 题库");    try
    {
        BSTR str = Source.AllocSysString();
        m_pRecordset->Open(str, 
            theApp.m_pConnection.GetInterfacePtr(),
            adOpenDynamic,
            adLockOptimistic,
            adCmdText);
        
        ::SysFreeString(str);        if (m_pRecordset->adoEOF) 
        {
            AfxMessageBox(_T("没有数据"));
            m_pRecordset->Close();
            return;
        }
        
        _variant_t varOptional(DISP_E_PARAMNOTFOUND, VT_ERROR);
        m_pStream->PutType(adTypeBinary);
        m_pStream->Open(varOptional, adModeUnknown, adOpenStreamUnspecified, _bstr_t(), _bstr_t());        m_pStream->Write(_variant_t(m_pRecordset->GetFields()->GetItem("题干")->Value));
        m_pStream->SaveToFile("D:\\1.doc", adSaveCreateOverWrite);
    }
    catch(_com_error &e)
    {
        AfxMessageBox(e.Description());
    }但读取出来的数据用word文档打开后
不正确
疑问??

解决方案 »

  1.   

    从代码上看没有什么问题呀,
    不过最后保存完后应该关闭stream对象,m_pStream->Close();
      

  2.   

    关闭m_pStream对象的代码
    我有写
    不过上面没附出来
    你们有没有写过读写ole(WORD)字段的代码
    能不能发段看看
      

  3.   

    现象就是打开WORD查看后
    乱码
    而且生成的word文档比实际的更大
      

  4.   

    用ADO往access中写入二进制数据,可能参考如下文章:
    http://www.vckbase.com/document/viewdoc/?id=719
    http://www.vckbase.com/document/viewdoc/?id=252
      

  5.   

    那天忘了跟你说,还有本书叫《ADO.NET技术内幕》,我没有看过,或许对你有点帮助。。