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

Тема в разделе "Lotus - Программирование", создана пользователем lepa, 28 июн 2005.

Статус темы:
Закрыта.
  1. lepa

    lepa Гость

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

    usb Гость

    Привет.
    Задача довольно типична :)

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

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

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

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

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

    lepa Гость

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

    usb Гость

    ну, хозяин - барин :)

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

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

    По идее должно работать :)
     
  5. Domino6

    Domino6 Гость

    <!--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]
    Стандартными средствами можно искать и сохранять запросы, искать как полнотекстовым так и контекстным поиском
     
  6. lepa

    lepa Гость

    Для: usb
    Спасибо вроде все получилось и у меня вышел следующий код
    Код (Text):
    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
    Код неахти какой, но вроде работает но чуть чуть не так как хотелось бы, почемуто
    Код (Text):
    Call view.Refresh
    не обнавляет вид, а после того как закроешь базу и опять зайдешь то все ок отображаются нужные мне документы, как мне победить эту ситуевину
     
  7. usb

    usb Гость

    попробуй вот так:
    Dim w as New NotesUIWorkspace
    ...
    тут все как у тебя написано
    ...
    Call w.ReloadWindow
     
  8. usb

    usb Гость

    <!--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]
    да, можно, можно и слона танцевать научить :( но научить юзеров, а тем более начальство строить запросы :) ОЧЕНЬ ТРУДНО :)
     
  9. lepa

    lepa Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А как с одновременной работой ?
    А если один из документов открыт на редактирование кем-нибудь, не получим ли мы конфликт репликации ?

    Посмотри на @SetViewInfo. Как раз заменяет фильтр.
     
  11. usb

    usb Гость

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

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

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

    Guest Гость

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

    lepa Гость

    Как мне сказал начальник, цитирую его дословно: - "Это крайне неудобно переходить из одной папки в другую". И все дальнейшие мои доводы просто разбивались об его броню. Вариантов других просто небыло. А насчет конфликтов реплики я погляжу.
    К стати про апи, как мне прикрутить их в агент, как никак С++ + API почти родная стихия, в каком виде они вставляются?? длл или еще как нить??
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    На мой взгляд, самое лучшее как сказал 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]
    Можно сохранить запрос самому, а пользователю останется только загрузить его. Если не смогут, то нафиг такого пользователя.
     
  15. usb

    usb Гость

    <!--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
     
  16. Guest

    Guest Гость

    <!--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]

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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. Без создания всяких файлов. И все будет в Лотусе. Сам делал.
     
  18. lepa

    lepa Гость

    Код (Text):
    Я думаю, это следует из условия задачи (т.е. отбор по нажатию кнопки). Хотя, лучше подождать автора.
    Да именно, изините что не уточнил, есть 4 кнопки в меню которые отбирают необходимые документы с заданными условиями. На данный момент вроде все работает начальник счастлив, а я буду отлавливать баги, если таковые будут.
     
  19. nor

    nor Гость

    Уважаемый, usb
    К Вам большая просьба - зарегистрируйтесь, пожалуйста, на форуме. Спасибо.
     
  20. Гость

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

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