注册 登录
编程论坛 VFP论坛

如何防止数值上溢及解决方法

tjdeming 发布于 2023-09-07 20:44, 481 次点击
请教各位大佬:如何防止此类问题发生及解决办法
假若
只有本站会员才能查看附件,请 登录
在运算repl all A with B-C出现了字段的值为**,
①可否用if endif来防止,若能代码如何写。
②在程序运行过程中出现这个提示后,若不确定表的字段,如何找出带有*值的字段?
9 回复
#2
sdta2023-09-07 22:32
repl all A with iif(B-C>=1000,999,b-c)

[此贴子已经被作者于2023-9-7 22:33编辑过]

#3
tjdeming2023-09-08 18:46
回复 2楼 sdta
感谢感谢感谢,试用了解决了此类情况的出现。再次感谢!
#4
laowan0012023-09-08 18:54
这样运行是不报错了,但同时也掩盖了一些错误数据
用ON error试试


[此贴子已经被作者于2023-9-8 18:55编辑过]

#5
tjdeming2023-09-08 21:52
回复 4楼 laowan001
谢谢你,对的,那我就单独查询一下字段值为99的记录  通过brow for 字段=99来查询。
#6
laowan0012023-09-08 21:57
repl all A with B-C for B-C<1000
不知道你的数据特征,按顶楼内容猜想可以用上面的句子避开错误,但那些>=1000的记录总要有个交待,所以应该另行处理一下
#7
tjdeming2023-09-09 09:40
回复 6楼 laowan001
ABC字段宽度均为n(2),字段的值最大为15,b是最大数15,c是发生数最大数也是15,a最后的数据是0,发生b-c出现了负数,所以出现**符号
#8
吹水佬2023-09-09 11:56
1、AFIELDS()获取表结构信息
2、根据字段类型、宽度、小数位数等进行判断就可以防止造成数据溢出或缺失。
#9
tjdeming2023-09-09 12:41
回复 8楼 吹水佬
谢谢你!时间长了,忘了程序代码,运行中不知哪个字段超出了字段宽度,本来是想通过对数据表中数值型字段检查的,
IF TYPE(字段)="N"
   BROW FOR "*"STR(字段)
endif
没有成功。
#10
吹水佬2023-09-09 14:54
以下是引用tjdeming在2023-9-9 12:41:45的发言:

谢谢你!时间长了,忘了程序代码,运行中不知哪个字段超出了字段宽度,本来是想通过对数据表中数值型字段检查的,
IF TYPE(字段)="N"
   BROW FOR "*"STR(字段)
endif
没有成功。

试试转字符串判断
LEFT(TRANSFORM(字段),1)=="*"
1