Работа с Notesviewnavigator

Тема в разделе "Lotus - Программирование", создана пользователем Sasha*, 25 мар 2008.

  1. Sasha*

    Sasha* Гость

    У меня есть представление с 4 колонками, например:
    Страна, Город, Место отдыха, Название.
    Все колонки категоризированы.

    Если я знаю страну и город, как мне с помощью NotesViewNavigator получить все «места отдыха» в этом городе?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    NotesView.GetAllDocumentsByKey или notesView.GetAllEntriesByKey не пойдет ?
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Только view раскатегоризовать.
    Ну или сделать ещё одно.
     
  4. Sasha*

    Sasha* Гость

    Пробовала, не работает.
    С помощью notesView.GetAllEntriesByKey если в качестве ключа беру значение из второй колонки, то возвращает коллекцию равную 0, что не правильно (документов с таким ключом намного больше).

    GetAllDocumentsByKey не подходит, потому что потом придется работать с полями документа, что бы получить необходимые значения - а мне нужно не привязываться к полям.
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В качестве ключа надо брать массив ключей из значений первой и второй колонок.
    Например:
    notesView.GetAllEntriesByKey(Split("Россия~Москва", "~"), True)
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Medevic
    Батенька, тебе действительно больше нравиться аррай получать из Split'a?
    Проблем с этим не было?

    Кмк, читабельнее задекларить array и юзать его...
    Код (Text):
    Dim Keys(1) As String
    Keys(0) = "Латвиджа"
    Keys(1) = "Рига"
    notesView.GetAllEntriesByKey(Keys, True)
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не было. Но я редко использую поиск по нескольким ключам.
    А у тебя были? :)
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для Medevic

    Я нарывлся на такое, что, например
    Код (Text):
    Forall x in Split("1~2~3~4~5~", "~")
    не работал

    В то время, как
    Код (Text):
    Dim V As Variant
    V = Split("1~2~3~4~5~", "~")
    Forall x in V
    работал, как надо.

    Я слегка струхул и решил в одну строчку громоздкие конструкции не юзать :)
    Лучше расписать по составным частям...
     
  9. Alexander (Criz)

    Alexander (Criz) Гость

    Как вариант делать составную категорию в первой колонке, например Field1+ "~"+ Field2.
    И искать только по одному текстовому параметру.
     
  10. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Omh, у меня типа такого тоже не работало, пока не сделал типа так
    Код (Text):
    ww = Split("1~2~3~4~5~", "~")
    Forall x in ww
    Пример точно не помню, но идея такова....
     
  11. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    у документа есть свойство valueArray = notesDocument.ColumnValues - которое представляет значение колонок єтого документа в виде, тоесть notesDocument.ColumnValues(0) - первая колонка и т.д

    а для того чтобы получить под-под-категорию через вю навигатор нужно руками в цыкле переберать вид, но это на базах в 5 000 доков будет ацки долго. вобще перебор по навигатору почемуто медленее чем перебор по колекции доков.
     
  12. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    А не наоборот?? Я (если не ошибась) везде читал про обратное!! Или я не прав?
     
  13. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    lionk
    Стремуюсь использовать ColumnValues: мало-ли кому придёт в голову чё-то модифицировать во view.
    Да и не прозрачно это: видишь что юзается ColumnValues: наждо лезть во view, отсчитывать колонку (какой там base 0 или 1?) и т.д.

    Я вообще я не признаю ф-ии/процедуры, которые работают с данными ui-объектов (в приципе, колонка тоже не совсем backgroung объект).
    Кмк, гораздо стабильнее взять нужный док и ф-ей из него получить то, что тебе надо, не используя ColumnValues, которая ко всему прочему возвращает такую шнягу, как Array of variants :blink:
     
  14. Sandr

    Sandr Гость

    Omh
    Полностью согласен.
     
  15. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я ждал, я ждал, что кто-то поддержит :eek:

    Просто после того, как перелопатишь n-ное кол-во баз со всякими ColumnValues, логике на C/CFD полях и прочим, как я называю, олдскулом, вырабатываеться привычка писать гогнозащищённый код.

    Т.е. надо будет что-то исполнить на бэкграунде, ты берёшь ф-ию из биб-ки и выполняешь.
    И тебе пофик, ты в UI документе, в агенте или в кнопке во view.
    Ты выполняешь логику, которая должна быть централизована.

    А не эта хрень с CFD полями, или чудо ф-ии с входными парметрами uidoc, ItemName и ещё какое-нить гогно :)

    Тьфу.
     
  16. Sasha*

    Sasha* Гость

    Я сделала следующим образом :
    Код (Text):
     //keys- массив ключей
    Set entry = view.GetEntryByKey( keys, True )
    Set nav = view.CreateViewNavFrom( entry )
    ...............
    While Not(entry Is Nothing)
    strValue = entry.ColumnValues( i + 1 )
    ...................................
    ...................................
    Set entry = nav.GetNextCategory(entry)
    Wend
    Пока все колонки категоризированные все работает как нужно.
    Сейчас столкнулась со следующей проблемой: Если последняя колонка без категории то я могу взять только ее первое значение, т.е я выбираю: страна - Россия, Город –Сочи, Место отдыха – музей, и из последней колонки необходимо получить все названия музеев, то я получаю только первое название.

    Подскажите, пожалуйста, как получить все названия?
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Array из 3 элеменов + GetAllDocumentsByKey
    Раскатегоризуй view, я тебе точно говорю.
    А то я уже предчувствую следующий вопрос :eek: денька эдак через 2...
     
  18. Sandr

    Sandr Гость

    Я к этой практике пришел кода запарило писать отдельно для ВЕБа и отдельно для толстого клиента..
    Стараюсь писать так, что бы и в ВЕБе и в толстом клиенте можно было юзать...
     
Загрузка...
Похожие Темы - Работа Notesviewnavigator
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    19
  2. Hoasker
    Ответов:
    0
    Просмотров:
    64
  3. garri671
    Ответов:
    0
    Просмотров:
    52
  4. lelik200969
    Ответов:
    0
    Просмотров:
    50
  5. Kozolick
    Ответов:
    0
    Просмотров:
    136

Поделиться этой страницей