Организация поиска (фильтра)

  • Автор темы lepa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

lepa

#1
Всем привет!!!
2 недели назад пришлось открыть lotus disigner по требованию руководства и начать лепить базу (думаю, что это объясняет моё знание lotus-а как программера, хотя как админ знаю его неплохо).
И так суть моего вопроса:
Необходимо сделать поиск, а точнее я бы сказал фильтр, т.е. при выборе одной из позиции фильтра (при нажатии скажем кнопки в меню) в списке документов остовались только те документы по которым производился поиск (отфильтровка). Аналог данной функции (агента), а точнее результат работы, являтся стандартный поиск в лотусовском клиенте, единственно чтобы были предустановленные параметры поиска.
Народ помогите сделать подобное, оч надо.
К стати можноли как нибудь передать данному поиску (стандартному) свои параметры, тип что нибудь @Command( [ViewShowSearchBar] ; on; "Хочу чтонить найти" ).
Спасибо всем зарание.
 
U
#2
Привет.
Задача довольно типична :)

Есть 3 варианта решения.

1. Агентом собираешь коллекцию документов и перекидываешь их в отдельную папку, папку предъявляешь как результат поиска.

преимущества: данные можно сортировать
недостаток: скорость работы, если много документов то открытие папки будет происходить какое то время, печать - стандартная лотусиная бяда соответственно и оформление результата :(

2. Формировать статичный отчет в Excell c помощью Excell.Application
преимущества: можно красиво оформить и распечатать, совместимость с MSOffice, возможность подкорректировать данные
недостаток: скорость работы, если много документов то формирование конечноего файла будет долгим.

3. Формирование текстового файла с расширением html :)
преимущества: можно красиво оформить с помощью тегов, относительное быстрое формирование, по сравнению с вариантом 2, можно в отдельной колонке сделать ссылку при нажатии на которую откроется документ в лотусе.
Результирующий файл можно открыть и в Word и в Excell.
недостаток: отсутствие динамичной сортировки результата
 
L

lepa

#3
Варианты 2 и 3 сразу отпадают, все манипуляции должны проходить в лотусе.
Вариант 1 делал, неустраивает то что результат поиска находится в отдельной папке, необходимо чтоб все это происходило в одном виде в котором работает пользователь. А можно ли в виде "All Documents" сначало скрыть все документы а потом отобразить результат поиска?? ну это так мысль о реализации как сделать :)
 
U
#4
ну, хозяин - барин :)

по поводу отражение документов в том же виде. я тут подумал, может получится:

1. Кнопка(search) во вью "Alldocuments" по которой открывается диалог в котором определяются критерии поиска документа. По закритии диалога вызывается агент.
2. В агенте осуществляется поиск и всем найденым документам (collection.StampAll) выставляется флаг found=1
3. Виду "Alldocuments" в этом же агенте меняется SelectionFormula (view.SelectionFormula = "SELECT (found=1)").
4. Предусмотреть кнопку(reset) по которой значение SelectionFormula выставляется в дефолтное значение.

По идее должно работать :)
 
D

Domino6

#5
<!--QuoteBegin-usb+28:06:2005, 16:01 -->
<span class="vbquote">(usb @ 28:06:2005, 16:01 )</span><!--QuoteEBegin-->Есть 3 варианта решения.
[snapback]21708" rel="nofollow" target="_blank[/snapback]​
[/quote]
Стандартными средствами можно искать и сохранять запросы, искать как полнотекстовым так и контекстным поиском
 
L

lepa

#6
Для: usb
Спасибо вроде все получилось и у меня вышел следующий код
Код:
Sub Click(Source As Button)
    Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim collect As NotesDocumentCollection	
Set db = s.CurrentDatabase
Set view = db.GetView("All Documents")
Set collect = db.FTSearch("Хочу найти", 5000)
Call collect.StampAll("found",1)
view.SelectionFormula="SELECT(found=1)"
Call view.Refresh	
End Sub
Код неахти какой, но вроде работает но чуть чуть не так как хотелось бы, почемуто
Код:
Call view.Refresh
не обнавляет вид, а после того как закроешь базу и опять зайдешь то все ок отображаются нужные мне документы, как мне победить эту ситуевину
 
U
#7
попробуй вот так:
Dim w as New NotesUIWorkspace
...
тут все как у тебя написано
...
Call w.ReloadWindow
 
U
#8
<!--QuoteBegin-Domino6+29:06:2005, 08:24 -->
<span class="vbquote">(Domino6 @ 29:06:2005, 08:24 )</span><!--QuoteEBegin-->Стандартными средствами можно искать и сохранять запросы, искать как полнотекстовым так и контекстным поиском
[snapback]21739" rel="nofollow" target="_blank[/snapback]​
[/quote]
да, можно, можно и слона танцевать научить :( но научить юзеров, а тем более начальство строить запросы :) ОЧЕНЬ ТРУДНО :)
 
L

lepa

#9
Для: usb
Суппер!!! Огромное спасибо!!!
Все работает.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#10
А как с одновременной работой ?
А если один из документов открыт на редактирование кем-нибудь, не получим ли мы конфликт репликации ?

Посмотри на @SetViewInfo. Как раз заменяет фильтр.
 
U
#11
Будут конфликты, обязательно будут если база активно юзается это вообще засада будет. Просто автор просил рассказать как можно сделать, я ответил.

