Lotus Domino ドキュメントの作成者と最終変更者を取得したいと考えています。どうすればこれを行うことができますか?
Authors
プロパティを見つけましたがVector
、その順序はドキュメントで定義されていません。最初の要素がクリエーターであり、最後の要素が最後の修飾子であると信頼できますか?
Lotus Domino ドキュメントの作成者と最終変更者を取得したいと考えています。どうすればこれを行うことができますか?
Authors
プロパティを見つけましたがVector
、その順序はドキュメントで定義されていません。最初の要素がクリエーターであり、最後の要素が最後の修飾子であると信頼できますか?
最も安全な解決策は、ドキュメントの作成時に現在のユーザーに設定されるデザインに「作成時に計算」タイプのフィールドを設定し、最後の修飾子名(イベント@SetField("LastUpdatedby";@UserName)
のようなもの)を保持する別のフィールドを設定することです。QuerySave
あなたの場合、既存のアプリケーションからデータを収集したいだけで、手動で追加できるフィールドがない場合は、考慮すべきいくつかの事実があります。
1.)$UpdatedBy
アイテムとAuthorsプロパティは同じです。LotusscriptのAuthorsプロパティを使用すると、$Updatedby
アイテムから収集された配列が返されます。
2.)$UpdatedBy
アイテムを操作することはできません=この観点からは安全に使用できます
@Subset($Updatedby;1)
3.)そこにすべての履歴があると仮定すると*、またはCstr(updatedbyarray(Lbound(updatedbyarray)))
ロータススクリプトのような式で作成者を取得します
4.)または$Updatedby
を使用して配列の最後のエントリを確認することにより、常に最後の修飾子を取得します。@Subset($Updatedby;-1)
Cstr(array(Ubound(array)))
5 *。)エントリのスペースをかなり消費する可能性があるため、DBにエントリの制限がある可能性があります(DBレベルの設定、最後のタブ、フィールドの$Updatedby
エントリの制限)。$UpdatedBy
この制限に達すると、追加する新しいエントリがあるときに、Notesは古いエントリの削除を開始し、配列の最初のメンバーをクエリしても、作成者は表示されなくなります。
6.)配列内に作成者が見つからない可能性がある$Updatedby
ため、次のようなコードでコードを保護する必要があります。
If Ubound(var)+1 <> db.LimitUpdatedBy Then
'You are safe
Else
Msgbox "Ouch!"
End If
安全な場合は、先に進み、$Updatedby
アイテムを使用して計算を行います。ちなみに、(Ytria)scanEZ製品を使用すると、コーディングなしでデータベース内のすべてのドキュメントのこれらの値を収集できます。簡単な数式はほとんどなく、DXLまたはCSVにエクスポートする準備ができた完全なレポートがあります。
$UpdatedBy
フィールドを直接使用してみてください。(プロパティもそれを使用していると思いAuthors
ます。) このフィールドでは、すべてのアップデーターが時系列順に格納されます: 作成者 -- 最初、最後に変更された -- 最後。
データベースのプロパティで「フィールドのエントリを制限する」$UpdatedBy
オプションが設定されている場合、間違ったデータが表示される可能性があります。制限に達すると、 の最初のエントリが削除$UpdatedBy
されるため、ドキュメントの作成者を知ることができません。