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

Тема в разделе "Lotus - Программирование", создана пользователем Cleric-Lviv, 11 июн 2009.

  1. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Всем привет!
    вопрос состоит вот в чем:
    на вю много записей, вю содержит 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
     
  2. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    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";"")));
    ...
     
  3. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    вида ? может колонки..... зачем имя вида заносить в константу если ми вид обявляем....и дальше только через колонки етого вида работаем....может колонку обявить?
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Cleric-Lviv, он имел в виду, что название вида ты мог неправильно написать в db.GetView("comleted"), поэтому объект вида мог не инициализироваться.

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

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Да нет, Akupaka, там чётко написано.



    Я вот думаю, при чём тут колонка "5 до 5р"?
     
  6. K-Fire

    K-Fire Гость

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

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    скриптом мона считать через хэши (List в LS)
    доки необязательно дергать - значение мона брать и ентриса (ColumnValue)
    список имен колонок - суваем в хэш (с их нумерами), предварительно имена задаем равными полям (ежели не писали формул в колонках - вьюшка так и сделала)
    Код (Text):
    )
    Set view=docprice.ParentDatabase.GetView(LOOKUP_VIEW)
    Dim cList List As Integer
    Forall c In view.Columns
    cList(c.ItemName)=c.Position
    End Forall
    получение значения:
    Код (Text):
            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
    в ошибка в вашем коде - имя вью, наверняк, неправильное
     
  8. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    да не Akupaka правильно написал, сори если я неправильно обяснил......(я не училт руского язика..........)
    а колонка "5 до 5р" отображает ети дание..... так вот я думаю что надобно обращатся к колонке и уже там устраивать поиск

    да нет надобно пощитать количество етих записей в колонках...... для чево надо? ну для меня.... я себе придумал задачу чтоб учить лотус скрипт....ну и вот пробую ее решить.........
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, я, в отличие от инфы на форуме, знаю задачу, иначе не уточнял бы...

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

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

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

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Akupaka

    Спасибки, хорошо расписал мою задачу :)))))))
     
  11. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Ну, я не телепат. Как задачу поставил, так её и решаю.
     
  12. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    TIA
    :) надеюсь тепреь легче будет понять суть задачи........
     
Загрузка...

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