2011-06-29 47 views
3

我正在使用MS Access 2007.我有一個包含多個電話號碼字段(cell,home,work,primary *)的表單。所有這些字段的數據源來自Customers表。MS Access中的條件默認值

基本上,我想要做的是建立一組主要*字段的默認值。我想完成這樣的事情:

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中的屬性面板?

+0

您不想複製數據(即將相同的電話號碼複製到默認字段)。相反,您希望有一個字段,其目的是識別哪個號碼是默認號碼。最簡單的方法是使用整數字段並使用選項組來顯示結果。 –

回答

1

數據控件的默認值屬性在開始新記錄時被評估/應用。這可能很明顯,在新記錄被插入到表格之前發生。也許不那麼明顯,它發生在用戶將任何數據輸入新記錄之前。因此,即使可以使用基於另一個字段值的默認值,其他字段在此時也是Null,除非它們也分配了默認值。

在另一種情況下,您可能會考慮表單的插入事件之前,將您想要的任何控制值分配給目標控件。但是,如果您希望用戶在保存記錄之前更改默認的主要值,那就不太適合了。

想我可能會回到使用單個電話號碼控件上的更新後事件。因此,對於更新後的[單元],您可以使用:

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

其他類似。

在用戶或代碼爲Me.primary分配了一個值後,它將保持不變,除非用戶更改它。

1

如果你不介意你的控件是隻讀的,你可以簡單地使用一個表達式作爲你的源代碼控件。事情是這樣的:

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

如果你想控制可編輯,你需要動態地改變控制源代碼背後的onActivate事件我想(我沒有測試過)。