MS Access中的条件默认值



我使用的是MS Access 2007。我有一个表格,里面有几个电话号码字段(手机、家庭、工作、主要*)。所有这些字段的数据源都来自"客户"表。

基本上,我要做的是为primary*字段建立一组默认值。我想完成这样的事情:

If [cell] <> Null:
    primary* = [cell]
elif [cell] Is Null and [home] <> Null:
    primary* = [home]
elif [cell] Is Null and [home] is Null and [work] <> Null:
    primary* = [work]

我知道这不是很合乎逻辑的代码,但我希望你能看到我在这里试图做什么。我只希望主*字段默认为单元格编号(如果有),然后是家庭编号(如果没有单元格),最后是工作编号(如果只有工作编号)。

有没有一种方法可以使用Access中的"属性"面板来完成此操作?

数据控件的默认值属性在新记录启动时进行评估/应用。在将新记录插入到表中之前,可能很明显会发生这种情况。也许不太明显,它发生在用户将任何数据输入到新记录之前。因此,即使可以根据另一个字段值设置默认值。。。其他字段此时将为Null,除非它们也指定了默认值。

在另一种情况下,您可能会考虑表单的beforeinsert事件,以将您想要的控件值分配给目标控件。但是,如果您希望用户在保存记录之前更改默认的主要值,那么这就不太合适了。

我想我可能会重新使用个人电话号码控件上的更新后事件。因此,对于更新后的[细胞],您可以使用:

If IsNull(Me.primary) Then
    Me.primary = Me.cell
End If

其他人也是如此。

用户或代码将值分配给Me.prprimary后,除非用户对其进行更改,否则该值将保持不变。

如果您不介意控件是只读的,您可以简单地使用表达式作为源代码控件。类似这样的东西:

=iif(IsNull(Cell);iif(IsNull(Home);Work;Home);Cell)

如果你想让控件是可编辑的,我想你需要在onActivate事件的代码后面动态地更改控件源(我还没有测试过)。

最新更新