我对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)也是无用的 –