• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

engao

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

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

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

Спасибо!
 
A

allex

Вот так ....
Код:
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

Вот так ....
Код:
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

Попробуй использовать класс 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
 
N

nvyush

Спасибо!
Вариант интересный, очень даже работает, но немного муторный, т.к. нужно постоянно очищать Folder перед новым запуском процедуры.
Ни разу не муторно. Folder чистится одной строчкой:
Код:
Call notesView.AllEntries.RemoveAllFromFolder( foldername$ )
где notesView — очищаемая папка, а foldername$ — её имя.
 
T

TIA

allex
Важно, чтобы фолдер был приватным. Иначе будут отображаться результаты поиска других людей.

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

allex

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

Xalet

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

Green Team
17.02.2010
506
1
BIT
58
Вот у меня следующая проблема.
Есть вид архива отработанных документов 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

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

nayke

Но в вид нельзя ставить коллекцию документов. А переделывать на папку, тоже нельзя.
Остается только создавать приватную папку и отдельный пункт меню для поиска?
Для вашего поиска можно использовать @SetViewInfo.
Либо можно еще как в описанном примере выще менять SelectionFormula, однако при этом необходимо сделаать представление личным при открытии, а на закрытие сбрасывать на формулу по умолчанию.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!