Извлечь OLE объекты

Access_OLE
Дата: 06.03.2008 08:28:20
Есть файл *.mdb, с одной таблицей в которой есть BLOB-поле (Поле объекта OLE)
с файлами AutoCad. По двойному клику по этому полю файлы открываются в AutoCad`e.

Задача: вытащить все эти файлы на диск, в какую-нибудь папочку.
Помогите, плиз!
mds_world
Дата: 06.03.2008 09:25:12
Вот здесь http://www.lebans.com/oletodisk.htm есть пример от Лебанса. Правда, среди перечисленных типов файлов с которыми работает программа, не упомянут автокад. Попробуйте.
Access_OLE
Дата: 06.03.2008 12:22:45
mds_world
Вот здесь http://www.lebans.com/oletodisk.htm есть пример от Лебанса. Правда, среди перечисленных типов файлов с которыми работает программа, не упомянут автокад. Попробуйте.

спасибо, но на АвтоКадовские файлы ругнулся! :-(((
fedoseev_sv
Дата: 19.03.2008 11:27:13
Вопрос наоборот - подскажите как вставить программно в OLE-поле объект из файла? В моем случае EMF. И так, чтобы отображался не значком, а картинкой.
Бенедикт
Дата: 19.03.2008 12:54:51
fedoseev_sv,
отображался картинкой где?
fedoseev_sv
Дата: 19.03.2008 12:56:16
в связанной рамке объекта
Бенедикт
Дата: 19.03.2008 13:04:26
fedoseev_sv,
почему именно в связанной рамке объекта? Будет использоваться ленточная форма?
fedoseev_sv
Дата: 19.03.2008 13:39:41
В программе очень много переделывать придется, если сделать по-другому. В моей программе есть OLE - поле, в котором хранятся объекты Autocad Drawing. Эти чертежи выводятся на печать в отчетах, выгружаются в Excel, когда формируется коммерческое предложение и т.п.

Теперь я отказался от Autocad, и написал свой редактор чертежей на C#. Нарисовал чертеж, и его надо вставить в OLE - поле Access DB как EMF. Вот и застрял я с этой проблемой. Если залить в базу по ADO.NET как поток двоичных данных - Access не будет отображать. или во всех формах придется переделывать отображение чертежа. Нормально отображается, только если в вставить как рисунок. Руками делаю ctrl-C + ctrl-V. А как программно внедрить EMF?

вот скриншот
fedoseev_sv
Дата: 19.03.2008 13:42:28
Это счас в Access чертеж из Autocad отображается, а на его место надо вставить emf
Бенедикт
Дата: 19.03.2008 14:25:50
fedoseev_sv
В программе очень много переделывать придется, если сделать по-другому.
"Не верю!" ((с) Станиславский) Не верю, что сценарии использования картинок столь сложны и разнообразны, что нельзя было бы их свести в один класс или даже функцию. Не верю, что количество мест, где используются картинки, доходит хотя бы до 50.
fedoseev_sv
В программе очень много переделывать придется, если сделать по-другому. В моей программе есть OLE - поле, в котором хранятся объекты Autocad Drawing. Эти чертежи выводятся на печать в отчетах, выгружаются в Excel, когда формируется коммерческое предложение и т.п.

Теперь я отказался от Autocad, и написал свой редактор чертежей на C#. Нарисовал чертеж, и его надо вставить в OLE - поле Access DB как EMF. Вот и застрял я с этой проблемой. Если залить в базу по ADO.NET как поток двоичных данных - Access не будет отображать. или во всех формах придется переделывать отображение чертежа. Нормально отображается, только если в вставить как рисунок. Руками делаю ctrl-C + ctrl-V. А как программно внедрить EMF?
Если обратите внимание, то бОльшая часть кода (процентов эдак 75) примера в другом сегодняшнем обсуждении делает преобразование из растрового изображения именно в EMF. Почувствуйте себя немного Микеланжело и отсеките лишнее ;)

Есть и другие подходы. Например, такой: находите или пишете OLE-сервер, который работает с EMF. Устанавливаете его на рабочей станции, где будут добавляться изображения в базу. Получаете содержимое OLE-объекта в своей C#-программе. Добавляете к нему заголовок (можно найти описание в MSDN Library по ключевому слову OBJECTHEADER), и кладёте получившееся в BLOB-поле.
fedoseev_sv
вот скриншот
Чем он может помочь?