[QUOTE]
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" 'не работает[/QUOTE]
Dataset - это ответ. В него ничего уже добавлять не надо.
Нужно получить объект IzbBlob blob из датасета GetFieldValueBlob
Далее, IZbBlobItems items = blob->Items
Далее items.Add (это если поле является галереей)
А дальше создать VT_ARRAY|VT_VARIANT в него записать blob, как VT_UNKNOWN
И потом
QueryInfo->UpdateBaseRecordEx с этим параметром
Все это у нас пока недоописано. Нужно описать все методы. Написать пример.
Либо добавить какие-то для пользователя упрощенные методы.
Типа "Добавить файл в галерею"
Вот нашел старый пример. Не знаю, на сколько рабочий. Тестировать нужно
[CODE]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
[/CODE]