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

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

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

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

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

Entry и View.istotal

  • Автор темы pbnoob
  • Дата начала
P

pbnoob

Доброго всем времени суток!

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

Имеем дважды категоризованную вьюху в первой колонке по текстовому полю 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)
 
K

Krjemilek

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
насчет категорий - непонятно - чего не получается
как нафигатор получаем?

про тоталы - уже не помню
 
P

pbnoob

Код:
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"
 
H

hosm

А зачем это?
Код:
Set entry=nav.GetFirstDocument
Категории ведь пропустит перед 1м документом...
Может, просто:
Код:
Set entry=nav.GetFirst
 
P

pbnoob

Ошибся блин при копирование :) лучше по сути подмогни
 
H

hosm

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

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

pbnoob

2OKEN читай вниматетельнее
1) вьюха ДВАЖДЫ категоризована, то есть тоталы по 2ой категории интересуют, а не общетабличный
2) вопрос о том что работает, а что нет. (увы твой совет не очень полезеть)
3) не кипяти меня плз на счет внимательности, я тебе точно так же про внимательность при чтение могу ткнуть (а посты набивай там -------> если дельным советом помочь не можешь)
 
A

Akupaka

Noob
когда за советом ходят, то говорят "пожалуйста" и "спасибо", так что будь повежливее!
 
O

Omh

Noob
Посчитай заново, чем с этими навигаторами париться.
Взял доки по категории (только не из этого view, т.к. оно дважды категаризовано, следовательно вернёт не то, что надо), пробежал по ним, собрал данные, отобразил.
Всё.

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

Akupaka

IsCategory должно работать в данном коде, а потом можно попытаться проверить у нее ColumnValues.

Код:
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

A 9
A1 1
1
A2 3
3
A3 5
5
B 10
B1 4
4
B2 6
6
19


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

pbnoob

Оставим уровень моего культурного развития на моей совести.
Менять вью, делать как то по другому это уже другой момент. Получается в дважды или более ктегоризованных вьюхах своство IsTotal некорректно что ли работает?????? или при каких условиях оно должно работать???
 
H

hosm

Akupaka, спасибо за пояснения, не парься, я просто уходила. Don't worry - мне пока очень неплохо работается :)

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

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

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

pbnoob

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

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