• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Объединение Коллекции Документов Из Разных Баз

  • Автор темы Mitya
  • Дата начала
M

Mitya

Гуру, подскажите, как собрать коллекции документов из разных баз в одну коллекцию.

1) Перебираю базы
2) Из каждой базы получаю по коллекции документов

Как мне получить суммарную коллекцию всех коллекций?

Спасибо.
 
D

divankin

Никак.
Все документы коллекции должны быть из одной базы.

Зачем вам это нужно? Почему нельзя сначала обработать коллекцию из одной базы, затем коллекцию из другой?

Если очень нужно, то можно загнать все документы в массив или в лист.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Если память не изменяет - коллекция работает в рамках одной базы.
Можно создать массив или список коллекций и перебирая базы заполнять каждую из коллекций
 
K

Kee_Keekkenen

Никак.
Все документы коллекции должны быть из одной базы.

Зачем вам это нужно? Почему нельзя сначала обработать коллекцию из одной базы, затем коллекцию из другой?

Если очень нужно, то можно загнать все документы в массив или в лист.

либо их копии с указанием откуда они есть..
 
M

Mitya

Никак.
Все документы коллекции должны быть из одной базы.

Зачем вам это нужно? Почему нельзя сначала обработать коллекцию из одной базы, затем коллекцию из другой?

Если очень нужно, то можно загнать все документы в массив или в лист.

Зачем....
потом я на базе этой коллекции формирую excel файл. А так, для каждой базы - свой Excel - печально =)

в Массив! это как?

Dim arr
Dim colldoc As NotesDocumentCollection
.........
for _ to _
......
Set colldoc =db.Search(SearchFormula,Nothing,0)
??????
Next
Call Excel(???)

p.s. NickProstoNick - память не изменяет. Метод Merge (Все документы, входящие в параметр метода, должны быть из той же БД, что и объект)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Документы в массив не надо. Лучше загнать коллекции в массив и немного переделать функцию Excel().
 
D

divankin

Если через массив коллекций, то примерно так

Dim colldoc() As NotesDocumentCollection
.........
redim colldoc(count)
for _ to _
......
Set colldoc(i) =db.Search(SearchFormula,Nothing,0)

Next
Call Excel(colldoc)

Ну и внутри Excel помнить, что это массив
 

savl

Lotus Team
28.10.2011
2 591
309
BIT
138
Да можно все сделать это... Просто напишите свою DocumentCollection.
Суть: Свой класс, элементы: список баз где лежат документы(храним объекты баз), массив объектов(документов), массив UNIDов, счетчик элемента в коллекции, свои методы получения документов и все необходимое далее, включая сортировку, очистку и тд.
Стандартный ход, как и обработчик ошибок.
Что-то вроде этого должно быть:
Код:
Public Class collection
Private DbList List As Variant
Private Elements() As Variant
Private ElementsUID() As Variant
Private Count As Long
Private FldSort As String
Private TypeSort As Integer'(1-UP, 2 - DOWN, 0 - Not Sorting)
Private Nth As Long ' счетчик
....
End Class

Штука конечно память будет отжирать достаточно и скоростью не сильно обладает, но можно пооптимизировать.
Для задач, где надо одним действием обработать кучу документов из разных баз, подходить идеально (ИМХО)
На основе данного класса можно написать транзакционную коллекцию, да и транзакционный стэк.
 

garrick

Lotus Team
26.10.2009
1 342
150
BIT
128
потом я на базе этой коллекции формирую excel файл. А так, для каждой базы - свой Excel - печально =)
Что-то мешает сформировать файл по одной коллекции, а затем добавить в этот же файл данные из другой?
 

savl

Lotus Team
28.10.2011
2 591
309
BIT
138
И да, для данной задачи подойдет массив коллекций, как посоветовали Medevic и Divankin.
И размещать на для каждой базы на отдельном листе удобнее.

Или действительно дополнить просто Excel, как предложил garrick

offtop: как-то медленно стал печатать...
 
A

afest

дык тут вообще по ходу дела сервачным агентом пахнет... как уже сказали - создать массив коллекций и в расписании агента поставить его на ночь, никто тормозов домино не заметит, ну и на утро будет готов док
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
можно загонять в массив rid:unid, о получении конкретных данных уже "думать позже"
хранить доки - накладно как по памяти так и по трафику
о самих коллекциях тоже надо думать (о способе их получения)
может сделать "сервисную вьюшку" с ключами

Добавлено:
Что-то мешает сформировать файл по одной коллекции, а затем добавить в этот же файл данные из другой?
часто мешает тормознутость КОМа (через кот. любсят туды пихать данные) и размер данных
запихнуть, чтобы потом еле ворочать многомегабайтный файл - не лучший вариант
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
52
Интересно, почему вдруг все повелись на этот троллинг (невозможность загнать доки в NotesDocumentCollection из разных баз уже обсуждалась, как и все варианты собственных классов-контейнеров документов).
 
