![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO Access поля типа OLE-объект [D6, Access]
Fanta © (2004-05-13 07:58:00)Простите заранее за дебильный вопрос: просмотрела много форумов и FAQов на разных сайтах, потратила кучу времени, нашла много людей, столкнувшихся с такой же проблемой и так и не нашедших решения...
В общем, так. Есть база Access с полем типа Ole-объект (если говорить вообще, то в этом поле должен быть всего лишь рисунок любого формата, почти любого, из самых распространенных). И есть приложение, которое должно из этой Access базы выводить поле с ole-объектом (т.е. с рисунком).
Вопрос в том, какой компонент лучше использовать для вывода рисунка. Если это OleContainer, то он не хочет читать из потока ни в какую:
procedure TForm1.OleContainer1Activate(Sender: TObject);
var
stream: TStream;
begin
ADOTable1.First;
stream := ADOTable1.CreateBlobStream(DataSource1.DataSet.FieldByName('Picture'), bmRead);
OleContainer1.LoadFromStream(stream);
OleContainer1.Run;
OleContainer1.DoVerb(ovShow)
end;
Конечно, можно было БЫ использовать DBImage, но он сообщает об ошибке при попытке свойству DataField присвоить то самое поле типа ole-объект.
Такая вот задача. Если кто знает, что надо делать, пожалуйста, подскажите!
sniknik (2004-05-13 09:04:00) [1]> И перед добавлением в OleContainer я должна этот префикс удалить?
скорее добавить.
> Так получается? Sniknik, я тут что, сама с собой разговариваю?
здесь не чат, глупо ожидать ответов через пять мин. (а счас я вообще на работу пойду и ~1.5часа меня здесь не будет)
я тебе дал (помоему) вполне достаточно чтобы понять где "копать", тебе нужно понять разницу между рисунком положенным тобой и аксессом. именно на эту разницу я указал.
но дальше твоя забота, тем более конкретно этим я не занимался, формат префикса не знаю (иначе бы дал), oleContainer считаю лишним (если только для рисунков), чего ты хочеш добится этим не знаю, за тебя делать не буду ... и т.д.
p.s. попроси татьяну выслать тебе пример, там разницу видно наглядно
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1084337455&n=1
Fanta (2004-05-13 08:45:00) [2]Это то есть в oleContainer надо грузить поток со смещением в 82 байта. Так получается? Sniknik, я тут что, сама с собой разговариваю? Отзовись!
Fanta (2004-05-13 08:33:00) [3]В смысле "ложить" в OleContainer?
И перед добавлением в OleContainer я должна этот префикс удалить?
Чуть подробнее!
sniknik (2004-05-13 08:15:00) [4]если записывать рисунок в самом аксессе (например перетащив bmp с проводника в поле), то он добавит к рисунку 82 байта, свой префикс (и поле в нем так и будет называться "рисунок паинт браш").
если пытаешся положить сам в такомже формате тебе нужно или найти описание этого префикса или самому разобрать формат, и ложить также. читать тоже с учетом этого.
> Конечно, можно было БЫ использовать DBImage
а вот этого сделать никак не получится если хочеш читать/писать "родные" поля.