Файл из базы данных в оле-контейнер
Если создавать файл, то всё просто.
А вот напрямую из базы не получается. Я пробовал так:
Ole->CreateObject("MSPhotoEd.3", true);/*показываем рисунок jpeg*/
TMemoryStream *ms = new TMemoryStream;
quFILE->SaveToStream(ms);/*поле набора данных (TBlobField*)*/
TJPEGImage *jpg = new TJPEGImage();
ms->Seek(0,0);
jpg->LoadFromStream(ms);
ms->Seek(0,0);
Ole->LoadFromStream(ms);
на последней строчке вываливается ошибка Inavalid Stream Format.
Код:
TMemoryStream *MS = new(TMemoryStream);
try
{
MS = (TMemoryStream *)((TDMod*)DM)->aspReturnOtchet->CreateBlobStream(((TDMod*)DM)->aspReturnOtchet->FieldByName("Otchet"), bmRead);
if (MS->Size)
{
OC->LoadFromStream(MS);
OC->Iconic = false;
OC->SizeMode = smAutoSize;
OC->Run();
OC->DoVerb(ovShow);
}
}
__finally
{
delete MS;
}
try
{
MS = (TMemoryStream *)((TDMod*)DM)->aspReturnOtchet->CreateBlobStream(((TDMod*)DM)->aspReturnOtchet->FieldByName("Otchet"), bmRead);
if (MS->Size)
{
OC->LoadFromStream(MS);
OC->Iconic = false;
OC->SizeMode = smAutoSize;
OC->Run();
OC->DoVerb(ovShow);
}
}
__finally
{
delete MS;
}
Одно НО, сохраняю в БД я их тоже из OleContainer'a
Код:
TMemoryStream *MS = new(TMemoryStream);
OC->SaveToStream(MS);
MS->Seek(0,soFromBeginning);
((TDMod*)DM)->aspInsertRaschet->Parameters->ParamByName("@Rasсh")->LoadFromStream(MS, ftVarBytes);
delete MS;
OC->SaveToStream(MS);
MS->Seek(0,soFromBeginning);
((TDMod*)DM)->aspInsertRaschet->Parameters->ParamByName("@Rasсh")->LoadFromStream(MS, ftVarBytes);
delete MS;