Lotus notes LotusNotes 8.5-使用按钮向表中添加行

Lotus notes LotusNotes 8.5-使用按钮向表中添加行,lotus-notes,lotus-domino,lotusscript,Lotus Notes,Lotus Domino,Lotusscript,我是一名实习生,目前正在学习LotusNotes,所以还不是很流利 我的问题是,如何在LotusNotes8.5中编程一个操作按钮,将一行添加到现有表中 我已经尝试了以下代码,但它对我不起作用 子单击(源代码为按钮) 将uiw设置为新工作区 Dim uidoc作为NotesUIDocument 设置uidoc=uiw.CurrentDocument 标注文档作为注释文档 Set doc=uidoc.Document 将主体变暗为注释RichTextItem Set body=doc.GetFi

我是一名实习生,目前正在学习LotusNotes,所以还不是很流利

我的问题是,如何在LotusNotes8.5中编程一个操作按钮,将一行添加到现有表中

我已经尝试了以下代码,但它对我不起作用


子单击(源代码为按钮)
将uiw设置为新工作区
Dim uidoc作为NotesUIDocument
设置uidoc=uiw.CurrentDocument
标注文档作为注释文档
Set doc=uidoc.Document
将主体变暗为注释RichTextItem
Set body=doc.GetFirstItem(“body”)
如果身体什么都不是
Msgbox“单击重置演示操作以首先创建表。”
如果结束
将行设置为整数,将行数设置为整数,将numrowstoadd设置为整数
Dim strrownumber作为字符串,strrowstoadd作为字符串
Dim rtnav As NotesRichTextNavigator
设置rtnav=body.CreateNavigator
Dim rttable As NOTES RICHTEXTTABLE
Set rttable=rtnav.GetFirstElement(RTELEM\u类型\u表)
如果rttable什么都不是,那么
Msgbox“未创建表-请先使用重置演示操作。”
其他的
rows=rttable.RowCount
strrowstoadd=Inputbox(“输入要添加的行数”)
如果为数字(strrowstodd),则
numrowstoAdd=Cint(strrowstoAdd)
如果numrowstoAdd行,那么
Msgbox(“您输入的数字太高或小于零,请重试。”)
出口接头
如果结束
其他的
Msgbox(“仅输入整数。”)
出口接头
如果结束
调用rttable.AddRow(numrowstoadd,rownumber)
如果结束
doc.save True,True
uidoc.关闭
调用uiw.EditDocument(False,doc)
端接头


任何帮助都会很好。谢谢

在不详细查看代码的情况下,我认为您面临的基本问题很可能是NotesRichText类是Notes的“后端类”的一部分。这意味着它是以存储格式表示NSF文件中数据的内存版本的对象之一,这与“前端类”不同。这些对象表示用户看到和编辑的数据。您可以通过所有前端类的前缀NotesUI来区分前端类和后端类

问题是,前端类和后端类中的对象保持同步,富文本除外,这意味着对NotesRichText对象所做的更改确实发生在内存中,如果调用NotesDocument.save(),则会保存到NSF文件中,但是,在您从后端重新加载前端数据之前,它们不会反映在屏幕上看到的内容中。这里有一个链接,指向你写的“但它对我不起作用”。我试过你的代码,它是有效的。我建议您只做一些更改,以使其更好地工作: 在使用RT(后端)中的表之前,请先关闭文档,然后再将正文作为注释变暗。richtextItem

代替最后3行:

doc.Save True, True
Call uiw.EditDocument(True,doc)

注意:您必须在“单击重置演示操作以首先创建表”和“未创建表”之后添加退出子项

我认为作者已经理解了后端的困难,因为他的代码关闭了ui和uiw.EditDocument。
uidoc.save 'to save any change done
doc.saveoptions = "0"'to avoid do you want to save
uidoc.Close True
doc.Save True, True
Call uiw.EditDocument(True,doc)