Re[2]: BLOB-поля
От: KAY  
Дата: 03.12.01 16:16
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:

РГ>Здравствуйте KAY, Вы писали:


KAY>>Народ! Подскажите, плиз, как мне добавить файл (например,

KAY>>документ Word) в BLOB-поле (желательно с примером кода).
KAY>>Заранее благодарен!!!

РГ>Добавляется/читается с использованием функций ADO Field:

РГ>GetChunk()/AppenfChunk()

РГ>например (очень грязно)

РГ>[vc]
РГ>bool CImUtil::ImFieldFromFile(FieldPtr &fld, _bstr_t ifile)
РГ>{
РГ> VARIANT varArray;
РГ> long lDataLength=0;
РГ> char *pBuf = NULL;
РГ> int nDataLenRetrieved = 0;

РГ> try

РГ> {
РГ> ifstream fi(ifile, ios::in | ios::binary);
РГ> lDataLength = filelength(fi.fd());
РГ> if(lDataLength > 0)
РГ> {

РГ> SAFEARRAY FAR* psa;

РГ> SAFEARRAYBOUND rgsabound[1];
РГ> rgsabound[0].lLbound = 0;
РГ> rgsabound[0].cElements = lDataLength;

РГ> psa = SafeArrayCreate(VT_I1, 1, rgsabound);


РГ> if(SafeArrayAccessData(psa,(void **)&pBuf) == NOERROR)

РГ> fi.read(pBuf,lDataLength);
РГ> SafeArrayUnaccessData(psa);
РГ> varArray.vt = VT_ARRAY | VT_UI1;
РГ> varArray.parray = psa;

РГ> fld->AppendChunk(varArray); /// !!!!!!

РГ> VariantClear(&varArray);

РГ> }

РГ> fi.close();
РГ> }
РГ> catch(_com_error &e)
РГ> {
РГ> MessageBox(HWND_DESKTOP,e.ErrorMessage(),"ERROR",MB_OK);
РГ> return false;
РГ> }
РГ> return true;
РГ>}
РГ>[/vc]

А нельзя ли это сделать с помощью CLongBinary или чего-нибудь подобного ???
Меньше знаешь — лучше спишь...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.