【发布时间】:2012-02-15 02:56:17
【问题描述】:
我想要一个文本框包含基于其他 2 个控制字段值的计算的数据 - 仅当它的值为 null 时(即数据库中列的当前值为 null)。
所以我在表达式生成器中为默认值属性输入了 =([control1]*[Control2])/1000 - 但是结果始终显示文本框为空(即使 control2 和 control2 包含值)。
我怎样才能做到这一点?这样的操作只能在代码隐藏即VB中完成吗?
谢谢,
KS
【问题讨论】:
我想要一个文本框包含基于其他 2 个控制字段值的计算的数据 - 仅当它的值为 null 时(即数据库中列的当前值为 null)。
所以我在表达式生成器中为默认值属性输入了 =([control1]*[Control2])/1000 - 但是结果始终显示文本框为空(即使 control2 和 control2 包含值)。
我怎样才能做到这一点?这样的操作只能在代码隐藏即VB中完成吗?
谢谢,
KS
【问题讨论】:
我认为您说的是绑定到表单记录源中的字段的控件。当基础字段为 Null 时,您希望控件加载您的计算值。
如果该解释是正确的,您可以从表单的 On Current 事件中进行。
If IsNull(Me.txtYourTextBox) Then
Me.txtYourTextBox = (Nz(Me.control1) * Nz(Me.Control2)) / 1000
End If
这会将计算的值加载到文本框中,允许用户根据需要更改其值,并在保存记录时将值存储到绑定字段。
如果绑定的字段不是 Null,其值将显示在文本框中,不会被 On Current 代码更改。
这是你想要的吗?
【讨论】:
要使用 VBA 完成此操作,请添加 Form_Load 事件。 (在设计视图中打开表单,在表单属性中单击事件选项卡并为“加载时”选择事件过程,然后单击...) 本示例使用 [TextField] 引用表格数据。
Private Sub Form_Load()
TextControl.SetFocus
If IsNull([TextField]) Then
TextControl.Text = ([Control1] * [Control2]) / 1000
End If
End Sub
【讨论】: