Lotus Notes中重复的日历条目

时间:2011-10-21 11:31:43

标签: c# lotus-notes lotus-domino lotusscript

有人知道是否可以在一系列定期会议中更改其中一个文件? 我用c#api更改了其中一个,它更改了系列中的所有文档(例如,在一次save()调用期间将修改5个系列文档)

var document = view.GetFirstDocument();
if (document != null)
{
    do
    {
        var item = document.GetFirstItem("Repeats");
        var repeat = tmpItem != null ? Convert.ToInt32(tmpItem.Text) : 0;

        if(repeats)
        {
            document.ReplaceItemValue("myVal", "1"); //it change all my 5 docs after first save
            document.Save(true, false);
        }
        document = view.GetNextDocument(document);
    }
    while (document != null);
}

3 个答案:

答案 0 :(得分:2)

来自“Lotus Notes Calendar and Scheduling explained! Part 1”:

  

如果主席重新安排某些实例,则可以将重复会议的实例文档拆分为多个文档。考虑重复会议,每周重复一次,持续五周。如果主席将第一个和第二个实例推进一个小时,则所有五个实例的单个响应文档现在被拆分为两个响应文档:一个用于第一个和第二个实例,另一个用于其余实例。

来自“IBM Lotus Notes and Domino Calendaring & Scheduling Schema”:

  

重复事件会随着时间的推移而多次安排,并且由父子关系中的至少两个音符表示。父笔记由其ApptUNID项(它是注释通用ID)标识,子笔记由与父项和原始RepeatInstanceDates相同的ApptUNID标识。 ApptUNID和RepeatInstanceDates项形成一对键值,用于唯一标识特定的重复实例。更多细节将在本文的“重复模型”部分中介绍。

所以你基本上要做的是找到事件的子Document($ CSFlags conatins“i”和$ Ref父母UNID)并为更改的日期/时间创建一个新的(第二个)子文档,删除这个特定日期/时间从现有的儿童文件IIRC中输入。 在这种情况下,我总是在Notes客户端中手动完成,然后将创建的字段与我通过代码创建的字段进行比较。

答案 1 :(得分:1)

在代码中循环浏览视图并更改视图中可用的所有文档。您需要选择要更改的文档。

编辑: 重复条目是在视图中多次显示的文档。因此,您可能会多次更新同一文档。比较系列中所有文档的UniversalID,以确定。

如果您使用Lotus Client更改其中一个条目,它将询问您是否要更新所有条目,如果您选择“仅此实例”,该条目将保存在新文档中。因此,重复条目可以是单个文档或文档组合。

答案 2 :(得分:0)

我能给你的最佳建议,也是唯一的建议是研究邮件模板中的LotusScript代码,并确切了解当用户在重复约会中更改一个条目时它的作用。 Lotus没有以任何其他方式记录它,但模板代码都是开源的,它是最终的权威。您的任务是与他们在模板中执行的操作兼容 - 否则您的代码很可能会产生副作用,导致尝试使用Notes客户端在日历事件系列上执行其他操作的用户出现问题你的代码已经运行。