A

Anatoly

Интересно, почему вдруг все повелись на этот троллинг (невозможность загнать доки в NotesDocumentCollection из разных баз уже обсуждалась, как и все варианты собственных классов-контейнеров документов).
1.Автор о невозможности не в курсе. И, скорее всего, поиском не воспользовался
2.У остальных предверие выходных и сами выходные
3.Проблемма не тривиальная и, вообщем-то, практическая.

У самого, чувствую, скоро появится необходимость собирать документы из разных баз и обрабатывать их одним куском в хронологическом порядке.
 
D

divankin

Интересно, почему вдруг все повелись на этот троллинг (невозможность загнать доки в NotesDocumentCollection из разных баз уже обсуждалась, как и все варианты собственных классов-контейнеров документов).
Странные претензии. Человеку проще спросить, мне по кайфу поделиться своими знаниями. Для форума тоже хорошо - он живет.
Кому от этого плохо?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Странные претензии. Человеку проще спросить, мне по кайфу поделиться своими знаниями. Для форума тоже хорошо - он живет.
Кому от этого плохо?
Влад начал чистить форум, обьединять темы - теперь умничает ;)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
52
мне по кайфу поделиться своими знаниями.
Вы считаете, что городить массив коллекций для того, чтобы выплюнуть результаты поиска по нескольким базам в один Excel-файл, нормальным решением и хорошим советом, тем более новичку? В чём заключаются здесь Ваши знания? В том, "каких извращенческих массивов здесь на форуме ещё не было"?

3.Проблемма не тривиальная и, вообщем-то, практическая.
Проблема в том, что человек не знает что такое массив (#5), и, походу, вообще ничего, отсюда и все "нетривиальные проблемы".
Разве здесь не очевиден внешний цикл по БД с записью/дописью в тот же файл в потоковом режиме? Зачем вообще тогда "собирать коллекции документов из разных баз в одну коллекцию"? Здесь же говорили на эту тему. Ответ на вопрос, наверное, потому что "Для форума тоже хорошо - он живет." ©
Это не Вам, Anatoly, это просто мысли вслух...
 
D

divankin

Вы считаете, что городить массив коллекций для того, чтобы выплюнуть результаты поиска по нескольким базам в один Excel-файл, нормальным решением и хорошим советом, тем более новичку? В чём заключаются здесь Ваши знания? В том, "каких извращенческих массивов здесь на форуме ещё не было"?

Проблема в том, что человек не знает что такое массив (#5), и, походу, вообще ничего, отсюда и все "нетривиальные проблемы".
Разве здесь не очевиден внешний цикл по БД с записью/дописью в тот же файл в потоковом режиме? Зачем вообще тогда "собирать коллекции документов из разных баз в одну коллекцию"? Здесь же говорили на эту тему. Ответ на вопрос, наверное, потому что "Для форума тоже хорошо - он живет." ©
Это не Вам, Anatoly, это просто мысли вслух...

Идеальных решений вообще не бывает. Бывают наилучшие решения для данной конкретной задачи. Но специфика вопросов на форуме такова, что не хватает информации для правильной оценки как задачи, так и уровня разработчика. Поэтому на форуме предлагают разные варианты решения, а разработчик из них выбирает приемлимый для него.
Если посмотреть мое первое сообщение, то я тоже поинтересовался почему нельзя сначала обработать одну коллекцию, затем другую. Но дальше стало ясно, что автор склоняется к варианту с массивами, я показал ему, как этот вариант реализуется. Пусть узнает хоть один способ.
К сожалению, в теме так и не нашлось никого, кто бы разъяснил автору поточный способ обработки коллекций.
По части "извращенсческих массивов", то бывают ситуации, когда такое решение является оптимальным.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
52
Но дальше стало ясно, что автор склоняется к варианту с массивами
Автор от незнания остановился на том, о чём он хоть что-нибудь слышал, на неверном для данной задачи решении, в чём все ему стали усердно помогать.

я показал ему, как этот вариант реализуется. Пусть узнает хоть один способ.
Всё по коллекциям и массивам документов есть в теме Сортировка документов коллекции, в т.ч. область применения массивов документов, и лучший по логике и проработанности алгоритм от Darker'а; можно было просто дать ссылку. Получилось не "старые песни о главном", а "новые о старом".

К сожалению, в теме так и не нашлось никого, кто бы разъяснил автору поточный способ обработки коллекций.
Пост garrick'а как раз был об этом. Он и пытался направить в нужную сторону.

По части "извращенсческих массивов", то бывают ситуации, когда такое решение является оптимальным.
Бывают. Но, исходя из условий задачи, сейчас не та ситуация.
В итоге бестолковая тема, которую заменил БЫ RTFM + просто здравый смысл (даже не надо читать кучу полезной инфы, что уже есть на форуме).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!