如何在IBM Lotus Domino中使用@GetDocField来获取与当前数据库不同的数据库

时间:2017-05-17 06:15:57

标签: formula lotus-domino

我需要“在撰写时计算”文档中的字段,因此客户端+公式是我在这里唯一的选项。

我正在使用@DbLookup(“”:“NoCache”;“server”:“db”;“View”;“key”; fieldName);查看不同服务器/数据库的命令,并返回特定文档的UNID。 UNID对server / db数据库有效,而不是当前数据库。如何使用此UNID在远程文档上获取/设置值。 在IBM文档中,我只找到了仅用于本地数据库的@GetDocField(UNID,fieldName)和@SetDocField(UNID,fieldName,value)!

如何实际有意义地使用此UNID,因为它代表远程数据库上的文档。我搜索了40分钟的答案!

2 个答案:

答案 0 :(得分:5)

使用公式语言无法做到这一点。 在LotusScript中,您可以使用  

Dim db as New NotesDatabase( "server" , "db" )
Dim doc as NotesDocument
Set doc = db.getDocumentByUnid( uuid )
Call doc.ReplaceItemValue( "fieldname" , value )

如果你真的无法在你拥有的上下文中使用lotusscript(通常有一个选项可以随时随地使用LotusScript,你可能只会尝试使用错误的上下文/事件/其他),然后可能的方法是用上面的代码编写一个小的LotusScript-Agent,并通过notes.ini-参数,profile-文档或任何最适合你的方法将uuid交给它。

答案 1 :(得分:0)

我的声誉太低而无法发表评论,所以我不得不发布一个答案来添加一个想法。你试过@UpdateFormulaContext吗?

UNID := @DbLookup(...[ReturnDocumentUniqueID]);
@Command([OpenDocument]....UNID);
@UpdateFormulaContext;
@SetDocField(@DocumentUniqueID; ...);

@UpdateFormulaContext肯定允许您重置“当前”文档(来自IBM Domino Designer帮助):

tempDate := @GetDocField(@DocumentUniqueID;"CreatedDate");
@Command([NavPrev]);
@Command([EditDocument]);
@UpdateFormulaContext;
@SetDocField(@DocumentUniqueID;"nextCreated";tempDate) 

“您可以使用@UpdateFormulaContext从外部文档中提取值或设置值。您甚至可以使用@ DbName,@ DigTitle,@ Treat,@ DocumentUniqueID等函数访问特定于文档和数据库的信息, @GetDocField,@ GetField,@ GetProfileDocument。“

值得一试。