Форма для фильтрации во вьюхе

Тема в разделе "Lotus - Программирование", создана пользователем SkyRanger, 27 мар 2007.

  1. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    есть Action с кодом

    Код (Text):
     
    Sub Click(Source As Button)

    Dim w As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = w.CurrentDocument
    'Set doc = uidoc.Document  
    Dim vl As Variant

    Dim fl As Boolean
    fl = w.DialogBox( "rep_2date_form" , True , True , True , True , True , False , "Отчет")  

    End Sub
    есть форма с 2 полями с выбором даты и хотспот с надписью

    код хотспота

    Код (Text):
     
    Sub Click(Source As Button)

    Dim ws As New NotesUIWorkspace     
    Dim uidoc As NotesUIDocument
    Dim uiview As NotesUIView
    Dim view As NotesView
    Dim formula As String

    Set uidoc = ws.CurrentDocument

    Set uiview = ws.CurrentView

    formula = {SELECT form="uregcard" & date_obr_1>[} & uidoc.FieldGetText("date1") & {] & date_obr_1<[} & uidoc.FieldGetText("date2") & {]}

    Set view = uiview.View
    view.SelectionFormula = formula
    view.Refresh
    Call ws.ViewRebuild

    End Sub
    Идея такая. Юзверь щелкает по кнопке акшина во вьюхе. Открывается форма. Юзверь выбирает 2 даты с и по щелкает по хотспоту и автоматически производится фильтрация в диапазоне этих дат.

    Но, как то странно. В режиме отладки все работает. В обычном режиме строка
    Set view = uiview.View

    дает ошибку мол объекта нема <_<

    Как заставить работать или подскажите плиз решение получше.
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: SkyRanger
    в отладчике посмотрите , чему равен uiview?

    з.ы.
    ИМХО.... пользуйтесь папками
     
  3. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Отладчик не работает для кода хотспота в этой форме :(

    А инфу по юзанью папок если можно плиииз
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: SkyRanger
    Putinfolder к колеккции документов

    з.ы. откуда же Вам извесно что
    <!--QuoteBegin-SkyRanger+27:03:2007, 03:46 -->
    <span class="vbquote">(SkyRanger @ 27:03:2007, 03:46 )</span><!--QuoteEBegin-->Но, как то странно. В режиме отладки все работает. В обычном режиме строка
    Set view = uiview.View
    [snapback]60219" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    если


    <!--QuoteBegin-SkyRanger+27:03:2007, 09:05 -->
    <span class="vbquote">(SkyRanger @ 27:03:2007, 09:05 )</span><!--QuoteEBegin-->Отладчик не работает для кода хотспота в этой форме
    [snapback]60237" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    Вы уверенны что ошибка именно на строке Set view = uiview.View
     
  5. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Да, я ставил месседж боксы перед каждой и получаю ошибку на ней

    В том то и дело. Пошагово кошда выполняю, она работает как надо. Так как результат во вьюхе отображается какой я хочу!
     
  6. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    "НЕправильной дорогой идете, товариСЧ" !
    Шареная вьюха - и доступ к формуле у КАЖДОГО юзера? На лицензиях разоритесь...
     
  7. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Всмысле???

    Ну как бы сказть помягче :) Про лицензии пока вопрос не встает.

    А как тоды сделать???

    Не хочу давать юзверям тупо строкой дату вводить, тем более что некрасиво 2 окна со строкой ввода подряд...
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-SkyRanger+27:03:2007, 03:46 -->
    <span class="vbquote">(SkyRanger @ 27:03:2007, 03:46 )</span><!--QuoteEBegin-->Идея такая. Юзверь щелкает по кнопке акшина во вьюхе. Открывается форма. Юзверь выбирает 2 даты с и по щелкает по хотспоту и автоматически производится фильтрация в диапазоне этих дат.

    Но, как то странно. В режиме отладки все работает. В обычном режиме строка
    Set view = uiview.View

    [snapback]60219" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    В хотспоте на форме ты никак не получишь NotesUIView.
    Надо сделать кнопку в представлении. Тогда всё будет хорошо.
    И то будет нормально работать если пользоваться этой формой будет один юзер. Как вариант можно для каждого пользователя сделать отдельное представление. Это если юзеров немного.
     
  9. GROMILA

    GROMILA Well-Known Member

    Регистрация:
    8 апр 2004
    Сообщения:
    297
    Симпатии:
    0
    Оно конечно неправильно. Особенно при многопользовательской работе.
    Товарищ меняет формулу выборки в представлении, которым могут пользуются несколько пользователей!!! Да и права нужны.

    Но вот, Константин, скажите а как вообще решить подобное требование фильтрации в лотусе?
    И дело не только в датах С-ПО.
    Мне почти каждый день приходят слезные просьбы в стиле
    "А СДЕЛАЙТЕ КАК В EXCEL АВТОФИЛЬТР"

    На сей день я вижу несколько квазизамен автофильтру Excel:
    1. Сколько полей фильтра - столько и представлений, категоризированных по полю
    - выбором поля фильтрации выступает представление (Клик #1)
    - выбором значения филтра выступает выбор и разворачивание категории (Клик #2 и Клик #3)
    ОРГАНИЧЕНИЯ: при этом не имеет смысла сортировать и поиск выизуальный

    2. Сделать приватные папки и пихать в них документы по условиям фильтра
    Вроди все хорошо, но с приватными папками можно сказать невозможно работать на скриптах!!!!
    Приватные папки невозможно централизованно обновлять при установке обновлений
    Если открыть документ и изменить значения в фильтруемых полях, то докумен необходимо удалять из папки или перезаполнять папку по фильтру.

    3. Создать форму, разместить по всей площади встроенное категоризированное представление,
    настроенное на одно поле фильтра в ShowSinglrCategory
    Проблемы сортировки и поиска аналогичны пункту #1

    4. Можно еще конечно суетить документы по полям ридерам, но это медленно и ужасно

    Как вообще в Лотусе решать сею проблему на Ваш взгляд?
    Может возможно подменить форму встроенного полнотекстного поиска, которая есть в представлении?
     
  10. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    >Может возможно подменить форму встроенного полнотекстного поиска, которая есть в представлении?
    Эта "идея" многократно перетиралась на разных форумах. Сошлись к тому, что самопальный ПТПоиск - это db.FTSearch + (личный) фолдер :( Тогда и сортировки есть, и индикатор релевантности. Минусы - очевидны.
    Маленькая хорошая новость от 6-ки: @SetViewInfo - по-гибче single-category будет, и сортировки, вроде остаются
     
  11. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Constantin A Chervonenko+29:03:2007, 17:02 -->
    <span class="vbquote">(Constantin A Chervonenko @ 29:03:2007, 17:02 )</span><!--QuoteEBegin-->Маленькая хорошая новость от 6-ки: @SetViewInfo - по-гибче single-category будет, и сортировки, вроде остаются
    [snapback]60638" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Я так и сделал. Правда, @SetViewInfo немного глючная штука. ;)
    Сортировки по клику на колонку нету. Только заранее заданная.

    Технология простая. Допустим нужно сделать фильтр по трем полям: поле1, поле2, поле3.
    Создаем представление с категоризированной колонкой со значением: "~~" : поле1 + "~~" : "~" + поле2 + "~" : "~~" + поле3 : поле1 + "~" + поле2 : поле1 + "~~" + поле3 : "~" + поле2 + "~" + поле3 : поле1 + "~" + поле2 + "~" + поле3.
    "~" - это разделитель. Можно любой другой взять. Главное, чтобы он никогда не встречался в значении полей.
    В результате один документ попадет сразу в 8 категорий.
    Дальше просто делаем @SetViewInfo. :(
    Из плюсов:
    1) Это самый быстрый вариант фильтра. Если данные меняются редко, то работает практически мгновенно.
    2) Не нужно особых прав.
    3) Все представления общие.

    Из минусов:
    1) Т.к. документ находится в нескольких категориях представление разрастается очень сильно. По сути в 2^n + n раза (n - число полей для фильтра). А это плохо сказывается на производительности.
    2) Небольшие глюки @SetViewInfo.
    3) Не будет работать с многозначными полями. Хотя, это можно исправить, но представление разрастется еще больше.
    4) Долгое индексирование.
    5) Некоторая морока в реализации. :D
     
Загрузка...

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