2010-11-05 61 views
1

我試圖阻止循環(甚至級聯)引用在我的數據,它似乎只是工作的一部分時間。「無當前記錄」在取消後combo_BeforeUpdate

在Access 2007,我有如下表:

create table mfr (
    mfr_id     Autonumber, 
    mfr_nm     Text(255), 
    mfr_is_alias_for_id Long Integer 
) 

我從Excel導入一組數據,以及mfr_nm是從工作表中的一列。我無法控制數據如何輸入到Excel中,因此我想要一種將備用拼寫捕捉爲「真正」相同的方法。到目前爲止,這麼好(我認爲......)。

現在我已經建立了一個表格。我有一個別名的ComboBox - 到目前爲止,再好不過了。然而,當我這個代碼添加到前事件,事情就變得「有趣」(處理省略錯誤):

If Not IsNull(cboMfrAlias) Then 
    If Not IsNull(DLookup("mfr_is_alias_for_id", "mfr", "mfr_id=" & cboMfrAlias)) Then 
     MsgBox """Alias for"" must not also be an alias.", vbExclamation 
     Cancel = True 
    End If 
End If 

這工作完全按照我期望它當窗體是在窗體視圖,但如果我在數據表中查看我的MsgBox後立即緊接着一個由AccessUpdate生成的「無當前記錄」錯誤,它是而不是,它由BeforeUpdate子句中的錯誤處理捕獲。

我能抓住這個錯誤嗎?哪裏?

+0

我想你還必須有其他的事情,因爲這在測試表單上爲我工作。 – Fionnuala 2010-11-05 23:04:23

回答

2

您的下拉列表應過濾掉別名的條目。換句話說,不要顯示用戶無法做出的選擇。

您只需從下拉列表中刪除mfr_is_alias_for_id不爲空的選項即可。

我已經實現了這個在各種僞裝,它工作正常。

+0

Duh。如果我直接想,我會先做,而不會遇到問題。我仍然(空洞地)好奇地回答了問題的答案.... – RolandTumble 2010-11-05 23:02:43

0

我從很久以前就解決了您的問題中的「No Current Record」錯誤部分。檢查谷歌的答案後,我發現這link這是有幫助的。但是,我並沒有使用NZ()來轉換匯總查詢中令人討厭的二進制字段,而是使用了troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield]),這樣可以消除錯誤。所以我的解決方案只是我發現的原始答案的一個小變化,但它解決了錯誤,並讓你保持空值,如果你想...