起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 308|回复: 13

【结】[问题]数据精度问题**

[复制链接]
发表于 2008-5-27 18:09:31 | 显示全部楼层 |阅读模式
lQuery:=TQuery.Create(nil);
  lQuery.ConnectionString:=dsbWHPlace.dataSet.ConnectionString;
  lQuery.Close;
  lQuery.CommandText:='Select round(aa,10) as a from SJB1 where GJZ='1';
  lQuery.Open;

lQuery:=TQuery.Create(nil);
  lQuery.ConnectionString:=dsbWHPlace.dataSet.ConnectionString;
  lQuery.Close;
  lQuery.CommandText:='Select aa as a from SJB1 where GJZ='1';
  lQuery.Open;
2个取数据时,前面那种报错,Oracel数据库,任意新建表,新建字段aa,数字型,长度15,小数位数12.
请问是什么问题?
报错:FMTBcd Scale no match: 10(Def:8)
回复

使用道具 举报

发表于 2008-5-28 08:52:38 | 显示全部楼层
不知道楼主的代码是直接在帖子上写的,还是从功能或者信息中粘贴出来的,首先
lQuery.CommandText:='Select aa as a from SJB1 where GJZ='1';
这句话就不对
要么
lQuery.CommandText:='Select aa as a from SJB1 where GJZ=''1''';
要么
lQuery.CommandText:='Select aa as a from SJB1 where GJZ=1';
不能可能是你那样的写法,你那样编译肯定报错,

我在MSSLQ2000上测试好的,请问,你是Oracle几的,还有直接在数据库上执行这个SQL正常吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 09:47:26 | 显示全部楼层
帖子中的SQL语句我是直接贴的PLSQL中的,在平台中写的是你说的那样。
在数据库上执行是正确的,你要在平台里面测试才能出现,2809版本,Oracle9i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 10:00:23 | 显示全部楼层

11

注意看下图,round(aa,9),但结果是8位
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 10:01:38 | 显示全部楼层

111

注意看下图,round(aa,9),但结果是8位

noname.jpg

755.39 KB, 下载次数: 173

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 10:05:42 | 显示全部楼层

22

round(aa,10),报错

noname.gif

850.33 KB, 下载次数: 166

回复 支持 反对

使用道具 举报

发表于 2008-5-28 10:24:29 | 显示全部楼层
好,我们找个环境测试看看,然后把结果反馈上来
回复 支持 反对

使用道具 举报

发表于 2008-5-28 11:41:23 | 显示全部楼层
问题已经再现,正在找原因
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-29 09:22:57 | 显示全部楼层
找到原因了吗?
回复 支持 反对

使用道具 举报

发表于 2008-5-29 09:36:22 | 显示全部楼层
这个是oracle的jdbc驱动的bug!当下的处理办法只能是建一个计算列,用Delphi的roundTo来自己执行那个计算 roundto(N, p),就是它的数字,P为负数时表示小数位数儿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 11:17 , Processed in 0.053546 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表