2

在一个新的 LotusNotes 表单中,我有一个计算值字段(“NewOrdProdUID”),它使用另一个现有文档的唯一 ID 正确设置。我想通过 LotusScript 更改现有文档中“NewProdAvail”字段的值。我试过这个:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
 Dim session As NotesSession
 Dim db As NotesDatabase
 Dim ws As New NotesUIWorkspace
 Dim uidoc As notesUIDocument
 Dim odoc As notesDocument 

 Set session = New NotesSession
 Set db = session.CurrentDatabase
 Set uidoc = ws.CurrentDocument

 Set odoc = db.GetDocumentByUNID(uidoc.FieldGetText("NewOrdProdUID"))
 Call odoc.FieldSetText("NewProdAvail", "0")
 Call odoc.Save(True, True)
End Sub

但是,“NewProdAval”字段的值保持不变(在我的例子中是 3,而不是 0)。请帮我!

4

4 回答 4

3

奇怪,您似乎也应该得到一个错误。您在 NotesDocument 对象 (odoc) 上调用 NotesUIDocument 的前端方法,而 NotesDocument 类没有名为“FieldSetText”的方法。这应该可以解决问题:

而不是调用 odoc.FieldSetText("NewProdAvail", "0"),试试这个

Call odoc.ReplaceItemValue("NewProdAvail", "0")

希望这可以帮助!

于 2010-01-29T01:50:21.123 回答
1

NotesDocument 类没有 FieldSetText 方法。您可以使用:

odoc.replaceItemValue ("NewProdAvail", "0")

或者简单地说:

odic.NewProdAvail = "0"
于 2010-01-29T03:19:25.423 回答
1

前面的答案,告诉你如何在后端文档上设置字段。我认为值得一提的是后端和前端的工作方式。

在为 Lotus Notes 客户端编码时,您需要记住 Notes 文档具有前端和后端组件。基本上,Lotus Client 中的 Notes 文档有一个前端内存版本和一个相应的后端内存版本。更改应在查询保存期间传播到后端,然后通过前端提交您所做的更改。

因为前面的答案向您展示了如何直接更改后端文档,所以您还应该注意 NotesUIDocument 类的“自动加载”属性。这个链接很好地解释了它。其他可以“篡改”字段值设置的内容是受影响字段中的公式,以及该字段是计算的还是可编辑的。

希望这可以帮助。

于 2010-03-30T12:58:24.273 回答
0

我用了

Set Item = odoc.replaceItemValue ("NewProdAvail", restAvailable)
Call odoc.Save(True, True)

它奏效了。谢谢你们的帮助!

于 2010-01-29T16:38:05.080 回答