powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / OLE-контейнер и BLOB-поле.
10 сообщений из 10, страница 1 из 1
OLE-контейнер и BLOB-поле.
    #32082733
Lonely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, плиз!
Моя задача - вытащить из 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
OLE-контейнер и BLOB-поле.
    #32082763
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В OLE-контейнер можно таким образом через стрим загрузить только те данные, которые были из него же выгружены в стрим, а не произвольный бинарник.
...
Рейтинг: 0 / 0
OLE-контейнер и BLOB-поле.
    #32082767
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами, в blob-поле должны лежать только данные, которые раннее были сохранены из OLE-контейнера, а не из файла.
...
Рейтинг: 0 / 0
OLE-контейнер и BLOB-поле.
    #32082952
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты как хотел?
...
Рейтинг: 0 / 0
OLE-контейнер и BLOB-поле.
    #32083386
Lonely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, неужели ж в этом вопросе Delphi примитивнее, чем какой-то Accsess?
В Accsess все просто: привязал OLE-объект (Ole-контейнер) к OLE-полю (DLOB-полю) таблицы и никакой головной боли. Все работает. И, что характерно, для Access не имеет значения, откуда и зачем были вложены в таблицу бинарные данные. Все открывается без проблем - единственное, что должно быть - это то приложение, в котором бинарник этот читается.
У меня есть уже действующие базы данных (под Access 2000) в которых присутствуют BLOB-поля. Одна база работает с вложенными в таблицу Word-документами, а вторая с документами векторной графики в формате XaraX. Записей в той и другой базах порядка десятка тысяч. Так что через вновь созданную форму Delphi это все не пропустить. Неужели тут тупиковый вариант, если BLOB-поле таблицы понимает только единожды созданный OLE-контейнер формы обработчика? Грустно как то и вроде примитивно.
...
Рейтинг: 0 / 0
OLE-контейнер и BLOB-поле.
    #32083477
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример некорректен. Когда в access мышой кидаешь файлик в OLE-поле, туда сохраняется не имидж файла, а нечто большее, целая структуру со своим форматом. Для коррекного примера, попробуй в OLE-поле засунуть какой-нибудь бинарник (например, через ADO), не используя оболочку access. Ты увидишь, что Access в этом плане совсем не отличается от дельфи.
...
Рейтинг: 0 / 0
OLE-контейнер и BLOB-поле.
    #32083484
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем тебе вообще OLE-контейнер ???????????

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

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

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

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

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

Ты чего? :)

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

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


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