我對Access相對來說比較陌生,我選擇的任何SQL和VBA都是自學的,所以我非常感謝那些不是太重的答案與技術術語...說,我有一個問題,如果用戶選擇不輸入數據允許組合框留在窗體上的問題。另外,我正在使用Access 2016.如何讓一個組合框留空//跳過一個表格
最初我碰到的問題是,如果組合框完全被跳過並留空,或者用戶選擇了組合框,然後嘗試繼續前進而未從列表中進行選擇,他們得到錯誤「您試圖將Null值賦值給不是Variant數據類型的變量」,並且無法移動到表單上的任何其他字段或保存輸入的記錄。
我發現這個article詳細說明了一個可能的解決方案,但我似乎無法讓它工作。餘由未結合的組合框,設置行來源:
SELECT EmailID, PersonalEmail FROM EmailT UNION SELECT "<N/A>","<N/A>" FROM EmailT
ORDER BY PersonalEmail;
其中PersonalEmail是類型短文本的字段和EMAILID是自動編號。我也按照文章的步驟來設置組合框(列寬等),並將其設置爲限制到列表=是。
這裏是我的確切代碼:
Private Sub Combo62_AfterUpdate()
If Combo62 = "<N/A>" Then
EmailID = Null
Else
EmailID = Combo62
End If
End Sub
Private Sub Form_Current()
If IsNull(EmailID) Then
Combo62 = "<N/A>"
Else
Combo62 = EmailID
End If
End Sub
< N/A>現在顯示了我的名單上,但如果選擇了它,我得到的錯誤:「您輸入的值不適用於此例如,您可能在數字字段或大於FieldSize設置許可的數字中輸入了文本。「
訪問的調試器突出行:
EmailID = Null
,但我不知道我現在應該採取嘗試和解決這個問題什麼步驟。
我完全接受其他允許組合框空白的方法,如果有人知道更好的方法來做到這一點。就我所知,我錯過了一些非常明顯的東西!預先感謝任何見解!
編輯:感謝您的幫助球員,我從來沒有弄清楚到底是什麼問題,但我從另一個論壇得到了一些建議,重新考慮我的數據庫設計,所以這最終成爲一個空問題 - 這是完全不同的現在!
是EmailID整數?整數不能爲空,你將需要找到另一種方式來處理它,例如設置爲-1 –
EmailID是一個整數 - 我沒有意識到它們不能爲空。我試圖將它設置爲-1,但仍然無法讓代碼在沒有錯誤的情況下運行 – AliG
只有變量可以在vba中爲null,對於數字數據類型,有一個帶有值(整數爲0)的Default構造函數。所以你的IsNull(EmailID)也是無用的 –