のーつ6から、スクリプトからビューの選択条件を変更できるのね。
ってことで、
ビューを開いたときに条件式が変更できるようなものを作ってみた。
Sub Queryopen(Source As Notesuiview, Continue As Variant)
Dim view As NotesView
Dim formula As String
formname$ = |((Form = "keijiban") || (Form = "Main"))|
formula = " SELECT " & formname$ & " & (@Modified > [" & (Date - 14) & "])"
Set view = Source.View
view.SelectionFormula = formula
Call view.Refresh
End Sub
が、これ、自分で動作確認してみたときは問題なかったのだが
DBアクセス権で編集者権限以下の人がやるとエラーする。。。
当たり前っていえば当たり前。
なんだけど、自分がDB管理者だから落とし穴・゚・(ノД`)・゚・。
なので、ちょっと細工。
アクセス権チェックして設計者以上なら条件式を変更するようにしてみた。
Sub Queryopen(Source As Notesuiview, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Dim user As String
user = session.UserName
Set entry = acl.GetEntry( user )
If Not ( entry Is Nothing ) Then
If entry.level = 5 Or entry.level = 6 Then
Dim view As NotesView
Dim formula As String
formname$ = |((Form = "keijiban") || (Form = "Main"))|
formula = " SELECT " & formname$ & " & (@Modified > [" & (Date - 14) & "])"
Set view = Source.View
view.SelectionFormula = formula
Call view.Refresh
End If
End If
End Sub
とりあえずはこれで。
だが、一番痛いのは設計権ない人が開いても
日付更新しないのよねー。げふんげふん。
ほんとは↓にしたかっただけなんだけど、
SELECT (Form = "keijiban" | Form = "Main" ) & ((@Modified >@Adjust( @Today ; 0 ; 0 ; -14 ; 0 ; 0 ; 0 ) ))
なんだか集中してるサーバにDBを置いたもんで
アクセス集中する時間帯に、この条件式置いたビューひらくと
表示までに3分以上待たされるという最悪な状態。
やっぱ、ビュー選択条件に日付計算させるのが悪いって?
でも、自前の部門サーバでやると問題ないのになー。ないのになー。
違いは、サーバ上に置いてるDBの量と、OSだけなんだが。。。なぁ。。
あ、ハードもサーバスペックも違います。(そりゃそーだ。
[0回]
PR