| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:如何防止数值上溢及解决方法
只看楼主 加入收藏
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
结帖率:90.14%
收藏
已结贴  问题点数:20 回复次数:9 
如何防止数值上溢及解决方法
请教各位大佬:如何防止此类问题发生及解决办法
假若
图片附件: 游客没有浏览图片的权限,请 登录注册
在运算repl all A with B-C出现了字段的值为**,
①可否用if endif来防止,若能代码如何写。
②在程序运行过程中出现这个提示后,若不确定表的字段,如何找出带有*值的字段?
搜索更多相关主题的帖子: 数值 字段 出现 方法 防止 
2023-09-07 20:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:20 
repl all A with iif(B-C>=1000,999,b-c)

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


坚守VFP最后的阵地
2023-09-07 22:32
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
回复 2楼 sdta
感谢感谢感谢,试用了解决了此类情况的出现。再次感谢!
2023-09-08 18:46
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1094
专家分:2693
注 册:2015-12-30
收藏
得分:0 
这样运行是不报错了,但同时也掩盖了一些错误数据
用ON error试试


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

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

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

试试转字符串判断
LEFT(TRANSFORM(字段),1)=="*"
2023-09-09 14:54
快速回复:如何防止数值上溢及解决方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041592 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved