Getnextsibling, Getprevsibling In View

  • Автор темы soleil
  • Дата начала
S

soleil

У меня есть вид, первая колонка отсортирована по определенному полю. По условию я никак не могу поставить первую колонки с унидом. А мне нужно получить документ по униду в этом виде, причем вид обязательно должен быть с иерархией, потому что необходимо брать затем от полученного документа по униду предыдущий и последующий документы в том же уровне иерархии.

Могу ли я как-то в виде с иерархией получить документ по униду (причем, чтобы унид был не первой колонкой), а затем от него брать GetNextSibling, GetPrevSibling?
 
A

amigolinx

Могу ли я как-то в виде с иерархией получить документ по униду (причем, чтобы унид был не первой колонкой), а затем от него брать GetNextSibling, GetPrevSibling?
сначала получить сам документ со стороны базы, использовав
Код:
Set startDoc = notesDatabase.GetDocumentByUNID( unid$ )
а потом передать полученный док параметром в
Код:
Set nextDoc = notesView.GetNextSibling( startDoc )
как получить юнид стартового документа - на ваш вкус и выбор :gifts:
 
N

nvyush

сначала получить сам документ со стороны базы, использовав
Код:
Set startDoc = notesDatabase.GetDocumentByUNID( unid$ )
а потом передать полученный док параметром в
Код:
Set nextDoc = notesView.GetNextSibling( startDoc )
как получить юнид стартового документа - на ваш вкус и выбор :gifts:
ХМ, насколько я помню, в коллекциях такое не катит, doc должен быть взят именно из коллекции, а не из базы по unid, даже если он есть в коллекции. Как к этому отнесётся view не знаю, на эксперименты времени нет.
 
S

soleil

Да я так делала. Но в таком случае выходит ошибка, что документ startDoc не в виде notesView
 
N

nvyush

Да я так делала. Но в таком случае выходит ошибка, что документ startDoc не в виде notesView
Ну вот, об этом я и говорил. Нужно взять документ из view либо через GetDocumentByKey, либо перебирать все документы до достижения нужного.
Для ускорения можно попробовать взять документ из базы, вычислить, в какой он категории, взять GetDocumentByKey для этой категории и перебирать все доки, проверяя юнид, пока не доползём до него.
 
S

soleil

Ну вот, об этом я и говорил. Нужно взять документ из view либо через GetDocumentByKey, либо перебирать все документы до достижения нужного.
Для ускорения можно попробовать взять документ из базы, вычислить, в какой он категории, взять GetDocumentByKey для этой категории и перебирать все доки, проверяя юнид, пока не доползём до него.

точно, буду перебирать.
nvy, спасибо еще раз! уже десятый раз меня спасаете :gifts:
 
N

nvyush

soleil
Наверное, лучше сделать так:
1. Получить юнид дока.
2. Взять док.
3. Вычислить категорию.
4. Взять GetEntryByKey
5. Перебирать NotesViewEntry до достижения нужного.
Во вьюху добавить скрытую колонку с юнидом и проверять ColumnValues(*).
Кстати, почему юнид, можно обойтись и ноутИД.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
с энтрисами именно по NotesViewEntry и ColumnValues м.б. засада...
можно вьюнавигатор получить и преобразовать полученный GetEntryByKey в нафигаторовский, через GetEntry(entry)
и далее бежать по нафигатору
 
S

soleil

А можно создать новый вид, копированием исходного и вставкой колонки с UNID?
Дело в том что, вид обязательно должен быть с отображением иерархии (чтобы брать документы GetNextSibling). а если искать по униду то, как я понимаю, вид должен быть с отключенной иерархией и первой отсортированной колонкой.
Может я неграмотно выразилась в постановке задачи, но, в любом случае, все решилась перебором. Спасибо всем за внимание.
 
R

RAJ

а это вам не поможет?
Set notesViewNavigator = notesView.CreateViewNavFrom( navigatorObject [, cacheSize& ] )
Parameters
navigatorObject
Variant. A Document or ViewEntry object representing the starting entry. If you specify Nothing, this method generates an error.
cacheSize&
Note This parameter is for COM only.
Long. Optional. The size of the navigator cache in view entries. Legal values are 0 (no cache) through 128 (default).
Return value
notesViewNavigator
A NotesViewNavigator object. The new view navigator whose first entry is the specified Document or ViewEntry object; subsequent entries are all the entries in the view that follow the specified entry.
 
S

soleil

В силу того, что в лотусе я новичок, навигаторами не пользовалась.
RAJ, спасибо за еще один способ. Буду знать.
 
Мы в соцсетях:

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