Здравствуйте KAY, Вы писали:
KAY>не могли ли бы вы прислать кусок кода, который читает из БД
KAY>данные (GetChunk) и сохраняет их в файле ??? Очень нужно и
KAY>очень срочно
!
Пожалуйста, только пересмотрите код, м.б. потребуется вызывать GetChunk() в цикле, если БЛОБ большой...
[vc]
bool CImUtil::ImField2File(FieldPtr &fld, _bstr_t ofile)
{
_variant_t varBLOB;
long lDataLength = 0;
char *pBuf = NULL;
int nDataLenRetrieved = 0;
try
{
// get the actual length of the data
lDataLength = fld->ActualSize;
if(lDataLength > 0)
{
VariantInit(&varBLOB);
// get the chunk of data
varBLOB = fld->GetChunk(lDataLength);
// If the data retrieved is array of bytes then get data from the array and set the
// data value variable of the edit box
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
ofstream fo(ofile, ios::out | ios::binary);
fo.write(pBuf,lDataLength);
fo.close();
SafeArrayUnaccessData(varBLOB.parray);
}
}
}
catch(_com_error &e)
{
MessageBox(HWND_DESKTOP,e.ErrorMessage(),"ERROR",MB_OK);
return false;
}
return true;
}
[/vc]