Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果使用不同的ID文件,所有文档都将显示为未读。由于未读标记由用户跟踪,您是否尝试使用用于复制的ID以外的ID打开这些目标数据库,以查看文档是否显示为未读给其他用户?我已验证如果使用不同的ID文件打开NSF,所有文档都将显示为未读。由于PutInFolde_C#_Com_Lotus Notes_Lotus Domino_Lotus - Fatal编程技术网

C# 如果使用不同的ID文件,所有文档都将显示为未读。由于未读标记由用户跟踪,您是否尝试使用用于复制的ID以外的ID打开这些目标数据库,以查看文档是否显示为未读给其他用户?我已验证如果使用不同的ID文件打开NSF,所有文档都将显示为未读。由于PutInFolde

C# 如果使用不同的ID文件,所有文档都将显示为未读。由于未读标记由用户跟踪,您是否尝试使用用于复制的ID以外的ID打开这些目标数据库,以查看文档是否显示为未读给其他用户?我已验证如果使用不同的ID文件打开NSF,所有文档都将显示为未读。由于PutInFolde,c#,com,lotus-notes,lotus-domino,lotus,C#,Com,Lotus Notes,Lotus Domino,Lotus,如果使用不同的ID文件,所有文档都将显示为未读。由于未读标记由用户跟踪,您是否尝试使用用于复制的ID以外的ID打开这些目标数据库,以查看文档是否显示为未读给其他用户?我已验证如果使用不同的ID文件打开NSF,所有文档都将显示为未读。由于PutInFolder()和MarkUnread()是NotesDocument类的方法,因此从源文件复制后,我必须在目标NSF中的文档上调用它们。如何确定我刚刚复制了哪个文档?或者,如何确定目标NSF中的给定文档与源NSF中的哪个文档相对应?NotesDatab


如果使用不同的ID文件,所有文档都将显示为未读。由于未读标记由用户跟踪,您是否尝试使用用于复制的ID以外的ID打开这些目标数据库,以查看文档是否显示为未读给其他用户?我已验证如果使用不同的ID文件打开NSF,所有文档都将显示为未读。由于PutInFolder()和MarkUnread()是NotesDocument类的方法,因此从源文件复制后,我必须在目标NSF中的文档上调用它们。如何确定我刚刚复制了哪个文档?或者,如何确定目标NSF中的给定文档与源NSF中的哪个文档相对应?NotesDatabase.AllDocuments.GetLastDocument()可以正常工作吗?如果您一次复制一个文档,您可能会在复制文档后立即拥有新数据库中文档的句柄。即,使用doc2=doc1.CopyToDatabase(destDb),然后检查doc1的FolderReferences属性,并使用doc2.PutInFolder()。如果出于某种原因需要先进行所有复制,然后再通过复制的文档设置文件夹和未读标记,如果您的应用程序没有包含每个文档唯一标识符的NotesItem,那么您必须在复制时构建一个noteid对列表,然后在该列表中迭代,以返回并设置文件夹和未读属性。Ken的解决方案不假设folderReferences可用,正在使用UNID而不是noteid。请注意,在一些较旧版本的注释中,UNId由CopytoDebug方法保存,但这不再是真的了。所以请记住,不能使用ND2.GeDiguffTyBunID查找相应的文档。C++有注释,根据这个旧的StackOverflow线程,看起来这是你的选择:Notes C API是另一个选择,但它的级别非常低,因此需要对NSF内部的情况有相当深入的了解。因为PutInFolder()和MarkUnread()是NotesDocument类的方法,在从源文件复制完目标NSF中的文档后,我必须调用它们。如何确定我刚刚复制了哪个文档?或者,如何确定目标NSF中的给定文档与源NSF中的哪个文档相对应?NotesDatabase.AllDocuments.GetLastDocument()可以正常工作吗?如果您一次复制一个文档,您可能会在复制文档后立即拥有新数据库中文档的句柄。即,使用doc2=doc1.CopyToDatabase(destDb),然后检查doc1的FolderReferences属性,并使用doc2.PutInFolder()。如果出于某种原因需要先进行所有复制,然后再通过复制的文档设置文件夹和未读标记,如果您的应用程序没有包含每个文档唯一标识符的NotesItem,那么您必须在复制时构建一个noteid对列表,然后在该列表中迭代,以返回并设置文件夹和未读属性。Ken的解决方案不假设folderReferences可用,正在使用UNID而不是noteid。请注意,在一些较旧版本的注释中,UNId由CopytoDebug方法保存,但这不再是真的了。所以请记住,不能使用ND2.GeDiguffTyBunID查找相应的文档。C++有注释,根据这个旧的StackOverflow线程,看起来这是你的选择:Notes C API是另一个选择,但它的级别非常低,因此需要对NSF内部的情况有相当深入的了解。
//Establish session
NotesSession ns = new Domino.NotesSessionClass();
ns.Initialize("");

//Open source NSF
NotesDatabase nd = ns.GetDatabase("", "test.nsf", false);
//Open destination NSF.
//Assume that all design elements of nd2 are identical to those of nd
NotesDatabase nd2 = ns.GetDatabase("", "test2.nsf", false);

//Create view that returns all documents.
NotesView nView2 = nd.GetView("$All");
nd.CreateView("All-DR", "SELECT @ALL", nView2, false);
NotesView nView = NotesConnectionDatabase.GetView("All-DR");

//Loop through entries in the new view
NotesViewEntry nvec = nView.AllEntries;
nve = nvec.GetFirstEntry();

for (int j = 1; j <= intEntryCount; j++)
{
     if (j == 1)
     {
          nve = nvec.GetFirstEntry();
     }
     else
     {
          nve = nvec.GetNextEntry(nve);
     }

     //Copy document to second database.
     NotesDocument ndoc = nd.GetDocumentByUNID(nve.UniversalID);         
     ndoc.CopyToDatabase(nd2);
 }
 //End loop.
 //All documents are copied.
object oViews = nd.Views;
object[] oarrViews = (object[])oViews;
Dictionary<string, List<string>> folderDict = new Dictionary<string, List<string>>();
for (int x=0; x < oarrViews.Length - 1; x++)
{
    NotesView view = viewArray[x];
    if (view.IsFolder) 
    {
        NotesDocument doc = view.GetFirstDocument();
        while (doc != null)
        {
            // Populate folderDict Dictionary by setting
            // document's UNID as Key, and adding folder name to List
        }
    }
}
//Copy document to second database.
NotesDocument ndoc = nd.GetDocumentByUNID(nve.UniversalID);  
NotesDocument newDoc = ndoc.CopyToDatabase(nd2);

if (folderDict.ContainsKey(nve.UniversalID)) {
    foreach (var folderName in folderDict[nve.UniversalID]) {
        newDoc.PutInFolder(folderName, true);
    }
}