Lotus Notes 7-从可编辑视图自动计算一列-InViewEdit事件

Lotus Notes 7-从可编辑视图自动计算一列-InViewEdit事件,view,lotus-notes,View,Lotus Notes,我最近有个问题让我头疼。我希望能在你的帮助下找到解决办法 我有一个视图:“vwTest”嵌入在表单中。这是一个可编辑的视图。该视图有3列:编号、成本、差异。所有3列都有一些字段名作为默认值,这些字段名存在于名为“fmTest”的表单中,字段名为:Number、Cost、Difference 在主窗体(包含视图)上有一个名为:TotalValue的字段(计算) 该视图有两个操作:AddLine和DeleteLine 我想做的是: 假设TotalValue=5000 用户完成视图的第一行: 数量

我最近有个问题让我头疼。我希望能在你的帮助下找到解决办法

我有一个视图:“vwTest”嵌入在表单中。这是一个可编辑的视图。该视图有3列:编号、成本、差异。所有3列都有一些字段名作为默认值,这些字段名存在于名为“fmTest”的表单中,字段名为:Number、Cost、Difference

在主窗体(包含视图)上有一个名为:TotalValue的字段(计算)

该视图有两个操作:AddLine和DeleteLine

我想做的是:

假设TotalValue=5000

  • 用户完成视图的第一行:
数量|成本|差异


1 | 50 | 4950=>第三列值将自动计算为5000(总值)和50(第二列值)之间的差值

  • 用户完成视图的第二行:
2 | 60 | 4890=>第三列值将自动计算为视图中最后第三列值与60(第二列的当前值)之间的差值

我认为这就像一个递归算法

TotalValue的值存在,它是数字类型字段


希望能找到解决办法,解决这个问题!我真的很感谢你的帮助和时间

每次保存后,您必须循环浏览属于“此”主文档的所有条目,并重新计算总数。我假设,“行”是主文档的响应文档,而嵌入的视图是按主文档的unid分类的

Dim ses as New notes session
Dim db as NotesDatabase
暗视图嵌入为注释视图
Dim viwNav作为注释查看导航器
请注意,请注意
将文档线标注为注释文档
Dim DOCMIN as NOTES文档
Dim dblTotal为双精度
Set db=ses.CurrentDatabase
设置docMain=…'以某种方式获取主文档,因此我需要您当前的代码
dblTotal=docMain.TotalValue(0)
Set viewmembedded=db.Getview(“vwTest”)
viewmembedded.AutoUpdate=False
设置viwNav=viwEmbedded.CreateViewNavFromCategory(docMain.UniversalID)
Set ve=viwNav.getFirst()
虽然没有,但我什么都不是
设置docLine=ve.Document
dblTotal=dblTotal-docLine.Cost(0)
如果dblTotal docLine.Difference(0),则
docLine.Difference=dblTotal
调用docLine.Save(true,true)
如果结束
Set ve=viwNav.getnextDocument(ve)
温德
为什么循环?如果有人在创建了第二行和第三行之后修改了第一行怎么办?然后,2、3和所有后续行的总数必须更改

此代码未在Designer中键入,可能包含拼写错误。它不包含任何错误处理,如果不小心使用,可能会产生复制/保存冲突


希望这会有所帮助

到目前为止您尝试了什么?请展示您已经开发的代码。我尝试过这样的smth:“调用uidoc.FieldSetText(“差异”,uidoc.FieldGetText(“TotalValue”)-uidoc.FieldGetText(“成本”),您真的需要单独文档中的行吗?如果没有,有更简单的方法来实现这一点。你的意思是如果这3个字段真的需要来自其他表单?是的。否则,您可以将列表放在主窗体的一个字段中。谢谢您的帮助!所以,我应该通过将代码放在表单的什么事件中来验证它?我猜它不属于视图的InViewEdit?再次感谢!我假设您已经有了InvieEdit事件的代码。在这种情况下,您将在完成自己的计算后调用代码。注意:如果您编辑列,仅使列可编辑没有任何作用。。。您必须编写代码才能将输入的值返回到相应的后端文档/如果需要创建新文档我没有用于InViewEdit计算的代码,我会尝试一下,让您知道我认为他也需要由AddLine和DeleteLine操作按钮触发的代码。无论如何,当然是删除行。如果AddLine只是添加空值,那么它可能不适用于AddLine。你好,Richard!我有用于在嵌入式视图中添加/删除行的AddLine和DeleteLine代码。