Entry и View.istotal

Тема в разделе "Lotus - Программирование", создана пользователем pbnoob, 1 окт 2009.

  1. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    Доброго всем времени суток!

    Вопрос реально нубский, да только закос от него не меньше :)

    Имеем дважды категоризованную вьюху в первой колонке по текстовому полю NWave (содержит значения типа "01","02","03"), во второй по полю City(содержит значения типа "Кострома","Рязань","Ярославль"), в остальных дополнительная информация и в последней Total. Задача проста для начала по ключу NWave запихнуть в динамический массив строки с Total по городам. Пример.
    >03
    >>Кострома ... ... 15
    >>Рязань ... ... 25
    >>Ярославль ... ... 14
    >02
    >>Кострома ... ... 11
    >>Рязань ... ... 36
    >>Ярославль ... ... 27
    >01
    >>Кострома ... ... 46
    >>Рязань ... ... 20
    >>Ярославль ... ... 33

    Пользователь задал NWAve=02 Должны получить
    Кострома 11
    Рязань 36
    Ярославль 27

    Буду рад любой помощи и советам :) (если понадобится могут код выложить того что есть, только он один фиг не работает, так как при переборе по Entry через NotesViewNavigator\NotesViewEntriesCollection свойство Entry.IsTotal постоянно false)
     
  2. Krjemilek

    Krjemilek Гость

    Похожая беда, чувствую что секрет до постыдного прост но в чем загвоздка не пойму:
    беру вид с категориями и тоталами и строю по нему навигатор и тупо бегу по нему getnext-ом и каждая entry в виде entry.IsDocument = True, IsTotal и IsCategory отсутствуют как класс.
    Спасибо.
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    насчет категорий - непонятно - чего не получается
    как нафигатор получаем?

    про тоталы - уже не помню
     
  4. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    Код (Text):
       
    Dim k As Integer
    Dim level As Integer
    Dim total As Integer

    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim nav As NotesViewNavigator
    Dim entry As NotesViewEntry

    Set db=s.CurrentDatabase
    Set view=db.GetView(VIEW_NAME)
    Set nav=view.CreateViewNavFromCategory("03")

    k=0
    Set entry=nav.GetFirst
    Do While Not (entry Is Nothing)
    'level=entry.IndentLevel
    total=entry.IsTotal
    Print Cstr(k)+"  tot="+Cstr(total)
    k=k+1
    Set entry=nav.GetNext(entry)
    Loop
    выдает ВСЕ строки типа "номер False"
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А зачем это?
    Код (Text):
    Set entry=nav.GetFirstDocument
    Категории ведь пропустит перед 1м документом...
    Может, просто:
    Код (Text):
    Set entry=nav.GetFirst
     
  6. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    Ошибся блин при копирование :) лучше по сути подмогни
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А нет у IsTotal такой фичи, что она дает True только для последних итоговых значений (в самом низу вьюшки), если вообще она работает? Довольно давно с этим работала, не помню.
    IsCategory должно работать в данном коде, а потом можно попытаться проверить у нее ColumnValues.

    P.S. Если пишешь код, надо ж внимательней =)
     
  8. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    2OKEN читай вниматетельнее
    1) вьюха ДВАЖДЫ категоризована, то есть тоталы по 2ой категории интересуют, а не общетабличный
    2) вопрос о том что работает, а что нет. (увы твой совет не очень полезеть)
    3) не кипяти меня плз на счет внимательности, я тебе точно так же про внимательность при чтение могу ткнуть (а посты набивай там -------> если дельным советом помочь не можешь)
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Noob
    когда за советом ходят, то говорят "пожалуйста" и "спасибо", так что будь повежливее!
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Noob
    Посчитай заново, чем с этими навигаторами париться.
    Взял доки по категории (только не из этого view, т.к. оно дважды категаризовано, следовательно вернёт не то, что надо), пробежал по ним, собрал данные, отобразил.
    Всё.

    Akupaka, предидущим постом, кстати, тоже по сути ответил.
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Код (Text):
    Sub Initialize
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim v As notesview
    Dim vnav As NotesViewNavigator
    Dim ven As NotesViewEntry

    Set db = s.CurrentDatabase
    Set v = db.GetView("TotalTestView")
    Set vnav = v.CreateViewNavFromCategory("A")
    Msgbox vnav.Count
    Set ven = vnav.GetFirst
    While Not(ven Is Nothing)
    Msgbox Join(ven.ColumnValues, ";")
    Set ven = vnav.GetNextSibling(ven)
    Wend

    End Sub

    Noob, ты даже не удосужился подумать над предложенным тебе ответом!
    пока не исправишься в поведении, фиг помогут!
     
  12. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    Оставим уровень моего культурного развития на моей совести.
    Менять вью, делать как то по другому это уже другой момент. Получается в дважды или более ктегоризованных вьюхах своство IsTotal некорректно что ли работает?????? или при каких условиях оно должно работать???
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    тебе может и все-равно, а вот девушка обидеться могла! как ей теперь работать весь день? :)
    мог бы и извиниться, если мужик! )
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Akupaka, спасибо за пояснения, не парься, я просто уходила. Don't worry - мне пока очень неплохо работается :)

    Поймите, что Категория в представлении не является Total. У категории в представлении могут в некоторых колонках отображаться итоговые значения, но из-за этого IsTotal для категории не вернет True. IsTotal=True только для строки общетабличных итогов. Все дальнейшие вопросы "почему именно так?" - не ко мне.

    Если Вы не поняли мои ответы, то объясняю по полочкам:
    1. Во-первых, вы захотели получать значения проходом по вьюшке через навигатор. Я вам указала на ошибку в приведенном коде, которая пропускала 1ю нужную категорию. Не считаю, что это ответ совсем не по существу, я ж не про погоду рассказывала. Чем плохо то, что я дописала про внимательность при кодировании?
    2. Во-вторых, видя, что полезных советов больше нет, указала, что entry.IsTotal, которое вы используете, если и работает, то работает только для итоговых значений вьюхи. То, что не это итоговое значение надо, я прекрасно поняла. Вам нужны итоговые значения категорий, следовательно, логично догадаться, что нужно проверять, не IsTotal, а IsCategory. Я указала, что в приведенном варианте решения сработает получение значений колонок у категории (ну, подкатегории, если вам так понятней) - таким образом можно получить значение итогов подкатегорий нужной категории.

    Ваше дело решать, как лучше. Omh, кстати, вполне дельный совет дал.
    Но есть ряд задач, где нужно использовать навигаторы. Я выводила вьюшки/папки с категориями и общетабличными итогами в отчет ок.2 лет назад, мне для этой задачи проще было воспользоваться навигатором.
    Так что, если хотите дальше разбираться - разбирайтесь, ну не надо наезжать тут на всех, что это работает не так, как Вам хочется :)
     
  15. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    Благодарю за ответ. Проблема конечно же решена, просто хотелось её успростить при использование свойства IsTotal. Спс за разъяснения на счет оного свойства, как говорится "этого то мне и надо было". Думаю можно эту тему считать закрытой.
     
Загрузка...

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