Выборка Для Представления

orion

Active member
22.10.2013
39
0
#1
Всем доброго времени суток!
Столкнулся со странным явлением.
Есть представление, в котором выборка документов идёт по условию:
Код:
select (form="Форма1" | form="Форма2") & (field1="Текст") & (field2=@date(@now))
- field2 - имеет формат Date/Time. Располагается в подформе, которая внедрена в формы Форма1 и Форма2.

А теперь главное. Если поле делаю Computed, то выборка документов не работает. Если поле - Editable, то выборка документов работает.
Это так и должно быть?
 

savl

Lotus team
28.10.2011
2 135
104
#2
Never use @Today or @Now in View selection or column formulas; these functions will kill your server.
Поля работаю, только что проверял, правда поле было текстовое.
Так что вопрос что именно прописано в поле field2, возможно там затесалось время.
 

susinmn

Well-known member
16.10.2007
529
3
#3
Всем доброго времени суток!
Столкнулся со странным явлением.
Есть представление, в котором выборка документов идёт по условию:
Код:
select (form="Форма1" | form="Форма2") & (field1="Текст") & (field2=@date(@now))
- field2 - имеет формат Date/Time. Располагается в подформе, которая внедрена в формы Форма1 и Форма2.

А теперь главное. Если поле делаю Computed, то выборка документов не работает. Если поле - Editable, то выборка документов работает.
Это так и должно быть?
1. Тормозить будет представление
Попробуй так: @Date(field2)=@Date(@TextToTime("Today"))
 

orion

Active member
22.10.2013
39
0
#4
savl

Поля работаю, только что проверял, правда поле было текстовое.
Так что вопрос что именно прописано в поле field2, возможно там затесалось время.
Поле именно Дата/Время. И, навряд ли, от смены типа Computed/Editable появляется/исчезает время.... :blush:

susinmn

1. Тормозить будет представление
Попробуй так: @Date(field2)=@Date(@TextToTime("Today"))
Твой вариант заработал с типом поля Computed. Не знаю даже в какой бубен стучать :D
Спасибо большое!
 

erdi

Well-known member
20.08.2008
265
17
#5
ну 1-е. Не использовать @now в представлениях...если без них никак, тогда уже лучше today := @Today; и (field2=today)
2-е На всякий случай я ставлю проверку f2:=@If(@IsText(field2);@TextToTime(field2);field2); и (f2=today)

объединив оба пожелания
Код:
today := @Today;
f2:=@If(@IsText(field2);@TextToTime(field2);field2);
select (form="Форма1" | form="Форма2") & (field1="Текст") & (f2=today)
Добавлено: для общего развития на будущее
Основы производительности для разработчиков IBM Lotus Notes
Time/Date views in Notes: What are the options?
 

savl

Lotus team
28.10.2011
2 135
104
#7
orion
Значит в поле field2 было время, раз @Date помогла.

Вот тебе пример LS агента, который каждое утро в 6 часов меняет дату в формуле.
Вполне быстро открывается представление после этого.

Поменяй как необходимо и сделай расписание, одно из решений для ухода от @Today/@Now

Код:
Option Public
Option Declare

Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dToday As New NotesDateTime(Today)
Dim sFormula As String

Set db = ses.Currentdatabase

Set view = db.Getview("Pay2Today")
sFormula = {SELECT Form = "Invoice":"InvoiceSF":"InvoiceNoF" & deleted = "" & StatusNumber = "600" & Srok = [}
sFormula = sFormula & dToday.Dateonly & {] }
sFormula = sFormula & { & @IsUnavailable($Conflict)} 
view.Selectionformula = sFormula

End Sub
 

savl

Lotus team
28.10.2011
2 135
104
#10
UpdateAll все базы обработает + окурки снесет , а если этого не надо?
Like Update, Updall rebuilds all corrupted view indexes and full-text search indexes that it encounters.
Так что думаю именно перестроить не получится, если не побить.
Так что лучше агентом.
 

orion

Active member
22.10.2013
39
0
#11
savl
Извиняюсь, поторопился вчера с выводом. Перепроверил - не работает и с "today" если поле ставится "Computed".
Учёл замечания. Взял агента на вооружение :blush: Спасибо!

erdi
Спасибо за ссылки!