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

SkyRanger

Active member
17.03.2007
44
0
#1
есть Action с кодом

Код:
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 полями с выбором даты и хотспот с надписью

код хотспота

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

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

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

morpheus

скриптописец
07.08.2006
3 915
1
#2
Для: SkyRanger
в отладчике посмотрите , чему равен uiview?

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

SkyRanger

Active member
17.03.2007
44
0
#3
Отладчик не работает для кода хотспота в этой форме :(

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

morpheus

скриптописец
07.08.2006
3 915
1
#4
Для: 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
 

SkyRanger

Active member
17.03.2007
44
0
#5
Да, я ставил месседж боксы перед каждой и получаю ошибку на ней

В том то и дело. Пошагово кошда выполняю, она работает как надо. Так как результат во вьюхе отображается какой я хочу!
 
30.05.2006
1 345
11
#6
"НЕправильной дорогой идете, товариСЧ" !
Шареная вьюха - и доступ к формуле у КАЖДОГО юзера? На лицензиях разоритесь...
 

SkyRanger

Active member
17.03.2007
44
0
#7
Всмысле???

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

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

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
<!--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.
Надо сделать кнопку в представлении. Тогда всё будет хорошо.
И то будет нормально работать если пользоваться этой формой будет один юзер. Как вариант можно для каждого пользователя сделать отдельное представление. Это если юзеров немного.
 

GROMILA

Well-known member
08.04.2004
297
0
#9
"НЕправильной дорогой идете, товариСЧ" !
Оно конечно неправильно. Особенно при многопользовательской работе.
Товарищ меняет формулу выборки в представлении, которым могут пользуются несколько пользователей!!! Да и права нужны.

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

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

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

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

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

Как вообще в Лотусе решать сею проблему на Ваш взгляд?
Может возможно подменить форму встроенного полнотекстного поиска, которая есть в представлении?
 
30.05.2006
1 345
11
#10
>Может возможно подменить форму встроенного полнотекстного поиска, которая есть в представлении?
Эта "идея" многократно перетиралась на разных форумах. Сошлись к тому, что самопальный ПТПоиск - это db.FTSearch + (личный) фолдер :( Тогда и сортировки есть, и индикатор релевантности. Минусы - очевидны.
Маленькая хорошая новость от 6-ки: @SetViewInfo - по-гибче single-category будет, и сортировки, вроде остаются
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#11
<!--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