2016-03-08 66 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