在莲花笔记文档中创建字段?

时间:2013-09-03 19:43:47

标签: vba lotus-notes

我正在尝试将访问数据库中的项目导出到Lotus Notes中。我试图导出的文件是固定的,并且所有数据都写入其中,我只需要以某种方式标记占位符然后更新值。我已阅读文档,看来我需要解决字段,然后调用方法来替换文本,如下所示:

'where body is the field and the following string is what to replace field with
Call doc.ReplaceItemValue("body", "REPLACE BODY")

要清楚,我的整个代码如下:

Set session = CreateObject("Notes.NotesSession")
Set maildb = session.GetDatabase("server", "mail\box.nsf")

Set View = maildb.GetView("Stationery")
Set entries = View.AllEntries

Set entry = entries.GetFirstEntry

Set doc = entry.Document

Call doc.ReplaceItemValue("Subject", "Report - " & Date)
'add code here
Call doc.send(False, "person.to.receive@thisemail.com")


End Sub

我注意到,在阅读文档时,似乎有能力创建字段,然后解决这些字段以更新值。例如,如果我有一个名为$ COST的字段,那么可以这样做:

Call doc.ReplaceItemValue("$COST", "The cost is $3000")

应该更新该字段以反映我通过该方法传递的值。我的大问题是,即使查看文档,我也无法弄清楚我需要在自定义字段中添加的位置。看来文档假定您知道如何创建这些字段并只是解决它们。或者我只应该以编程方式创建这些字段然后填写数据?我的客户端是Lotus Notes 8.谢谢!

2 个答案:

答案 0 :(得分:1)

是的,这是IBM Lotus Notes数据库的一个很酷的事情:您可以将项目(=字段)放在Notes文档中,而无需事先定义字段。

如果您使用doc.ReplaceItemValue()在文档中创建项目并保存或发送文档,则项目就在那里。您可以在打开所选文档的属性框时检查项目。所有项目都列在文档属性的第二个选项卡上。

另一个问题当然是在表单中定义字段,以便用户可以看到创建的项目,而无需查看文档属性框。在Designer中打开数据库,并将字段放在正确的位置和大小中以形成。

您的问题和评论告诉您要创建文档,填写数据并将其发送给用户。

如果所有用户都可以访问Notes服务器,则可以在现有数据库中创建该文档,并仅向用户发送链接邮件。这样,您可以创建漂亮的表单并定位所有数据字段。用户将通过链接访问数据库中的文档。

另一种方法是创建一个漂亮的HTML文件,将其附加到邮件并发送。 在这种情况下,您可以将此代码添加到'add code here的示例:

Call doc.RemoveItem("Body")
Set rtitem = doc.CreateRichTextItem( "Body" )
Call rtitem.AppendText("your mail text")
Call rtitem.EmbedObject(EMBED_ATTACHMENT, "", "report.html")

答案 1 :(得分:0)

基于@Knut Herrmann回答的评论主题,我相信你真正想要的解决方案涉及使用“存储形式”。 NotesDocument.Send()方法的第一个参数是一个布尔值,指定是否要存储表单。

通常,您将使用Domino Designer创建存储的表单。您不需要任何人的邮箱的设计师权限。您只需要创建一个自己的空数据库,并将一个表单放入其中。您可以更改代码以打开该数据库并在其中创建文档,而不是像现在一样在邮箱数据库中创建文档。 (关于Notes的另一个很酷的事情是,你实际上不必在邮箱数据库中工作才能邮寄文件。你可以从任何邮寄任何文件em>数据库,只要你将approporiate字段放入其中。)

如果没有Domino Designer,还有一种方法可以做到这一点,您甚至可以使用您的代码在运行时发现的真正自定义字段动态生成表单。您可以使用DXL执行此操作,DXL是一种用于描述Lotus Notes对象(包括表单)的XML格式。你只需要一些样本DXL即可。最好是一个空数据库,它包含一个在你想要的布局中或多或少设置的简单表单,尽管你也需要Domino Designer。您可以使用您的代码当前使用的相同邮箱数据库,但这将在DXL中留下许多额外的东西,而不需要在那里;鉴于你并不熟悉Notes,你很可能难以浏览所有内容以找到你需要的内容。

但是,无论哪种方式,您都可以使用NotesDXLExporter类生成DXL文件。您的代码可以操作DXL,根据需要添加/更改元素(当然,遵循您在示例中看到的模式),并且您可以使用NotesDXLImporter创建数据库,您的代码将实际用于创建文档和邮件带有存储表格的信息。