Office中国论坛/Access中国论坛

标题: 如何解决数据溢出问题? [打印本页]

作者: yqi    时间: 2006-11-9 00:38
标题: 如何解决数据溢出问题?



请问,如何解决数据溢出问题?谢谢

[attach]21404[/attach]


[此贴子已经被作者于2006-11-8 16:38:36编辑过]


作者: yqi    时间: 2006-11-9 01:13
急啊?各位帮帮忙,看看啊?谢谢啦
作者: sgrshh29    时间: 2006-11-9 01:19
如果救急,这样写:
i=29*29
i=i*63
i=i*10000
分开来乘,不要连乘。具体原因还没搞清楚。

作者: fan0217    时间: 2006-11-9 02:18
Dim i As Long
i = CLng(27) * 27 * 60 * 100
作者: andymark    时间: 2006-11-9 02:56
    测试了下,可能与数据类型有关,ACCESS一般情况下默认的类型是Integer,当几个Integer数相乘,其结果也是Integer,而Integer的取值范围是:-32,768 至 32,767。当结果的值超出Integer的取值范围时就会出现溢出的情况,还有一种奇怪的事情:

     32767*10    其结果会溢出

     32768*10    能正常计算结果

    由此可以看出ACCESS首先把在-32,768 至 32,767-32768 之间的数看成Integer类型,而大于32767的数看成另一种类型

   以上只上个人猜测,有待验证
作者: andymark    时间: 2006-11-9 03:07
  解决方法,先把值同给一个变量

   a = 27
   b = 30
   c = 25
   d = 100
   i = a * b * c * d
作者: fan0217    时间: 2006-11-9 18:36
系统给出的帮助:

溢出(错误 6)



<OBJECT><ARAM><ARAM><ARAM></OBJECT>

当赋值超出目标的限制时,就会发生溢出。此错误有以下的原因和解决方法:



详细信息,可选取有问题的项目,并按下 F1 (在Windows中)或HELP(在Macintosh中)键。
作者: fan0217    时间: 2006-11-9 18:43
以下是引用andymark在2006-11-8 18:56:00的发言:


    测试了下,可能与数据类型有关,ACCESS一般情况下默认的类型是Integer,当几个Integer数相乘,其结果也是Integer,而Integer的取值范围是:-32,768 至 32,767。当结果的值超出Integer的取值范围时就会出现溢出的情况,还有一种奇怪的事情:

     32767*10    其结果会溢出

     32768*10    能正常计算结果

    由此可以看出ACCESS首先把在-32,768 至 32,767-32768 之间的数看成Integer类型,而大于32767的数看成另一种类型

   以上只上个人猜测,有待验证

CLng(32767) * 10
作者: 乌の甲乌    时间: 2006-11-9 23:36
好啊,看看




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3