Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

ADO Access поля типа OLE-объект   Найти похожие ветки 

 
Fanta   (2004-05-13 07:58) [0]

Простите заранее за дебильный вопрос: просмотрела много форумов и 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 08:15) [1]

если записывать рисунок в самом аксессе (например перетащив bmp с проводника в поле), то он добавит к рисунку 82 байта, свой префикс (и поле в нем так и будет называться "рисунок паинт браш").
если пытаешся положить сам в такомже формате тебе нужно или найти описание этого префикса или самому разобрать формат, и ложить также. читать тоже с учетом этого.

> Конечно, можно было БЫ использовать DBImage
а вот этого сделать никак не получится если хочеш читать/писать "родные" поля.


 
Fanta   (2004-05-13 08:33) [2]

В смысле "ложить" в OleContainer?
И перед добавлением в OleContainer я должна этот префикс удалить?
Чуть подробнее!


 
Fanta   (2004-05-13 08:45) [3]

Это то есть в oleContainer надо грузить поток со смещением в 82 байта. Так получается? Sniknik, я тут что, сама с собой разговариваю? Отзовись!


 
sniknik ©   (2004-05-13 09:04) [4]

> И перед добавлением в OleContainer я должна этот префикс удалить?
скорее добавить.

> Так получается? Sniknik, я тут что, сама с собой разговариваю?
здесь не чат, глупо ожидать ответов через пять мин. (а счас я вообще на работу пойду и ~1.5часа меня здесь не будет)

я тебе дал (помоему) вполне достаточно чтобы понять где "копать", тебе нужно понять разницу между рисунком положенным тобой и аксессом. именно на эту разницу я указал.
но дальше твоя забота, тем более конкретно этим я не занимался, формат префикса не знаю (иначе бы дал), oleContainer считаю лишним (если только для рисунков), чего ты хочеш добится этим не знаю, за тебя делать не буду ... и т.д.

p.s. попроси татьяну выслать тебе пример, там разницу видно наглядно
http://delphimaster.net/view/3-1084337455/



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
14-1084097836
European
2004-05-09 14:17
2004.05.30
Докачка электронной почты


7-1082658515
Боян Георгиев
2004-04-22 22:28
2004.05.30
Как прятать програму из Task Manager (win 2k)?


7-1083135454
vitalyIshim
2004-04-28 10:57
2004.05.30
Температура процессора и скорость вращения куллера


6-1081768676
Геннадий
2004-04-12 15:17
2004.05.30
Как создать вложение при отправке электронного письма? idSMTP


11-1074308545
Sane
2004-01-17 06:02
2004.05.30
EOL в поток