RUS  ENG 

BLOB

Страницы: 1
RSS
BLOB, Добавление элементов в галерею, удаление элементов, пересохранение ссылок
 
Не совсем понятно как программно добавить еще файлов из папки в существующий объект Blob.(в нем должны храниться только ссылки на файлы из папки)
пробовала сначала Получить DataSet по SYS объекта ds


потом получить значение поля BLOB GetFieldValueBlob() не описана в справке. tb
вроде получил и даже показал количество файлов в галерее
Далее с помощью

tb.Items.Add путь, 1, путь - вроде что то добавил в галерею
далее это tb

записать это tb в ds SetFieldValue
но ничего не записалось

как и значение tb через
UpdateBaseRecordEx
UpdateBaseRecord

ругается на список полей, то на неверные параметры, то просто вылетает...
Видимо неправильно выгружаю из ds.
Если не через DataSet - то как ???
Изменено: Aly - 28.09.2021 16:54:05
 
Цитата
Aly написал:
Не совсем понятно как программно добавить еще файлов из папки в существующий объект Blob.(в нем должны храниться только ссылки на файлы из папки)
SFil ="D:\zulData\1\primer.pdf"

Set Db=CreateObject("Zb.ZbDatabase")
Db.Open "Имя"
Set tbldef0 = CreateObject("Zb.ZbBlob") ' объявление -cоздание
Set tab1= Db.Queries.Default.SelectByKey (idsb) 'DataSet
DN =tab1.GetFieldIndexByName (0, "GZ_Doc_Blob")'номер поля GZ_Doc_Blob

Set tbldef0=tab1.GetFieldValueBlob(DN,1) ' существующее значение поля??? как строка
tbldef0.Items.Add SFil, 1, SFil '(добавляем новый объект : имя объекта оно же ссылка)
tab1.SetFieldValue DN,tbldef0 ' новое значение поля в DataSet ' не работает ничего не добавляет. Даже если создать в памяти Data Set и добавить запись.
Db.Queries.Default.UpdateFromDataset tab1, "GZ_Doc_Blob" 'не работает
Dataset - это ответ. В него ничего уже добавлять не надо.
Нужно получить объект IzbBlob blob из датасета GetFieldValueBlob
Далее, IZbBlobItems items = blob->Items
Далее items.Add (это если поле является галереей)
А дальше создать VT_ARRAY|VT_VARIANT в него записать blob, как VT_UNKNOWN
И потом
QueryInfo->UpdateBaseRecordEx с этим параметром

Все это у нас пока недоописано. Нужно описать все методы. Написать пример.
Либо добавить какие-то для пользователя упрощенные методы.
Типа "Добавить файл в галерею"

Вот нашел старый пример. Не знаю, на сколько рабочий. Тестировать нужно
Код
Sub BlobCopy
     
Set Map = Zulu.ActiveMapDoc

Set L = Map.Layers.Active

Set db = L.OpenDatabase (4, "") 

Set ds = db.SelectByKey   (1317)

idx = ds.GetFieldIndexByName(zbShortName, "BLOB_test")
  
Set blob =  ds.GetFieldValueBlob (idx, 0)

'b.ActiveQuery.UpdateBaseRecordEx 1, "Sys", 1317, "BLOB_test", blob

blob.Items.Add "bbb.jpg", 1, "d:\Afisha.jpg"
blob.Items.Add "drain.png", 1, "d:\drain.png"

    
blob.SaveContent 0, "d:\content.bin" 


a = db.ActiveQuery.UpdateBlobFile (1, "Sys", 1317, "BLOB_test", "d:\content.bin", "")


End Sub
Изменено: Алексей Аширов - 28.09.2021 16:53:34
 
Спасибо за оперативность. Буду пробовать.
 
Добавились файлы в галерею но не ссылки. вероятно нужный параметр другой,?
 
Цитата
Aly написал:
Добавились файлы в галерею но не ссылки. вероятно нужный параметр другой,?
Посмотрите, как разные варианты хранения в описателе задаются.
https://youtu.be/WfbwnWZ5UHw
Изменено: Алексей Аширов - 28.09.2021 19:30:49
 
Это уже сделано gallery. Links стоит. Но файлы забрасываемые из бинарного файла - размещаются целиком.
Это связано с SaveContent 0,...
Судя по описаю эта функция предназначена больше для выгрузки данных из БД - т.е. формируется файл (бинарный) в котором содержится непосредственно фотография а не ссылка. возможно это зарезервированный параметр 0


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

Поэтому лучше наоборот. сначала заложить файлы в папки, а потом добавлять ссылки - програмно.Если формат поля Строковый с тегом document , то можно сделать зипованную папку с номером SYS для каждого объекта и в нее складывать документы. В само поле добавить ссылку на zip объекта.

Но посокльку zipi - в zip уже не откроет, нужен Blob - галерея с ссылками. А вот загрузить ссылки не выходит. Функции не подходят.
Пробовала через поток делать но не понятно как грузить опять же ссылки.

Если сделать ярлыки и их уже грузить в контент? Но ZULU игнорирует ярлыки в качестве добавляемых файлов. Задачка сложная получается.
 
Цитата
Aly написал:

Если сделать ярлыки и их уже грузить в контент? Но ZULU игнорирует ярлыки в качестве добавляемых файлов. Задачка сложная получается.
Вы вручную можете это сделать и показать Вашу модель? Если то, что Вы хотите, не сделать вручную, то и программно не выйдет.
Пришлите, пожалуйста, пример данных на [email protected]
 
Добрый день!
Проблема такая же -программно заполнить ссылками на файлы поле таблицы типа blob. При попытке использовать UpdateBaseRecordEx пишет "Неправильно сформирован список значений." При попытке использовать UpdateBlobFile пишет "Не удалось сохранить файл." Кто поможет!
Изменено: Владимир Николаенко - 03.11.2021 11:02:35
 
Также столкнулся с проблемой программного добавления ссылки в поле blob.
 
Добрый день! У нас обнаружились расхождения объектной модели с текущими возможностями галереи. Мы сейчас работаем над тем, чтобы сделать адекватной программную работу с ссылками в blob. Как только закончим, дадим знать.
 
Добрый день! электронный архив с множеством документов расположен на сетевом диске. Сейчас нужно подгрузить документы к объектам ссылками из данного архива, для этого на сервере указали папку для документов, и теперь все файлы после прикрепления просто копируются в указанную папку. Верно выполнено? Получается задвоение файлов. Версия 8.0.08062u
 
Добрый день! задвоения быть не должно. При подключении документа, который уже размещен на сетевом ресурсе, необходимо выбирать документ не из сетевой папки, а непосредственно с сервера геоданных, см картинку ниже.

Убедитесь, что вы поступаете именно так.
Останутся вопросы, пришлите на почту [email protected] следующую информацию:
1) скриншот типа поля в структуре таблицы
2) скриншот настройки поля в запросе
3) скриншот момента выбора документа для загрузки
4) скриншот папки с документом до и после загрузки документа
5) телефон для связи

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

А ссылку на папку возможно добавить? так как по одному объекту множество файлов и файлы могут добавляться в папки.
Страницы: 1