我正在尝试允许用户从一组操作手册数据库中的富文本其他未更改的文档中动态链接到文档的当前版本。每个文档都有一个键值(在这种情况下为UID),该值在文档的所有版本上。当用户点击链接时,即使他们正在阅读的文档尚未更新,也应该打开最新批准的版本。
我有一个按钮,可以让他们选择要链接的数据库,然后选择哪个文档。然后,它构建适当的公式语言并将其放入富文本字段中。然后,用户将其复制粘贴到热点链接中,它将允许读者单击并打开链接的文档。
当所有文档都在同一个数据库中时,它可以正常工作,但是它无法让UNID在Notes中打开目标文档。在浏览器客户端中,我只能使用视图名称和第一列中的值。
当我将此代码放在热点链接中时,它永远不会返回UNID或似乎认为它不是文本。视图中的列公式是@Text(@DocumentUniqueID)....
UID := "9C0051CB5F";
database := "qualityAndCompliancedb";
server := @Name ( [CN]; @Subset ( @DbName; 1 ));
filepath := @Text ( @DbLookup ( "Notes":"NoCache"; ""; "(LUDbConnections)"; database; "dbPath" ) );
filepath := @ReplaceSubstring ( filepath; "\\"; "/" );
rawReplicaID := @Text ( @DbLookup ( "Notes":"NoCache"; ""; "(LUDbConnections)"; database; "dbRepID" ) );
UNID := @DbLookup ( "Notes":"NoCache"; server : filepath; "UIDLU"; UID; 3 );
@If ( @IsError ( UNID ); "Bad UNID"; @ClientType = "Web"; "/" + filePath + "/UIDLU/" + UID;
"Notes:///" + rawReplicaID + "/0/" + UNID );
尽管如此,当我将该代码放入富文本字段中的计算文本中,并将以下内容添加到显示值时,我会在编辑模式下看到所有值。在阅读模式下我什么也看不见,这也令人费解。
"UID: " + UID + @NewLine +
"database " + database + @NewLine +
"server " + server + @NewLine +
"filepath " + filepath + @NewLine +
"rawReplicaID " + rawReplicaID + @NewLine +
"UNID " + UNID + @NewLine +
"Notes:///" + rawReplicaID + "/0/" + UNID
就像我说的那样,当DbLookup在同一个数据库中时,我对热点链接没有任何问题。如果计算的文本未能返回值,我认为这是一个错误的查找或具有数据库配置或访问权限的东西,但它不会失败。
我做错了什么?
答案 0 :(得分:1)
我决定取消对数据库的查找。它的副本ID和文件路径不会改变,因此我可以在创建公式语言时确定它们。
由于我不记得公式语言以及我应该记得的,我很惊讶地发现将文档唯一ID转换为列中的文本的解决方法并不是必需的。
@DbLookup( class : cache ; server : database ; view ; key ; columnNumber ; keywords )
关键字包括[RETURNDOCUMENTUNIQUEID]作为一个选项。在使用此DbLookup时,使用该值而不是列值将返回有效的唯一ID。