すべてのユーザーにフォーム(QCR)を作成させることはできますが、誰も私と他のユーザー以外のフォームを編集できないようにする必要があります。私はACLとAuthors and Readersのフィールドでうまくやっているが運がない。Lotus Notesフォームのアクセスを制限する
背景: 1.このフォームは、このQCRフォームの情報の一部がそのデータベースから継承されているため、別のデータベースからボタンをクリックすると作成されます。 2. Allグループのユーザーはこのフォームを作成できるはずです 3.ユーザーはQCRデータベース内のすべてのドキュメントを読むことはできますが、編集はできません 4.私と他の1人のユーザーが読むことができるはずですそして、すべての文書を編集 5.私が試してみました何の前と
を編集されている文書の後の値を比較するQuerySaveイベントでいくつかのコードがあります は、私は私と1人の他のユーザーを持つグループQCR_Accessを作成メンバーとして。次に、計算されたAuthorsフィールドを作成し、QCRフォームの式として 'QCR_Access'を指定しました。しかし、すべてのグループ(預金者または著者)に与えたアクセスタイプの種類にかかわらず、ALLグループのユーザーの1人でデータベースに新しい文書を保存しようとすると、アプリケーションでエラーが表示され続けます。以下はQuerysaveのコードですが、私が何をしているかを理解するのに役立つかもしれません。
Sub Querysave(Source As Notesuidocument, Continue As Variant)
' Compare the values in the form after it is saved with its original values when the document is not a new document.
Dim doc As NotesDocument
Set doc = Source.Document
Dim session As New NotesSession
Dim user As String
user = session.CommonUserName
If newDoc Then
doc.Log_Date = Cstr(Now())
doc.Log_User = user
doc.Log_Actions = "New document created."
Else
' Load fields value to the array
lastValues(0) = doc.QCR_Requestor(0)
lastValues(1) = doc.QCR_No(0)
...
lastValues(31) = doc.QCR_Tracking_Info(0)
' Compared each value in the array to see if there is any difference
Dim i As Integer
For i = 0 To 31
If lastValues(i) <> originalValues(i) Then
Call UpdateLogFields(doc,user,i)
End If
Next
End If
End Sub
Sub UpdateLogFields (doc As NotesDocument, user As String, i As Integer)
Dim logDate As NotesItem
Dim logUser As NotesItem
Dim logActions As NotesItem
Set logDate = doc.GetFirstItem("Log_Date")
Set logUser = doc.GetFirstItem("Log_User")
Set logActions = doc.GetFirstItem("Log_Actions")
' a space is needed otherwise the appended text is right next to the border
Call logDate.AppendToTextList(" " & Cstr(Now()))
Call logUser.AppendToTextList(" " & user)
Select Case i
Case 0: Call logActions.AppendToTextList(" Requestor is changed.")
Case 1: Call logActions.AppendToTextList(" QCR No is changed.")
...
Case 30: Call logActions.AppendToTextList(" Follow Up information is changed.")
Case 31: Call logActions.AppendToTextList(" Tracking information is changed.")
End Select
End Sub
これは良い方法です。役割は、名前/グループが変更された場合(ACLのみ)、後でコードを変更する必要がないことを意味します。 –