Пощитать количество......

Cleric-Lviv

Lotus team
03.01.2008
600
0
#1
Всем привет!
вопрос состоит вот в чем:
на вю много записей, вю содержит 3 колонки. колонки отвечают за поля "picture_1_5_1" "picture_1_5_2" "picture_1_5_3" которие могут принимать значение "111" "112" "113" "114".
вопрос состоит вот в чем: надобно опредилить количество значений "111" "112" "113" "114" в каждой из колонок . я думаю ето надобно скриптом......
вобщем мой алгоритм таков
вичисляем вю, далее берем первий документ по колонке "5 до 5р" и ищем первое поле "picture_1_5_1" если там значение "111" тогда n1=n1+1 если другое пропускаем..... ход мислей правильний?

Sub Initialize
Dim ses As New NotesSession
Dim ws As NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim view As NotesView
Dim column As NotesViewColumn
Dim item As NotesItem
Dim entry As NotesViewEntry
Dim Sentry As Variant
Dim n1 As Integer

n1=0

Set db = ses.CurrentDatabase
Set view = db.GetView("comleted")
Set entry = view.GetEntryByKey("5 до 5р") -----здесь ошибку видает object variable is not set
If entry.IsTotal Then
Sentry = doc.GetItemValue("picture_1_5_1")

Forall m In Sentry
If (m="111") Then
n1=n1+1
End If
End Forall
'If (entry <> "111") Then
'Messagebox "проїхали"
' Else
Messagebox (n1)
End If

End Sub
 

TIA

:-)
Lotus team
15.05.2009
790
3
#2
1. Имя вида поместить в константу и пользовать её.
2. Для определения константы имя вида скопировать через буфер обмена.
3. Если значений в колонке менее 64кб.

viewName:="comleted";
v:=@DbColumn("";"";viewName;n);
ca_1:=@Count(@Trim(@Replace(v;"112":"113":"114";"")));
ca_2:=@Count(@Trim(@Replace(v;"111":"113":"114";"")));
ca_3:=@Count(@Trim(@Replace(v;"111":"112":"114";"")));
ca_4:=@Count(@Trim(@Replace(v;"111":"112":"113";"")));

v:=@DbColumn("";"";viewName; m);
cb_1:=@Count(@Trim(@Replace(v;"112":"113":"114";"")));
...
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#3
1. Имя вида поместить в константу и пользовать её.
вида ? может колонки..... зачем имя вида заносить в константу если ми вид обявляем....и дальше только через колонки етого вида работаем....может колонку обявить?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
Cleric-Lviv, он имел в виду, что название вида ты мог неправильно написать в db.GetView("comleted"), поэтому объект вида мог не инициализироваться.

TIA, @Replace(v;"112":"113":"114";"") нельзя использовать, эти значения не константы приложения, а значения, кот. указывает юзер из огромного списка (по-идее)...
или я не понял сути предложения...
 
K

K-Fire

#6
Это можно и тоталзами в самой вью посчитать. Хотя вопрос зачем это все надо, и как это показывать пользователю не раскрыт :)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#7
скриптом мона считать через хэши (List в LS)
доки необязательно дергать - значение мона брать и ентриса (ColumnValue)
список имен колонок - суваем в хэш (с их нумерами), предварительно имена задаем равными полям (ежели не писали формул в колонках - вьюшка так и сделала)
Код:
)
Set view=docprice.ParentDatabase.GetView(LOOKUP_VIEW)
Dim cList List As Integer
Forall c In view.Columns
cList(c.ItemName)=c.Position
End Forall
получение значения:
Код:
		Do While Not entry Is Nothing
If Not entry.Document Is Nothing Then

If Not entry.Document.IsDeleted Then
Set doc=entry.Document
Dim i As Integer
i=0
Forall f In keyFields
Dim key As String
key=f
If (Iselement(cList(key))) Then
Dim v As Variant
v=entry.ColumnValues(cList(key)-1)
keyArr(i)=GetFirstString(v)
Else
Set item=doc.GetFirstItem(f)	
keyArr(i)=item.Text
End If
i=i+1
End Forall
в ошибка в вашем коде - имя вью, наверняк, неправильное
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#8
Да нет, Akupaka, там чётко написано.
Я вот думаю, при чём тут колонка "5 до 5р"?
да не Akupaka правильно написал, сори если я неправильно обяснил......(я не училт руского язика..........)
а колонка "5 до 5р" отображает ети дание..... так вот я думаю что надобно обращатся к колонке и уже там устраивать поиск

Это можно и тоталзами в самой вью посчитать. Хотя вопрос зачем это все надо, и как это показывать пользователю не раскрыт :)
да нет надобно пощитать количество етих записей в колонках...... для чево надо? ну для меня.... я себе придумал задачу чтоб учить лотус скрипт....ну и вот пробую ее решить.........
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
Да нет, Akupaka, там чётко написано
ну, я, в отличие от инфы на форуме, знаю задачу, иначе не уточнял бы...

Я вот думаю, при чём тут колонка "5 до 5р"?
там вид построен таким образом: имеется документ в котором пользователь выставляет всего девять оценок (по три оценки (5, 4, 3) в трех категориях до 5, до 10, до 15 лет); в виде отображается этот документ, и 9 колонок, с соотв оценкой. только получается, что фиксируется голосуемый документ относительно оценки, а не оценка относительно документа. и вид отображает в колонке соотв. оценки код голосуемого документа.
таким образом, если документ с кодом 111 находится в категории до 5 лет, и ему дали оценку 5, то он будет отображаться в колонке 5 до 5р (украинский интерфейс, сокращение от "років")
надеюсь, так будет понятней :)
и задача заключается в том, чтобы посчитать общее кол-во балов на каждый алиас документа. если документу дали 5 балов N раз, 4 - M, 3 - K, то общая оценка будет равна 5*N + 4*M + 3*K...

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

вообще, это продолжение темы о голосовании...
вероятно, нужно было в ней продолжать общение, чтобы было понятнее народу...
по поводу объединения вопрос к модерам... :)