这是我的第一个问题。
我想知道在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#中实现这个目标?
答案 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();
}