2016-03-08 67 views
1

我正在使用DIIOP访问莲花笔记。我正在尝试查找电子邮件所在的文件夹。我有Unid的电子邮件找到该文件夹​​。查找莲花笔记文档所在的文件夹

启用文件夹引用不是我的选择,因为我将在一个运行多年的生产系统上工作。

有没有什么办法可以找到使用DIIOP存在邮件的文件夹unid/name?

回答

1

@托斯滕的答案是正确的,但是对于很多文档,一次只能处理一个文档,尤其是在IIOP上,实际上效率会非常低。

如果您正在处理大量文档,我会将它们全部添加到NotesNoteCollection对象中。然后为每个文件夹创建另一个NotesNoteCollection对象,并使用Intersect方法查找这两个集合共有的所有文档,然后移至下一个文件夹等。

+0

嗨理查德,谢谢你的回答。 是否有可能从低级C API中的任何索引表读取文档的父级? – ravikiran

+0

不是没有文件夹引用。请注意:文档可以放在很多文件夹中,我不是在谈论文档的副本 - 这是其他一些系统允许的。在Notes/Domino环境中,一个文档的noteid可以被许多文件夹引用。没有真正的“父母”的概念。 –

+0

是的你是对的,我看到Java和Lotus Script代码将相同的文档放在多个文件夹中。 这适用于电子邮件应用程序在多个文件夹中具有相同的电子邮件吗?我找不到任何菜单/操作将项目复制到文件夹 – ravikiran

2

没有文件夹引用,文档没有关于其中驻留的文件夹的信息。

唯一的可能性是通过所有文件夹并检查文档是否在allentries集合中。

代码可能看起来在某种程度上是这样的(我不是在Java中好,所以这是LotusScript-代码,但Java将用同样的方法/班):

Dim db as NotesDatabase 
Dim doc as NotesDocument 

Set db = ... database that you work on 
Set doc = .... document that you work on 

Dim fc As NotesViewEntryCollection 
Dim fe As NotesViewEntry 
ForAll f In db.AllViews 
    If f.IsFolder Then 
     Set fc = f.AllEntries '- get all entries in folder 
     Set fe = fc.GetEntry(doc) '- try to get object for doc from folder 
     If not fe is Nothing then 
      '- This document is in this folder... remember foldername, do whatever.... 
     End If 
    End If 
End ForAll 
+0

您好Torsten,感谢您的回答。遍历所有文档对我的应用程序会有严重的性能影响。 – ravikiran