1

我在访问表单中有 3 个字段。

  • 字段 1 - 是一个预先填充了一些数据的文本字段。没有空记录
  • 字段 2 - 是一个预先填充了一些数据的文本字段。它可以有一个值或为空。
  • 字段 3 - 是一个文本字段。用户将在该字段中输入信息。

有一个规则。如果字段 2 中有空值,则字段 3 将等于字段 1 的值,因此我希望它自动从字段 1 填充字段 3。如果值不为空,则用户将手动填充字段记录.

我已经设置了一个表单加载事件:

If Me.field2 = "" Then
   Me.field3 = Me.field1

我遇到的问题是,用户可能想要更改字段 1 的预填充值,如果相应的字段 2 记录为空白,我希望使用用户在字段 1 中更改的相同值更新字段 3。我不想一直重新加载表单才能进行此更新。我在 After_Update 事件和 change 事件中尝试了上述语法,但它没有更新。

谁能建议我做错了什么?

谢谢,迈克

4

3 回答 3

3

对空字符串或 null 的另一个测试是

if len(field1 & "")=0 then 'do null stuff

将空字符串附加到 null 或空字符串会产生一个空字符串,然后您可以测试它的长度

于 2012-05-02T17:26:59.717 回答
2

迈克已经得到了他的答案,但我会以解释的形式给出更完整的答案。

这里的问题是您正在尝试将一个字段null与一个空字符串进行比较。就像你已经完成了

if null = "" then
    'do stuff
end if 

问题是在null比较中使用时,结果始终为空 - 这导致if评估为假。你甚至不能这样做:

if not(null) then
    'do stuff
end if 

或者

if not (null <> "") then
    'do stuff
end if 

传统的解决方案是我们isnull(x),它评估为trueif xis null

正如蒂姆威廉姆斯所说,您可以使用:

IsNull(x) or x="" 

如果只能为空字符串返回 null,有些人可能会认为x=""是多余的。x

于 2012-05-02T16:47:32.137 回答
1

这也有效:

if Nz(Field1, "") <> "" then 'do null / empty stuff
于 2014-02-10T08:05:17.860 回答