_RecordsetPtr  m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("cj.media",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdTable); 
long lDataSize = m_pRecordset->GetFields()->GetItem("MDATA")->ActualSize;

if(lDataSize > 0)
{
    _variant_t varBLOB;
    varBLOB = m_pRecordset->GetFields()->GetItem("MDATA")->GetChunk(lDataSize);
    CString fileName = m_pRecordset->GetCollect("MNAME").bstrVal;//从数据库中获取文件名
CString fileExt = m_pRecordset->GetCollect("MTYPE").bstrVal;//获取扩展名
    //判断类型是否正确
    if(varBLOB.vt == (VT_ARRAY | VT_UI1))
    {
        BYTE *pBuf = NULL;
        //得到指向数据的指针
        SafeArrayAccessData(varBLOB.parray, (void **)&pBuf);
        /**//***对pBuf数据的处理***/
static char BASED_CODE szFilter[] =_T("All Files (*.*)|*.*||") ;
CFileDialog dlg(FALSE,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() == IDCANCEL ) 
return;
        ..........
  }
在点击取消时报错,但是点击确认却能正确执行。
在线等,急!!