IMHO проблема имено в постановке задачи, при таких условиях стандартными лотусиными возможностями сделать ничего нельзя. Можно прикрутить API т.е. формировать строку поиска и с помощью API-ных функций передавать ее в searchbar и нажимать кнопку найти.

Я не совсем понимаю почему нельзя документы в папку помещать и открывать ее пользователю по окончанию работы запроса? Для пользователя ничего не изменется, как была вьюха, так и останется...
 
G

Guest

#12
<!--QuoteBegin-Medevic+29:06:2005, 10:58 -->
<span class="vbquote">(Medevic @ 29:06:2005, 10:58 )</span><!--QuoteEBegin-->Посмотри на @SetViewInfo. Как раз заменяет фильтр.[/quote]
Глючная штука этот @SetViewInfo, как то не прижился у меня он. И очень много ограничений на его использование, т.е. можно фильтр накладывать только по колонкам которые присутствуют в виде. А если надо найти документы по более сложному алгоритму?
 
L
#13
Я не совсем понимаю почему нельзя документы в папку помещать и открывать ее пользователю по окончанию работы запроса? Для пользователя ничего не изменется, как была вьюха, так и останется...
Как мне сказал начальник, цитирую его дословно: - "Это крайне неудобно переходить из одной папки в другую". И все дальнейшие мои доводы просто разбивались об его броню. Вариантов других просто небыло. А насчет конфликтов реплики я погляжу.
К стати про апи, как мне прикрутить их в агент, как никак С++ + API почти родная стихия, в каком виде они вставляются?? длл или еще как нить??
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#14
На мой взгляд, самое лучшее как сказал Domino6- это сохранить запрос. При том, что он постоянно один и тот же.
<!--QuoteBegin-usb+29:06:2005, 11:20 -->
<span class="vbquote">(usb @ 29:06:2005, 11:20 )</span><!--QuoteEBegin-->да, можно, можно и слона танцевать научить smile.gif но научить юзеров, а тем более начальство строить запросы blink.gif ОЧЕНЬ ТРУДНО
[snapback]21746" rel="nofollow" target="_blank[/snapback]​
[/quote]
Можно сохранить запрос самому, а пользователю останется только загрузить его. Если не смогут, то нафиг такого пользователя.
 
U
#15
<!--QuoteBegin-lepa+29:06:2005, 11:38 -->
<span class="vbquote">(lepa @ 29:06:2005, 11:38 )</span><!--QuoteEBegin-->Как мне сказал начальник, цитирую его дословно: - "Это крайне неудобно переходить из одной папки в другую".[/quote]
Дык, по окончании работы агента можно открыть ему папку автоматом

<!--QuoteBegin-lepa+29:06:2005, 11:38 -->
<span class="vbquote">(lepa @ 29:06:2005, 11:38 )</span><!--QuoteEBegin-->К стати про апи, как мне прикрутить их в агент, как никак С++ + API почти родная стихия, в каком виде они вставляются?? длл или еще как нить??[/quote]
тут должно быть http://www-130.ibm.com/developerworks/lotus
 
G

Guest

#16
<!--QuoteBegin-Medevic+29:06:2005, 11:45 -->
<span class="vbquote">(Medevic @ 29:06:2005, 11:45 )</span><!--QuoteEBegin-->На мой взгляд, самое лучшее как сказал Domino6- это сохранить запрос. При том, что он постоянно один и тот же.

Можно сохранить запрос самому, а пользователю останется только загрузить его. Если не смогут, то нафиг такого пользователя.
[snapback]21753" rel="nofollow" target="_blank[/snapback]​
[/quote]

да, если запрос не меняется это самый простой способ.
а где в условиях задачи написано, что запрос один и тот же? :)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#17
<!--QuoteBegin-Guest+29:06:2005, 12:55 -->
<span class="vbquote">(Guest @ 29:06:2005, 12:55 )</span><!--QuoteEBegin-->а где в условиях задачи написано, что запрос один и тот же?
[snapback]21755" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я думаю, это следует из условия задачи (т.е. отбор по нажатию кнопки). Хотя, лучше подождать автора.

Для: lepa
Можно сделать формирование html. Без создания всяких файлов. И все будет в Лотусе. Сам делал.
 
L
#18
Код:
Я думаю, это следует из условия задачи (т.е. отбор по нажатию кнопки). Хотя, лучше подождать автора.
Да именно, изините что не уточнил, есть 4 кнопки в меню которые отбирают необходимые документы с заданными условиями. На данный момент вроде все работает начальник счастлив, а я буду отлавливать баги, если таковые будут.
 
N
#19
Уважаемый, usb
К Вам большая просьба - зарегистрируйтесь, пожалуйста, на форуме. Спасибо.
 
G

Guest

#20
Здравствуйте!
Я только учусь, строго не судите.
Мне нужно отбирать документы в представлении по определенному условию, есть кнопочка Поиск при нажатии кот. открывается диалоговое окно в кот. выбираем параметр отбора и присваиваем search. Т.е. найти документы, в которых поле fieldname=search. Вроде кажется просто, но у меня не получается присваивать то значение которое выбирается из списка. Наверное, не совсем понятно написано, задайте дополнительные вопросы.
Помогите, пожалуйста.
 
Статус
Закрыто для дальнейших ответов.