首页 文章

打开'parent'表单时缺少Lotus Notes文档字段

提问于
浏览
1

我已经在Lotus(IBM)Notes / domino开发了25年之久,我以前从未遇到过这种情况 .

该应用程序基于Notes客户端,使用Notes 9 .

我打开一个文档(DOC A),它使用FORM A.从这个文档中,有一个按钮来创建一个使用FORM B的新文档 . 这将在一个新窗口中打开 . DOC B不是DOC A的响应,但是一些(很多)LotusScript从DOC A复制到DOC B.

所以现在我们打开了3个窗口:原始应用程序,DOC A doc和DOC B.

我对DOC B进行了编辑,并将其保存 . 我关闭它,让DOC A打开,然后导航到可以找到DOC B的另一个视图 .

询问文档属性字段列表以查看我编辑的字段(在我的情况下为“InvoiceComments”) . 是的,我的文字就在那里 .

然后我运行一个脚本代理,它获取DOC B并打印出InvoiceComments的内容 . 这是空白的 . 编写Web代理以获取相同的文档...我的文本可以在InvoiceComments中找到 .

它绝对是同一个文件,同一个UNID等 .

这就是:当查看文档属性,字段列表时,我可以在字段值中看到myy编辑 . 通过Notes客户端运行脚本以获取该文档时(通过UnprocessedDocument或从视图中),该字段具有其“旧”值(空白)

关于发生了什么的唯一线索是,如果我关闭DOC A,那么打印“InvoicComments”值的代理突然开始尊重磁盘上的内容(即,它的行为) .

听起来像笔记本客户端的一个错误,但我不知道如何绕过它,因为人们会想要做上面的过程 .

2 回答

  • 3

    前一段时间我使用大脚本库和全局变量 .

    我需要大量调试才能找出问题所在 .

    本质上问题是:只要代码中存在一个包含文档Doc A的变量ANYWHERE,那么来自任何上下文的任何脚本 - 运行将获得该文档的“旧”值(尽管前端显示已更改)项目 Value ) .

    删除文档B中任何代码中保存文档A的NotesDocument-对象,或使用Set .... = Nothing来防止发生这种情况 .

    所以使用这两行中的任何一行都会有所帮助:

    Delete docA
    Set docA = Nothing
    
  • 1

    一位顾问写道,我不能赞同这个代码,但也许这种模式可以解决你的问题:

    Set doc=uidoc.Document
    newentry=doc.CommentEntry(0)
    id=doc.Universalid
    Call uidoc.Fieldclear("CommentEntry") 
    Call uidoc.Save
    Call uidoc.Close(True)
    Set doc=db.GetDocumentByUNID(id)
    doc.CommentEntry=newentry
    

    他发现即使你有一个带有有效UNID的“有效”文档对象,当你把它作为UiDoc打开时,Notes(令人沮丧地)会在内存中保留一份副本,所以他不得不求助于这个想法 . (它是一个错误还是一个怪癖?)我认为这基本上是托斯滕所建议的 .

相关问题