在Lotusscript中模拟对话框中的表单并更新调用文档

时间:2018-01-18 16:43:55

标签: lotus-notes lotusscript lotus-formula

这是Notes客户端应用程序中的问题,而不是Web应用程序。

在对话框中打开的子窗体的经典案例,用于输入主窗体上所需的部分数据。问题是,在该子表单上,有一些链接可以打开视图(是的,它们是必需的),而且在对话框中似乎无法打开视图。

所以我将我的子表单转换为表单,现在我要做的就是打开"子表单"来自uidoc并从"子表单"中恢复所有值进入主要文件。

主文档未保存。如何处理"打开"来自"子表单的文档"所以我可以传递价值观?或任何其他方式(场交换,或你有什么)?欢迎提出意见......

2 个答案:

答案 0 :(得分:1)

我们做的一件事(不幸的是我不能因此而受到赞扬,但......)在“召唤形式”中

Sub Click(Source As Button)
    Dim ws As New notesUiWorkspace
    Dim parent As notesUiDocument
    Dim newui As NotesUIDocument
    Set parent = ws.currentDocument
    Set newui=ws.composeDocument("" , "" , "NewLogEntry")
    Call parent.Close(True)
    Call newui.Refresh
End Sub

这会打开新的“对话框”并关闭原始表单,这样用户就不会感到困惑。

然后在“对话框”中,有一个名为“WorksheetID”的字段(它是调用表单),其公式为

temp:=@InheritedDocumentUniqueID;
@Text(temp)

然后“关闭”或“进程”或任何按钮具有(a)获取原始文档(使用继承的UNID)的方法,以及(b)要添加的“对话框”的所有信息该文件。

答案 1 :(得分:1)

从技术上讲,这很容易

您可以在表单中定义一个全局变量(或者更好的是在表单全局选项中使用的脚本库)。

将uidocOpener调暗为NotesUIDocument

然后在"初始化" - 新表格的事件中设置:

Dim ws as New NotesUIWorkspace
Set uidocOpener = ws.CurrentDocument

在那种情况下,新文档尚未打开,因此CurrentDocument返回" last"打开文件(这是你的开场白)。

保存/关闭时,您可以更新"开启者"中的字段。文件就像

一样简单
Call uidocOpener.Document.Replaceitemvalue( "YourItem", Source.Document.Getitemvalue( "YourItem" ) )

但请注意:你需要监视开启者是否仍然打开,并确保用户不会在另一个窗口打开时编辑它,因为它不会像对话框那样阻止gui。