赛捷软件论坛's Archiver

lynn.yu 发表于 2020-6-29 17:14

[V12功能解说] Sage X3中的计算容量溢出报错

[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b]


在Sage X3中,有时在添加了定制的功能中会出现“计算容量溢出”的报错。这个报错消息不是描述性的,但通过分析随后的报错消息,就可以找出造成该问题的代码行。
[attach]6184[/attach]

以下是当你在Sage X3中看到计算容量溢出报错时的做法。

[b]背景[/b]

当我们第一次看到这个报错时,我们认为计算容量溢出报错是一个账套设置中的内存问题,但X3会话有足够的可用内存。然后,我们认为这是一个数据问题,例如字符错误,但在运行了不同的SQL脚本后,我们未能识别到任何非法字符。

最后,我们意识到这是一个数据转换的问题。

我们最初也感到困惑,因为定制项正常运行了将近一年;在找到问题的原因后,我们可以看出以前没有发生过是因为没有超过32行。
[attach]6185[/attach]

这个报错与数据类型转换的问题有关。当一个较大的值被分配给一个数值较小类型的变量时,系统就会显示“计算容量溢出”的报错。
[attach]6186[/attach]

[attach]6183[/attach]
上面那行因为表的值大于整数而导致逻辑崩溃。

Shortint在-32768至+32767之间
[attach]6187[/attach]

在我们的案例中,当一张的行数超过32行,而下一行ID是33000时,这个对象就无法处理了,因为它是作为整数申报的。


[b]解决方法[/b]

有一个视图的行的数据类型不正确;将数据类型从C改为L,就解决了这个问题。
[attach]6188[/attach]

我们花了更多的时间去挖掘这个报错的原因,我们希望通过本文节省了你的一些时间。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.