如何使用c#和interop.domino.dll的用法在domino服务器中插入新的notes文档?

时间:2014-11-18 10:03:52

标签: c# .net vbscript lotus-notes

这是我的第一个问题。

我想知道在Lotus notes数据库中插入一个新的notes文档的语法,如果它不存在使用c#。
我在vb脚本中有一个代码,我不知道vb脚本和莲花笔记。

     set doc = vw.GetDocumentByKey(empno)

        if doc is nothing then
          set doc = db.CreateDocument
          doc.Form = "EmployeeRepository"
          doc.Employno = empno
          doc.FirstName = fname
          doc.LastName = lname
          doc.Group = grp
          doc.Department = dept
          doc.officeemailaddress = officemail
          doc.officegeneralline = officegenline
          doc.designation = desig
          doc.officeaddress = officeadd 
        else
          doc.FirstName = fname
          doc.LastName = lname
          doc.Group = grp
          doc.Department = dept
          doc.officeemailaddress = officemail
          doc.officegeneralline = officegenline
          doc.designation = desig
          doc.officeaddress = officeadd     
        end if

        call doc.save(true, true)

我怎样才能在c#中实现这个目标?

2 个答案:

答案 0 :(得分:1)

if语句的C#语法不同。而不是:

if doc is nothing then
  ...
else
  ...
end if

你需要

if (doc != null)
{
  ...
}
else
{
  ...
}

此外,C#语言不支持速记符号doc.item = X.因此,需要更改上述代码中该格式的赋值以使用ReplaceItemValue方法。即,而不是:

  doc.Form = "EmployeeRepository"
  doc.Employno = empno
  doc.FirstName = fname
  doc.LastName = lname

你需要使用它:

  doc.ReplaceItemValue("Form","EmployeeRepository");
  doc.ReplaceItemValue("Employno",empno);
  doc.ReplaceItemValue("FirstName", fname);
  doc.ReplaceItemValue("LastName", lname);

答案 1 :(得分:0)

我可能还建议尝试使用ExpandoObject(虽然我还没有尝试过,但我还是要试一试)。它是一种动态类型,因此您必须小心创建它,但您可以继续向其添加其他属性,而无需直接实例化它们:

    dynamic noteDocument = new System.Dynamic.ExpandoObject();

    noteDocument.ShortName = "wonkaWillie";
    noteDocument.Comment = "No Comment";
    noteDocument.MailSystem = "Other";
    noteDocument.PowerLevel = "It's over NINE THOUSAND!!!!!";

我认为您可以轻松地(并且可能更紧凑的解决方案)将预先格式化的类准备好用于将数据添加到特定文档格式中。

因此ExpandoObject方法可以工作,但是使用具有显式声明的字段/属性的类更加清晰....您可以将类的实例传递给一个非常方便地执行此操作的方法:

   class NotesDocumentItemClass
    {
         public string Form {get; set;} = "Person";
         public string FullName {get; set;} = "Over 9000/Notes/Address/Or/Whatever";
    }

然后将该类的实例传递给类似.....的方法

    private bool AddEntry(NotesDatabase db, NoteDocumentItemClass d)
    {
            NotesDocument newDoc = db.CreateDocument();
            doc.ReplaceItemValue("Form", d.Person);
            doc.ReplaceItemValue("FullName", d.FullName);
            return newDoc.Save();

    }