Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/102: Рейтинг темы: голосов - 102, средняя оценка - 4.79
Bomystoyr
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
1

Как Пройтись По Всем Респонсам

19.09.2013, 12:45. Просмотров 18332. Ответов 9
Метки нет (Все метки)

Ребят, сильно не пинайте, подскажите как правильно сделать.
Нужно пройтись по определенному документу и всем его респонсам и внести определенные правки.
Вложенность респоносов "до 5 уровней вниз".

начал писать так:

...
Set curdoc = curdb.Getdocumentbyunid("...")

If Not curdoc Is nothyng Then
.....
Set respcol = curdoc.Responses
Set respdoc = respcol.Getfirstdocument()

While Not respdoc Is Nothyng
.....
Set respdoc = respcol.Getnextdocument(respdoc)
Wend

End If

но так мы захватываем только 1 уровень респонсов. Для остальных уровней, как-то смущает писать аналогичную конструкцию.
Подскажите, как сделать правильно.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 12:45
Ответы с готовыми решениями:

Как "пройтись" по всем ответам?
Есть представление в котором отображаются документы, родители и потомки: Родитель1 Потомок 1...

Как пройтись по всем котролам?
Здравствуйте! Подскажите пожалуйста как пройтись по всем котролам, которые располагаются на панели...

Как пройтись по всем переменным?
у меня есть переменные x1,x2,x3,.....,xn. есть какой нибудь способ пройтись по ним всем и каждой...

Как пройтись по всем tooltip?
Добрый день, уже который час бьюсь над задачей. Мне нужно пройтись по всем tooltip и получить их...

Можно ли как-то пройтись по всем методам?
Пишу Irc-бота, у него есть множество функций, которые вызываются в зависимости от того, какую...

9
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
19.09.2013, 12:57 2
Для остальных уровней, как-то смущает писать аналогичную конструкцию.
Нечего смущаться) Рекурсия. Делаем тоже самое для каждого документа и так далее.
Можно(Нужно) просто функцию написать, в которую параметром передаем документ, а внутри функции обрабатываем каждый документ в цикле.
И там же в цикле вызываем эту же функцию.

.SpoilerTarget">Спойлер: Раскрывающийся Текст


LotusScript
1
2
3
4
5
6
7
8
9
10
11
Sub Perebor(param as notesDocument)
Set respcol = param.Responses
if respCol.Count < 1 then Exit Sub
Set respdoc = respcol.Getfirstdocument()
 
While Not respdoc Is Nothyng
.....
Call Perebor(respdoc)
Set respdoc = respcol.Getnextdocument(respdoc)
Wend
End Sub
Но, если у всех уровней есть один общий признак, скажем какое-то поле, которое прописано в основном документе и транслируется во все ответные и в ответные ответных и в ответные в ответных, которые к ответным... Но с другим именем поля(это важно)
То можно построить представление, в котором отобразить все документы, без уровней, которые отсортированы по этому наследуемому полю.
И брать сразу все документы из этого представления по ключу, а ключ - поле из основного документа.
И потом один цикл для всей этой коллекции.
Но этот метод подходит, только если архитектура позволяет.
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
19.09.2013, 13:28 3
как вариант - получить родителя а от него нафигатор CreateViewNavFromDescedants
и перебирайте в одном цикле всю коллекцию
0
Bomystoyr
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
19.09.2013, 22:40 4
сделал и через коллекцию и через вьюху.
Пробегает удачно по всем докам и делает с ними то что надо.
Но в конце вылетает ошибка- "expression out of range"
Как от нее избавиться, подскажите.
0
19.09.2013, 22:40
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
22.09.2013, 09:31 5
По коду надо смотреть, вставте это в код (пример для PostOpen) :

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Postopen
On Error Goto handler
Const FuncName = {Sub "Postopen" }
Dim ErrStr As String
 
Весь ваш код
 
Exit sub
handler:
ErrStr = FuncName & ": " & Err &", в строке " & Erl & chr(10) & chr(13)& Error$
msgbox ErrStr,16
Exit sub
End sub
0
Bomystoyr
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
22.09.2013, 09:47 6
>savl

сделал по примеру приведенному в самом начале.
Проходит по всем докам и когда респонсов не остается, тогда и вылетает ошибка.
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
22.09.2013, 09:52 7
Может я что не так написал)
Он строку с ошибкой выдал? что в этой строке?
Если в коде тайны нет, можно глянуть?
0
Bomystoyr
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
22.09.2013, 11:24 8
Но в конце вылетает ошибка- "expression out of range"
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
22.09.2013, 11:29 9
ок... В конце, так в конце... И строки нет...
в Debugере смотрели когда?
Можно код увидеть?
0
Bomystoyr
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
24.09.2013, 22:09 10
savl

разобрался в тот же день, просто стыдно признаться - забыл написать в конце Exit sub
Спасибо за помощь =)
0
24.09.2013, 22:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 22:09

Как пройтись по всем записям в таблице БД?
Как пройтись по всем записям в таблице, чтобы их данные, при каждом проходе, записывать в...

Как пройтись по всем items в Object?
Object FeatArr; .... featArr = swFeatMgr.GetFeatures(false); //тут получаю в переменной кучку...

Как пройтись по всем полям класса?
А можно как пройтись по всем полям класса? Например есть класс: class myclass { поле1 поле2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.