【问题标题】:access 2010 expression builder访问 2010 表达式生成器
【发布时间】:2012-02-15 02:56:17
【问题描述】:

我想要一个文本框包含基于其他 2 个控制字段值的计算的数据 - 仅当它的值为 null 时(即数据库中列的当前值为 null)。

所以我在表达式生成器中为默认值属性输入了 =([control1]*[Control2])/1000 - 但是结果始终显示文本框为空(即使 control2 和 control2 包含值)。

我怎样才能做到这一点?这样的操作只能在代码隐藏即VB中完成吗?

谢谢,

KS

【问题讨论】:

    标签: ms-access default-value


    【解决方案1】:

    我认为您说的是绑定到表单记录源中的字段的控件。当基础字段为 Null 时,您希望控件加载您的计算值。

    如果该解释是正确的,您可以从表单的 On Current 事件中进行。

    If IsNull(Me.txtYourTextBox) Then
        Me.txtYourTextBox = (Nz(Me.control1) * Nz(Me.Control2)) / 1000
    End If
    

    这会将计算的值加载到文本框中,允许用户根据需要更改其值,并在保存记录时将值存储到绑定字段。

    如果绑定的字段不是 Null,其值将显示在文本框中,不会被 On Current 代码更改。

    这是你想要的吗?

    【讨论】:

    • 是的,这正是我所追求的——只是希望它可以作为一种表达方式来完成——但没什么大不了的。谢谢。
    【解决方案2】:

    要使用 VBA 完成此操作,请添加 Form_Load 事件。 (在设计视图中打开表单,在表单属性中单击事件选项卡并为“加载时”选择事件过程,然后单击...) 本示例使用 [TextField] 引用表格数据。

    Private Sub Form_Load()
      TextControl.SetFocus
      If IsNull([TextField]) Then
        TextControl.Text = ([Control1] * [Control2]) / 1000
      End If
    End Sub
    

    【讨论】:

    • 谢谢,看来 VBA 是唯一的方法。
    • 确实如此。我尝试使用 IIf(...) 设置 DefaultValue 的类似代码,但由于我目前无法解释的原因,它没有设置 TextBox。
    • 我不认为加载事件是合适的,除非表单只显示一条记录。我会选择当前事件,可能还有两个相关控件的更新后事件。为了选择最合适的事件,有必要了解表单的流程。
    猜你喜欢
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多