Java 获取LotusDomino文档的创建者和最后一个修改器
我想获取LotusDomino文档的创建者和最后一个修改器。我怎么能这样做Java 获取LotusDomino文档的创建者和最后一个修改器,java,lotus-notes,lotus-domino,lotus,Java,Lotus Notes,Lotus Domino,Lotus,我想获取LotusDomino文档的创建者和最后一个修改器。我怎么能这样做 我找到了,它是一个向量,但文档中没有定义它的顺序。我可以相信第一个元素是创建者,最后一个元素是最后一个修饰符吗?尝试直接使用$UpdatedBy字段。(我认为,Authorsproperty也使用它。)在这个字段中,所有更新程序都是按时间顺序存储的:发起者——第一个,最后一个修改者——最后一个 如果在数据库属性中设置了“限制$UpdatedBy字段中的条目”选项,则会显示错误的数据:当达到限制时,会删除$UpdatedB
我找到了,它是一个
向量
,但文档中没有定义它的顺序。我可以相信第一个元素是创建者,最后一个元素是最后一个修饰符吗?尝试直接使用$UpdatedBy
字段。(我认为,Authors
property也使用它。)在这个字段中,所有更新程序都是按时间顺序存储的:发起者——第一个,最后一个修改者——最后一个
如果在数据库属性中设置了“限制
$UpdatedBy
字段中的条目”选项,则会显示错误的数据:当达到限制时,会删除$UpdatedBy
中的第一个条目,因此,您无法了解文档创建者。最安全的解决方案是在设计上设置一个“合成时计算”类型字段,该字段在创建文档时设置为当前用户,另一个字段将保留最后一个修改器名称(类似于@SetField(“lastdupdateby”;@UserName)
QuerySave事件中的).
在您的情况下,如果您只想从现有应用程序中收集数据,并且没有可以使用的手动添加字段,则需要考虑以下事实:
1.$UpdatedBy
项和Authors属性相同:使用Lotusscript中的Authors属性将返回从$UpdatedBy
项收集的数组
2.)无法操纵$UpdatedBy
项=从这个角度来看,使用它是安全的
3.)假设您已经获得了那里的全部历史*,那么您将获得具有类似lotusscript中的@Subset($Updatedby;1)
或Cstr(updatedbyarray(Lbound(updatedbyarray))
的公式的创建者
4.)通过使用@Subset($Updatedby;-1)
或Cstr(array(Ubound(array))
查看$Updatedby
数组中的最后一个条目,您将始终获得最后一个修饰符
5*)您的数据库可能对$Updatedby
条目有限制,因为这些条目可能非常占用空间(数据库级别设置,最后一个选项卡,限制$Updatedby
字段中的条目)。一旦达到此限制,Notes将在添加新条目时开始删除旧条目,并且查询数组的第一个成员将不再为您提供创建者
6.)由于您可能无法在$Updatedby
数组中找到创建者,因此您应该使用以下内容保护代码:
If Ubound(var)+1 <> db.LimitUpdatedBy Then
'You are safe
Else
Msgbox "Ouch!"
End If
如果Ubound(var)+1 db.limitedUpdated,则
“你很安全
其他的
Msgbox“哎哟!”
如果结束
如果安全的话,您可以继续使用$Updatedby
项进行计算。
顺便说一下,使用我们的(Ytria)scanEZ产品,您将能够为数据库中的所有文档收集这些值,而无需任何编码。只有几个简单的公式,您就可以将完整的报告导出到DXL或CSV 是否只检查现有文档,或将设计更改为跟踪创建者/修改者?@pstr:只检查现有文档。我无法修改数据库(我只有只读访问权限)。是否确定没有已设置为文档创建者的字段值?我认为,如果这关系到谁创建了它,设计师会把它放在一个字段中。@DavidNavarre:我正在从多个数据库收集元数据和统计信息。他们可能在自定义项中有这些信息,但目前发现内部数据库结构超出了范围。我发现使用索引1会在字段中给出第一个:$updatedby[1]