Entry и View.istotal

pbnoob

Well-known member
25.08.2006
135
0
#1
Доброго всем времени суток!

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

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

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#3
насчет категорий - непонятно - чего не получается
как нафигатор получаем?

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

pbnoob

Well-known member
25.08.2006
135
0
#4
Код:
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"
 

hosm

* so what *
18.05.2009
2 442
6
#5
А зачем это?
Код:
Set entry=nav.GetFirstDocument
Категории ведь пропустит перед 1м документом...
Может, просто:
Код:
Set entry=nav.GetFirst
 

pbnoob

Well-known member
25.08.2006
135
0
#6
Ошибся блин при копирование :) лучше по сути подмогни
 

hosm

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

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

pbnoob

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
Noob
когда за советом ходят, то говорят "пожалуйста" и "спасибо", так что будь повежливее!
 

Omh

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

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#11
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, ты даже не удосужился подумать над предложенным тебе ответом!
пока не исправишься в поведении, фиг помогут!
 

pbnoob

Well-known member
25.08.2006
135
0
#12
Оставим уровень моего культурного развития на моей совести.
Менять вью, делать как то по другому это уже другой момент. Получается в дважды или более ктегоризованных вьюхах своство IsTotal некорректно что ли работает?????? или при каких условиях оно должно работать???
 

hosm

* so what *
18.05.2009
2 442
6
#14
Akupaka, спасибо за пояснения, не парься, я просто уходила. Don't worry - мне пока очень неплохо работается :)

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

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

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

pbnoob

Well-known member
25.08.2006
135
0
#15
Благодарю за ответ. Проблема конечно же решена, просто хотелось её успростить при использование свойства IsTotal. Спс за разъяснения на счет оного свойства, как говорится "этого то мне и надо было". Думаю можно эту тему считать закрытой.