使用VBA的Access中的数据类型转换错误

时间:2016-06-23 14:09:46

标签: vba ms-access access-vba

输入日期31/06/2016,即2016年6月31日

qdf.Parameters("Forms!frmReport!EndDate") = frm!EndDate

错误消息是:

  

运行时错误'3421':           数据类型转换错误。

2 个答案:

答案 0 :(得分:1)

嗯......你到底想要 else 到底是什么? : - D 确实,不可能“转换”6月31日!

所以,有效的问题:“现在是什么?”

“是啊...这是擦......”

您需要做的是在捕获此异常时设置运行时错误处理块(在Visual Basic中为“on error goto ... resume next”)什么时候可能会抛出。

BTW: 理由为什么事情以这种方式完成,“99.9%的时间,转换将成功,直到用户胖手指一把钥匙。“因此,胖手指是:'一个例外',应该非常有效地对待它。而不是通过常量(!)检查来加重我们的代码以查看日期转换是否成功 ......带来强烈可怕的(!!)后果,我们不应该包括一个单一的悲惨测试。我们使用异常抛出机制来单独排除(罕见)情况。

因此,“如果你”到达下一个语句,''你可以肯定(!)转换成功,因为,“如果它没有,你就不会(立即......)在这里。“

不是通过返回代码向你报告他们的失败,而是要求你“测试每一个,每个(!)时间,或多或少地对死亡的痛苦”,函数处理“例外”规则“作为他们的例外......并且迫使你准备好”抓住“他们。

答案 1 :(得分:1)

  1. 在设计视图中打开frmReport
  2. 选择EndDate控件。
  3. 打开其属性表,然后为格式属性选择"短日期"
  4. 使用该设置,Access将不允许您在EndDate中输入无效日期(例如2016年6月31日)。由于它已经是日期/时间值,因此在用于查询参数时,您不需要进行数据类型转换。