我有一个奇怪的问题:我想访问不同数据库(同一服务器)中的文档。我的方法非常接近这里讨论的方法:http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllFlatWeb/517ef6249d5b9fa6852575cc00503786?OpenDocument
我在源数据库中只有3个文档。 2是直接创建的,一个是从另一个数据库复制的(这些只是测试文档)。我们有一个通用视图,列出视图中的条目,以下面的形式计算链接:
http://localhost/database.nsf/xpMBK.xsp?action=openDocument&db=dominotest%2Ftest%2Fulcbs%21%21projects%2FFKIE%2FEinsMuB.nsf&view=AMBKEinsAll&documentId=781F14A98A699548C1257C3200316BAC
正如您所看到的,我们在当前数据库中使用Xpage并放置指向Xpage的参数以将文档打开到源数据库(符号是服务器!!数据库),一个视图(这是一个视图)我想返回)最后是源文档的unid。
现在奇怪的一个: 我无法打开复制的文件,接收
NotesException: Invalid universal id
lotus.domino.local.Database.getDocumentByUNID(Unknown Source)
错误。 更好的是:如果我复制一个在同一个数据库(当前的数据库)中工作的文档,这个文档也不能再打开了! 这是什么,你可以给我一个解决这个问题的提示吗?
提前致谢!
答案 0 :(得分:6)
如果通过“复制”表示手动复制并粘贴到目标数据库中或通过copyToDatabase()
以编程方式复制,则将为文档的新副本分配新的UNID;它不能保证与原始UNID具有相同的UNID(根据我的经验,它很少保留原始的)。如果您以编程方式复制文档,请务必在之后检查其新的UNID,并在URL计算中使用该ID。
答案 1 :(得分:0)
我过去遇到的问题非常类似,答案结果是我没有打开我认为我正在打开的NSF文件。我正在使用NotesDatabase.OpenByReplicaID
,服务器上有数据库的两个副本,具有不同的文档集。在那种情况下,Notes会选择两个副本中的一个 - 你无法控制它。实际打开的副本包含一些与我试图访问的UNID相对应的文档,但其中一些实际上并不存在,因此getDocumentByUNID()
方法在抛出“无效的通用ID”错误时是正确的。这真的非常难以调试。
在我弄明白并从我的服务器中删除了第二个副本之后,我做的第一件事(在测试并确认问题消失后)就是编写一个代理来扫描服务器以获取重复的副本ID。
答案 2 :(得分:0)
通过copyToDatabase复制到数据库时,在Domino数据库中的UNID:S就像这样完成。 UNID的一部分来自数据库,其中一部分是文档唯一的。因此,如果您将文档从一个数据库复制到另一个数据库,则每次都可以获得相同的文档。如果唯一组合在数据库中没有具有该组合的有效文档,则文档将每次都获得相同的UNID。在其他情况下,文档将获得新的ID。
可在此处找到更多信息 UNID and copytodatabase
答案 3 :(得分:0)
谢谢你们的想法! 但我完全错了#facepalm 问题是:一位同事编写了一个bean来访问另一个数据库,我没有注意到配置文件指向另一台服务器上的副本,所以当我在我的本地服务器上的数据库中复制文档时,它是相当的清除xpage无法找到复制的 - 因为它位于另一台机器上。 无论如何,谢谢你:))