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

  • Автор темы engao
  • Дата начала
E

engao

Гость
#1
Доброго времени суток!

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

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

Спасибо!
 
A

allex

Гость
#2
Вот так ....
Код:
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
 
E

engao

Гость
#3
Вот так ....
Код:
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

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

allex

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

Код:
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
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#5
Спасибо!
Вариант интересный, очень даже работает, но немного муторный, т.к. нужно постоянно очищать Folder перед новым запуском процедуры.
Ни разу не муторно. Folder чистится одной строчкой:
Код:
Call notesView.AllEntries.RemoveAllFromFolder( foldername$ )
где notesView — очищаемая папка, а foldername$ — её имя.
 

TIA

:-)
Lotus team
15.05.2009
790
2
#6
allex
Важно, чтобы фолдер был приватным. Иначе будут отображаться результаты поиска других людей.

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

allex

Гость
#7
Ну я только идейно подсказал человеку направление мыслей
 

Xalet

Well-Known Member
08.08.2008
410
0
#8
Код:
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
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#9
Вот у меня следующая проблема.
Есть вид архива отработанных документов 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

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

nayke

Well-Known Member
04.08.2010
310
0
#10
Но в вид нельзя ставить коллекцию документов. А переделывать на папку, тоже нельзя.
Остается только создавать приватную папку и отдельный пункт меню для поиска?
Для вашего поиска можно использовать @SetViewInfo.
Либо можно еще как в описанном примере выще менять SelectionFormula, однако при этом необходимо сделаать представление личным при открытии, а на закрытие сбрасывать на формулу по умолчанию.