我对Access相对较新,而且我接受的任何SQL和VBA都是自学成才的,所以我真的很感激那些没有太多技术术语的答案......那就是说,我遇到了问题如果用户选择不输入数据,则允许组合框在表单上留空。此外,我正在使用Access 2016。
最初我遇到的问题是,如果组合框被完全跳过并留空,或者如果用户选择组合框然后尝试继续而不从列表中进行选择,则他们得到错误“你试过将Null值分配给不是Variant数据类型的变量,“并且无法移动到表单上的任何其他字段或保存正在输入的记录。
我发现这个article详细说明了可能的解决方案,但我似乎无法让它发挥作用。我制作了一个未绑定的组合框,将Row Source设置为:
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
&LT; N / A&GT;现在显示在我的列表上,但如果它被选中,我会收到错误:“您输入的值对此字段无效。例如,您可能在数字字段中输入了文本或者数字大于FieldSize设置允许。“
Access的调试器突出显示该行:
EmailID = Null
但是我不确定我现在应该采取什么步骤来尝试解决这个问题。
如果有人知道更好的方法,我完全愿意让组合框留空。据我所知,我遗漏了一些非常明显的东西!提前感谢任何见解!
编辑:感谢您的帮助,我从来没有弄清楚究竟是什么问题,但我从另一个论坛得到一些建议,重新考虑我的数据库设计,所以这最终成为一个空问题 - 现在完全不同了!答案 0 :(得分:0)
如果表单的记录源包含具有一对多关系的查询,则可能会出现此错误。尝试仅使用基表作为表单的记录源。如果需要显示相关数据,请使用子表单。其余代码可能是不必要的。