在一个新的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)。 拜托,帮助我!
答案 0 :(得分:3)
奇怪的是,您似乎也应该收到错误。您正在NotesDocument对象(odoc)上调用NotesUIDocument的前端方法,而NotesDocument类没有名为“FieldSetText”的方法。这应该可以解决问题:
取代Call odoc.FieldSetText(“NewProdAvail”,“0”),试试这个
Call odoc.ReplaceItemValue("NewProdAvail", "0")
希望这有帮助!
答案 1 :(得分:1)
NotesDocument类没有FieldSetText方法。您可以使用:
odoc.replaceItemValue ("NewProdAvail", "0")
或简单地说:
odic.NewProdAvail = "0"
答案 2 :(得分:0)
我用过
Set Item = odoc.replaceItemValue ("NewProdAvail", restAvailable)
Call odoc.Save(True, True)
它有效。谢谢你们的帮助!
答案 3 :(得分:0)
之前的答案,告诉您如何在后端文档中设置字段。我认为值得一提的是后端和前端如何工作。
在编写Lotus Notes客户端时,您需要记住Notes文档具有前端和后端组件。基本上,Lotus Client中的Notes文档也有前端内存版本和相应的后端内存版本。更改应在查询期间传播到后端,然后提交您通过前端进行的更改。
由于之前的答案向您展示了如何直接更改后端文档,因此您还应该了解NotesUIDocument类中的“autoload”属性。 This链接解释得很清楚。其他可以“篡改”字段值设置的内容是受影响字段中的公式,以及字段是计算还是可编辑。
希望这有帮助。