powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Access Attachment поле
11 сообщений из 11, страница 1 из 1
Delphi Access Attachment поле
    #39812864
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Есть база Access (.accdb), там в таблице поле типа Attachment, тоесть вроде как
Blob, но в нём фаили, и болеe одного ...
Знает кто то как в дельфе добратся до етих фаилов, типо выташить и записать их в нормальные фаили ?

WBR
Janex
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812882
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,

Что-то типа того
TBlobField(ADODataSet1.FieldByName('myAttachment')).SaveToFile(sFileNameWithPath);
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812885
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoJanex,

Что-то типа того
TBlobField(ADODataSet1.FieldByName('myAttachment')).SaveToFile(sFileNameWithPath);


Там в етом одном поле myAttachment много чего - название фаила, расширени фаила и сам фаил, и
таких комплектов может бить много ... ето какои то комплексныи поле. Если выгрузить блоб,
то там всё в ондои куче будет и неразобратся ... :(
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812891
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoJanex,

Что-то типа того
TBlobField(ADODataSet1.FieldByName('myAttachment')).SaveToFile(sFileNameWithPath);


Кстати нет - из блоба вытаскивается только названия фаилов :(
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812905
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JanexGerasimenkoJanex,

Что-то типа того
TBlobField(ADODataSet1.FieldByName('myAttachment')).SaveToFile(sFileNameWithPath);


Кстати нет - из блоба вытаскивается только названия фаилов :(
Что там у тебя и в каком виде - провидцев нет

Можешь через поток делать
Код: pascal
1.
(ADODataSet1.FieldByName('myAttachment') as TBlobField).SaveToStream(myTsm); 


или
Код: pascal
1.
myTsm:=ADODataSet1.CreateBlobStream(ADODataSet1.FindField('myAttachment'),bmRead);


...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812920
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko,

Вот что пишут про ето:
In MS Access accdb Microsoft introduced a new data type called attachments. Many types of files can be stored in a column which has the attachment data type. Someone can add bitmap files, jpg files, sound files, word documents, etc. to a column without increasing the size of the database.

Если и выташу ети данные через поток, то там будет росоль из мноигих фаилов, а мне надо и х по одному достать ...
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39812954
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JanexGerasimenko,

Вот что пишут про ето:
In MS Access accdb Microsoft introduced a new data type called attachments. Many types of files can be stored in a column which has the attachment data type. Someone can add bitmap files, jpg files, sound files, word documents, etc. to a column without increasing the size of the database.

Если и выташу ети данные через поток, то там будет росоль из мноигих фаилов, а мне надо и х по одному достать ...

https://stackoverflow.com/questions/26958872/handling-fields-of-attachment-type-in-ms-access-using-ado

Не рекомендуют использовать вне Access. Если, все же, такая необходимость есть, то использовать специальные компоненты, поддерживающие данный тип. Например: ACE DAO Recordset2
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39813062
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кое какои прогресс есть.
задумался, что вот так можно добратся до конкретных фаилов:
Код: plsql
1.
2.
3.
4.
SELECT id,
       Attachments.filedata,
       Attachments.filename
FROM   TASKS


Есть, yра, победа :)

Но вот блин опять гемороя - записивая блоб в фаил всегда получаю фаил на 10-20 баитов
длинее чем он должен бить. Кто то, что то всем фаилам с переди добавляет какую то
чуш размером 10-20 баитов ...
Что ЕТО ?
Пробовал и через UniDAC, и через FiredDAC, всё одно ...
Какои то ODBC/OLE/ПОЛЕ/МОЛЕ провидер не тот или что ?
Как такое может бить ?
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39813074
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,

А данные еще и упаковываться могут https://docs.microsoft.com/en-us/office/vba/api/access.attachment и файлов может быть несколько. Не туда ты копаешь.
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39813075
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,
Ех ... ладно, забудьте, ето сам Access, наверно, хронит какую то дополнительную инфу про фаил,
а то в етом паразитном хедере упомянуто расширение фаила...
...
Рейтинг: 0 / 0
Delphi Access Attachment поле
    #39813081
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй как-то так
Код: pascal
1.
2.
3.
4.
var rs: Recordset;
....
rs := ADODataSet1.FieldByName('myAttachment').AsVariant as Recordset;
........
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Access Attachment поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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