База даних:)

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

  1. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

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

    каждий пользователь должен каждий день сделать 1 документ, припустим пользоватеей 50 а сделано доков 35, надо вичислить кто не сделал доки:)

    есть кодик:) но так как я "тормоз в шкриптиках" прошу помочь:) хотелось чтоб вибивало таблицу с теми кто не сделал доку.
    или натолкните на правильний путь а то сам не доганяю куда етот шкриптик ковирять

    Dim s As New NotesSession
    Dim thisdb As NotesDatabase
    Dim userview As NotesView
    Dim docsview As NotesView
    Dim userdoc As NotesDocument
    Dim docs As NotesDocumentCollection
    Dim memodoc As NotesDocument
    Dim RTBody As NotesRichTextItem
    Dim keyArr(0 to 1) As String

    Set thisdb=s.CurrentDatabase
    Set userview=thisdb.GetView("Users")
    Set docsview=thisdb.GetView("DocsByUser")

    Set userdoc=userview.GetFirstDocument

    Do Until userdoc Is Nothing
    keyArr(0)=userdoc.NameLN(0)
    keyArr(1)=Today

    Set docs=userview.GetAllDocumentsByKey(keyArr, True)
    If docs.Count=0 Then
    Set memodoc=thisdb.CreateDocument
    memodoc.Form="Memo"
    memodoc.From="Robot"
    memodoc.SendTo=userdoc.NameLN(0)
    memodoc.Subject="ах ты гад!"
    Set RTBody=memodoc.CreateRichTextItem("Body")
    RTBody.AppendText("А вот теперь сиди и думай, что ты забыл сделать!")
    Call memodoc.Send(False)
    End If

    Set userdoc=userview.GetNextDocument(userdoc)
    Loop
     
  2. allex

    allex Гость

    А в се делать в обной view

    1 столбец - пользователь
    2 столбец - сделал он док или нет

    Соответственно посториишь таблицу и намылишь письма
     
  3. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Использовать списки(List).
    В качестве тега - имя пользователя. Значение - тип boolean.
    Сначала в List загнать весь список пользователей со значение false(никто не сделал).
    Потом пройтись по списку сегодняшних документов и поменять значения соответствующих пользователей на true.

    Еще проще на формулах сделать. Достаточно получить два списка пользователей(через @DbColumn и @DbLookup) и найти их пересечение. Это если пользователей не очень много. :)
     
  4. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

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

    а вот на счет (List). я б почитал:)
     
  5. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

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

    а ети листи можно использовать в агенте?

    например я пишу

    Dim mylist List As String
    Dim newtag As String
    Dim newvalue As String
    Dim keyArr(0 To 1) As String
    mylist ("гб-іт") = "Олексяк Іван"


    насколько я понимаю:) здесь нужно перечислить всех юзверей которие могут делать доки.
    дальше должен сделать проверку на доки тоесть чтото типа етого

    Set userdoc=userview.GetFirstDocument

    Do Until userdoc Is Nothing
    keyArr(0)=userdoc.NameLN(0)
    keyArr(1)=Today

    Set docs=userview.GetAllDocumentsByKey(keyArr, True)
    If docs.Count=0 Then

    да?или нет:blink:
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Можно.

    Типа того. Только не вручную перечислять, а из представления взять.
     
Загрузка...

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