ОБСУЖДЕНИЕ

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

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

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

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

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

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

3. Формирование текстового файла с расширением html :)
преимущества: можно красиво оформить с помощью тегов, относительное быстрое формирование, по сравнению с вариантом 2, можно в отдельной колонке сделать ссылку при нажатии на которую откроется документ в лотусе.
Результирующий файл можно открыть и в Word и в Excell.
недостаток: отсутствие динамичной сортировки результата
 
Варианты 2 и 3 сразу отпадают, все манипуляции должны проходить в лотусе.
Вариант 1 делал, неустраивает то что результат поиска находится в отдельной папке, необходимо чтоб все это происходило в одном виде в котором работает пользователь. А можно ли в виде "All Documents" сначало скрыть все документы а потом отобразить результат поиска?? ну это так мысль о реализации как сделать :)
 
ну, хозяин - барин :)

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

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

По идее должно работать :)
 
<!--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]
Стандартными средствами можно искать и сохранять запросы, искать как полнотекстовым так и контекстным поиском
 
Для: 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
не обнавляет вид, а после того как закроешь базу и опять зайдешь то все ок отображаются нужные мне документы, как мне победить эту ситуевину
 
попробуй вот так:
Dim w as New NotesUIWorkspace
...
тут все как у тебя написано
...
Call w.ReloadWindow
 
<!--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]
да, можно, можно и слона танцевать научить :( но научить юзеров, а тем более начальство строить запросы :) ОЧЕНЬ ТРУДНО :)
 
Для: usb
Суппер!!! Огромное спасибо!!!
Все работает.
 
А как с одновременной работой ?
А если один из документов открыт на редактирование кем-нибудь, не получим ли мы конфликт репликации ?

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

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

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

да, если запрос не меняется это самый простой способ.
а где в условиях задачи написано, что запрос один и тот же? :)
 
<!--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. Без создания всяких файлов. И все будет в Лотусе. Сам делал.
 
Код:
Я думаю, это следует из условия задачи (т.е. отбор по нажатию кнопки). Хотя, лучше подождать автора.
Да именно, изините что не уточнил, есть 4 кнопки в меню которые отбирают необходимые документы с заданными условиями. На данный момент вроде все работает начальник счастлив, а я буду отлавливать баги, если таковые будут.
 
Уважаемый, usb
К Вам большая просьба - зарегистрируйтесь, пожалуйста, на форуме. Спасибо.
 
Здравствуйте!
Я только учусь, строго не судите.
Мне нужно отбирать документы в представлении по определенному условию, есть кнопочка Поиск при нажатии кот. открывается диалоговое окно в кот. выбираем параметр отбора и присваиваем search. Т.е. найти документы, в которых поле fieldname=search. Вроде кажется просто, но у меня не получается присваивать то значение которое выбирается из списка. Наверное, не совсем понятно написано, задайте дополнительные вопросы.
Помогите, пожалуйста.
 
Статус
Закрыто для дальнейших ответов.

Статистика тем

Создано
lepa,
Последний ответ от
Guest,
Ответы
33
Просмотры
15 973