Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / OLE-контейнер и BLOB-поле. / 10 сообщений из 10, страница 1 из 1
21.12.2002, 22:19
    #32082733
Lonely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Помогите, плиз!
Моя задача - вытащить из BLOB поля первой записи таблицы его содержимое и положить в OLE-контейнер:

var
S : TBlobStream;
begin
Table1.Active:=true;
Table1.First;
s:=TBlobStream.Create(Table1fblob, bmread);
oc.LoadFromStream(s);
Table1.Active:=false;
oc.Free;
end;

На данную процедуру выдается ошибка 'Invalid stream format'. Ошибка возникает после того, как данные потока s загружаются в контейнер oc.
Где тут собака зарыта? Спасибо.
...
Рейтинг: 0 / 0
22.12.2002, 10:55
    #32082763
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
В OLE-контейнер можно таким образом через стрим загрузить только те данные, которые были из него же выгружены в стрим, а не произвольный бинарник.
...
Рейтинг: 0 / 0
22.12.2002, 11:21
    #32082767
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Другими словами, в blob-поле должны лежать только данные, которые раннее были сохранены из OLE-контейнера, а не из файла.
...
Рейтинг: 0 / 0
23.12.2002, 11:52
    #32082952
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
А ты как хотел?
...
Рейтинг: 0 / 0
24.12.2002, 05:44
    #32083386
Lonely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Ребята, неужели ж в этом вопросе Delphi примитивнее, чем какой-то Accsess?
В Accsess все просто: привязал OLE-объект (Ole-контейнер) к OLE-полю (DLOB-полю) таблицы и никакой головной боли. Все работает. И, что характерно, для Access не имеет значения, откуда и зачем были вложены в таблицу бинарные данные. Все открывается без проблем - единственное, что должно быть - это то приложение, в котором бинарник этот читается.
У меня есть уже действующие базы данных (под Access 2000) в которых присутствуют BLOB-поля. Одна база работает с вложенными в таблицу Word-документами, а вторая с документами векторной графики в формате XaraX. Записей в той и другой базах порядка десятка тысяч. Так что через вновь созданную форму Delphi это все не пропустить. Неужели тут тупиковый вариант, если BLOB-поле таблицы понимает только единожды созданный OLE-контейнер формы обработчика? Грустно как то и вроде примитивно.
...
Рейтинг: 0 / 0
24.12.2002, 10:44
    #32083477
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Пример некорректен. Когда в access мышой кидаешь файлик в OLE-поле, туда сохраняется не имидж файла, а нечто большее, целая структуру со своим форматом. Для коррекного примера, попробуй в OLE-поле засунуть какой-нибудь бинарник (например, через ADO), не используя оболочку access. Ты увидишь, что Access в этом плане совсем не отличается от дельфи.
...
Рейтинг: 0 / 0
24.12.2002, 10:47
    #32083484
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
А зачем тебе вообще OLE-контейнер ???????????

Что за странный подход? Ты бы еще весь Word туды впихивал :)

Нельзя просто файл положить? А потом открывать как тебе вздумается - хоть в шестнадцатиричном виде - файл, он всегда файл и не зависит, как его в БД ложили.

Так что нечего на зеркало, т.е. БД, пенять.........
...
Рейтинг: 0 / 0
25.12.2002, 20:13
    #32084433
Lonely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
2 Dankov: Нет, про имиджы речи вообще нет. Естественно, я говорю о том, что в поле сохраняется весь файл. Access действительно не будет отличаться от Delphi, если базу начать с нуля, НО базы уже существуют и хотелось бы сделать обработчик в Delphi. Если все будет работать для новых записей, то старые из-за так называемого "своего формата OLE-контейнера" читаться не будут?

2 tygra: Вся штука в том, что чтобы хранить данные (схемы или документы) в виде файлов на сервере необходимо для клиентским машинам открыть сетевой ресурс, чтобы можно было получить доступы к файлам. А где Вы видели клиент/серверные базы данных в сети у которых в наборе с базой еще и сетевой ресурс обязателен? :-)

Так все-таки, что-то можно сделать с данной проблемой или нет?
...
Рейтинг: 0 / 0
26.12.2002, 10:33
    #32084545
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Напиши простенький конвертор, который возьмет по очереди из блоба "файл", сохранит в файл, этот файл откроет через OLE-контейнер и контейнером сохранит это обратно в блоб. И таким образом конвертни старую базу.
...
Рейтинг: 0 / 0
26.12.2002, 10:57
    #32084573
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OLE-контейнер и BLOB-поле.
Вся штука в том, что чтобы хранить данные (схемы или документы) в виде файлов на сервере необходимо для клиентским машинам открыть сетевой ресурс, чтобы можно было получить доступы к файлам. А где Вы видели клиент/серверные базы данных в сети у которых в наборе с базой еще и сетевой ресурс обязателен? :-)

Ты чего? :)

Все хранится в БД, поле Image

А для того, чтобы читалось то, что уже есть, пройдись один раз по всей БД акцессом, считай поля, сохрани в файл и запихай обратно - вот и все. Чего фигней то страдать? Все пытаются сделать как проще, а ты - как труднее
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / OLE-контейнер и BLOB-поле. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]