Ms access MS访问溢出错误
此行运行时,Access中出现溢出错误Ms access MS访问溢出错误,ms-access,vba,Ms Access,Vba,此行运行时,Access中出现溢出错误 intAT = Nz(DLookup("at_ID", "qryAT", "at_sc_ID=" & Me.sc_ID & " AND at_OT=0"), 0) 如果我在该行之前添加Debug.Print Nz(DLookup(“at_ID”,“qryAT”,“at_sc_ID=“&Me.sc_ID&”和at_OT=0”),0),它会很好地打印ID号,但在下一行的赋值过程中仍然会出错 我还可以通过向查询中添加一个条件来实现它,该条件将所
intAT = Nz(DLookup("at_ID", "qryAT", "at_sc_ID=" & Me.sc_ID & " AND at_OT=0"), 0)
如果我在该行之前添加Debug.Print Nz(DLookup(“at_ID”,“qryAT”,“at_sc_ID=“&Me.sc_ID&”和at_OT=0”),0)
,它会很好地打印ID号,但在下一行的赋值过程中仍然会出错
我还可以通过向查询中添加一个条件来实现它,该条件将所有结果限制为在某一天和某一时间之前出现的结果。它只会将查询限制在特定时间之前,而不是更早的时间之后。如果包含该时间之后的任何记录,它将再次溢出。我已经看过了在那之后输入的数据,看起来一切都很好,但我不确定我到底应该寻找什么。与导致其失败的第一条记录相关联的
at_ID
是32838
,如果这有帮助的话。我猜intAT
被声明为整数类型。但是32838对于整数来说太大了。(整数可以保存–32768到32767之间的数字),因此它会触发错误#6,“溢出”
改为使用长整数
Dim lngAT尽可能长
lngAT=Nz(DLookup(“at_ID”,“qryAT”,“at_sc_ID=“&Me.sc_ID&”和at_OT=0”),0)
convertintAT
转换为double。我相信,根据Access 2007,int被隐式地标注为long。这似乎可以做到。但是,为了避免将来出现这个问题,您知道为什么它可以处理32837以下的数字吗?32837明显大于32767。您是说DLookup
返回的at_ID
值介于32768和32837之间,并且这些值存储在intAT
中没有错误吗?如果intAT
被声明为整数,我认为这是不可能的。啊,不。我的错误,它实际上并没有赋值。谢谢你的帮助。