【问题标题】:Calculating a value in continuous form以连续形式计算值
【发布时间】:2020-07-13 20:24:57
【问题描述】:
我目前在 MS Access 中使用连续表单,用户将值输入到一个字段中。在表单中,一个字段下有三个记录。我不确定这是否可能或什至如何做到这一点,但我想从第二条记录中的值中减去第一条记录中的值来计算第三条记录的值。 Form in question
在我提供的示例中,它将是 20-10,然后第三条记录是 10。字段名称是 Initial_Value。我一直在网上寻找,但没有看到任何有关如何获取这些值以使用 VBA 执行此操作的信息。表单的名称是“frm_main_process_values”,是“frm_main_msmt”的子表单。
【问题讨论】:
标签:
ms-access
vba
ms-access-2010
【解决方案1】:
添加具有测量类型(初始、最终、更改,可以隐藏)的列,并用于具有基于函数计算的控制源的值文本框:=CalcDrop([ResType],[Result])。
并使用静态变量在模块中创建公共函数,这些变量会记住以前的值:
Public Function CalcDrop(strResType As String, lngVal As Long) As Long
Static lngInit As Long
Static lngFinal As Long
Select Case strResType
Case "initial"
lngInit = lngVal
CalcDrop = lngVal
Case "final"
lngFinal = lngVal
CalcDrop = lngVal
Case "change"
CalcDrop = lngInit - lngFinal
End Select
End Function
您需要确保每个系列的行顺序相同:初始、最终、更改。以下是结果,计算列“值”:
【解决方案2】:
这在连续形式中是不可能的,因为Value文本框只有一个ControlSource,它不能同时是一个绑定字段和一个计算值。
如果它总是三个记录,并且您用这三个记录预先填写表单,并且它们具有带有排序字段的定义顺序,您可以有一个计算值并写入的按钮它到第三条记录。但这将是一个非常奇怪的连续形式的用法。