繁体   English   中英

MS Access Form事件,VBA

[英]MS Access Form events, VBA

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

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

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

我已经将表单加载事件设置为:

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

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

谁能暗示我在做什么错?

谢谢,迈克

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

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

将一个空字符串附加到null或一个空字符串会导致一个空字符串,然后可以测试其长度

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

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

if null = "" then
    'do stuff
end if 

问题是当在比较中使用null时,结果始终为null-这导致if评估为false。 您甚至无法做到这一点:

if not(null) then
    'do stuff
end if 

要么

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

常规的解决方案是我们的isnull(x) ,如果xnull ,则结果为true

正如Tim Williams指出的,您可以使用:

IsNull(x) or x="" 

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

这也适用:

if Nz(Field1, "") <> "" then 'do null / empty stuff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM