Отображение результата поиска во View

Тема в разделе "Lotus - Программирование", создана пользователем engao, 12 май 2010.

  1. engao

    engao Гость

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

    Есть задача, не знаю можно ли ее решить средствами LoNo.

    В общем суть такова, что нужно каким-то удобным для пользователя образом отобразить коллекцию документов, полученную LotusScript-ом (например через db.Search()), т.е. получил коллекцию документов, добавил во view или отфильтровал view, оставив только полученные документы, и отдал пользователю.

    Спасибо!
     
  2. allex

    allex Гость

    Вот так ....
    Код (LotusScript):
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim j As Long
    Set db = session.CurrentDatabase
    Set view = db.GetView("All Documents")
    j = view.FTSearch( "server AND protocol", 0 )
    Set doc = view.GetFirstDocument()
    While Not(doc Is Nothing)
    Call doc.PutInFolder( "For Review", True )
    Set doc = view.GetNextDocument(doc)
    Wend
    Call view.Clear
     
  3. engao

    engao Гость


    Спасибо!
    Вариант интересный, очень даже работает, но немного муторный, т.к. нужно постоянно очищать Folder перед новым запуском процедуры.
     
  4. allex

    allex Гость

    Попробуй использовать класс NotesNewsletter

    Код (LotusScript):
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim newsletter As NotesNewsletter
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set collection = db.FTSearch( "arachnid", 15 )
    If ( collection.Count > 0 ) Then
    Set newsletter = New NotesNewsletter( collection )
    Set doc = newsletter.FormatMsgWithDoclinks( db )
    doc.Form = "Memo"
    doc.Subject = "The Arachnid Report"
    Call doc.Send( False, "Sharron Karasic" )
    End If
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ни разу не муторно. Folder чистится одной строчкой:
    Код (LotusScript):
    Call notesView.AllEntries.RemoveAllFromFolder( foldername$ )
    где notesView — очищаемая папка, а foldername$ — её имя.
     
  6. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    allex
    Важно, чтобы фолдер был приватным. Иначе будут отображаться результаты поиска других людей.

    Ещё можно на HTML страничку с таблицей отрисовать.
    Или РТ-поле заполнить с линками на найденные документы, как NewsLetter, только сам внешний вид контролируешь.
     
  7. allex

    allex Гость

    Ну я только идейно подсказал человеку направление мыслей
     
  8. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Код (LotusScript):
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim j As Long
    Set db = session.CurrentDatabase
    Set view = db.GetView("Result private view")
    view.SelectionFormula = str 'formula dlia DBSearch (sorry za translit)
    Call view.refresh
     
  9. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Вот у меня следующая проблема.
    Есть вид архива отработанных документов AllIshodDocumentiInWorkZdrav
    Я хочу прямо в нем отображать результаты поиска по архиву.
    Или возможно программно создать папку и открыть её с результатами поиска поверх текущего вида AllIshodDocumentiInWorkZdrav, а после поиска закрыть его.
    Или лучше сделать форму посика со встроенной папкой для результатов поиска?
    А можно ли изменять встроенный поиск?

    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim view As NotesView
    Dim doc As NotesDocument

    Set db = session.CurrentDatabase
    Set view = db.GetView("AllIshodDocumentiInWorkZdrav")
    searchFormula$ = {РЕГИСТРАЦИОННЫЙ_НОМЕР = "01-26/12-463"}
    Set collection = db.Search( searchFormula$,Nothing,0)

    If ( collection.Count > 0 ) Then
    Messagebox "есть доки"
    Set doc = view.GetFirstDocument()
    While Not(doc Is Nothing)
    Call doc.PutInFolder( "AllIshodDocumentiInWorkZdrav", True )
    Set doc = view.GetNextDocument(doc)
    Wend
    'call view.
    End If

    Но в вид нельзя ставить коллекцию документов. А переделывать на папку, тоже нельзя.
    Остается только создавать приватную папку и отдельный пункт меню для поиска?
     
  10. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Для вашего поиска можно использовать @SetViewInfo.
    Либо можно еще как в описанном примере выще менять SelectionFormula, однако при этом необходимо сделаать представление личным при открытии, а на закрытие сбрасывать на формулу по умолчанию.
     
Загрузка...

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