MS Access中的条件默认值

时间:2011-06-29 01:42:38

标签: sql ms-access ms-access-2007

我正在使用MS Access 2007.我有一个包含多个电话号码字段的表单(单元格,家庭,工作,主要*)。所有这些字段的数据源来自Customers表。

基本上,我要做的是为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]

我知道这不是非常合乎逻辑的代码,但我希望你能看到我在这里想要做的事情。我只想将primary *字段默认为单元格编号(如果有),然后是主编号(如果没有单元格),最后是工作编号(如果它是唯一可用的编号)。

有没有办法在Access中使用“属性”面板执行此操作?

2 个答案:

答案 0 :(得分:1)

在启动新记录的瞬间评估/应用数据控件的默认值属性。可能显而易见的是,在将新记录插入表格之前发生了这种情况。也许不那么明显,它发生在用户将任何数据输入新记录之前。因此,即使可以使用基于另一个字段值的默认值...其他字段在该点也将为空,除非它们也分配了默认值。

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

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

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

与其他人类似。

在用户或代码为Me.primary分配值之后,除非用户更改它,否则它将保持不变。

答案 1 :(得分:1)

如果您不介意将控件设为只读,则只需使用表达式作为源控件即可。像这样:

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

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