0

Lotus notes 5 上有一个应用程序。如果视图打开,getdocumentbykey 函数将不起作用。如果其他视图已打开或数据库已关闭,则该功能正常工作并找到文档。即使视图是打开的,我们如何使它工作?我已经给出了下面的代码部分。谢谢你。

    BillNo2 = cdoc.fieldgettext("Bill_No2")
    Set view = db2.GetView("Bill No.")
    Set doc = view.getdocumentbykey(BillNo2)
    If Not doc Is Nothing Then
        doc.DOdone = "Done"
        doc.LorryNo = cdoc.fieldgettext("Lorry_No")
        doc.TripNo = cdoc.fieldgettext("Trip_No")
        Call doc.save(True, True)
    End If

在调试时,它会跳过“If Not doc is Nothing”这一行,即使有文档也会结束循环。如果视图未打开,则相同的代码可以正常工作。请帮助我。谢谢。

4

2 回答 2

3

向后工作,如果 fieldGetText 没有返回您所期望的,您的 getDocumentByKey 调用将失败。在调用之前,您是否在调试器中检查过 BillNo2 的值?

进一步向后工作, fieldGetText 不会返回您所期望的原因是 cdoc 不是您所期望的。你是如何运行这段代码的?设置cdoc的代码是什么?由于您使用 fieldGetText,我认为它是一个 NotesUIDocument,并且从名称猜测我敢打赌您是从 NotesUIWorkspace.currentDocument 获取它的。也许您的代码正在运行的上下文中的 currentDocument 并不是您所期望的。即,如果您的代码在视图的上下文中运行,而不是在您正在阅读的文档的上下文中运行,我不希望它能够工作。

于 2012-12-20T15:55:19.437 回答
1

这听起来像是一个错误,考虑到我们谈论的是 13 年前发布的版本,这完全有可能。但首先要检查几件事:

  • 确保 Bill No. 视图的第一列已排序。
  • 确保视图不是私有视图类型。

如果这些都不正确,或者您出于业务原因无法更改该视图,我认为 Anders 建议的使用隐藏视图的解决方法是一个好主意,应该可以解决问题。

于 2012-12-20T14:32:07.883 回答