VB6.0 中MSHFlexGrid控件求解

MSHFlexGrid与Adodc连接好后,加载数据表格,浮点类型的数据为什么出现很多位小数,比如我原数据文件中某个值是2.9,在MSHFlexGrid中显示是2.8999999999999999
请问如何更改设置,使得MSHFlexGrid中显示原本的数据。

第1个回答  2013-05-04
把Adodc的select 语句改下,在查询的时候限制一下小数位数,我也在用这个报表控件,出现和你一样的问题,数据库中用numeric数据类型好些,这个数据类型存储的是真实值而不是近似值。我都是自己写代码填表格的,格式比较好控制,几个循环就搞进去了追问

请问select具体如何限制小数位数,我是新手,请多赐教!

追答

用这个语句
select cast(字段名 as numeric(18,2)) from [表名]
意思是把查询的字段数据类型显示为numeric(18,2),18个有效数字位,2位小数位
我在SQL Server 上这么用没问题

追问

我试了,Adodc1.RecordSource = "select cast(出厂数据2 as numeric(18,2)) from [Sheet1$]"
Adodc1.Refresh
这样会报错。

追答

我在SQL Server 上这么用没问题。
不知道你用的什么数据库,如果是其他的库,可能会有问题

第2个回答  2013-05-03
用代码,在代码中用format函数设置每个单元格的格式。
用DBGRID控件就没有这个问题。追问

dbgrid不能绑定到adodc里啊,他只能和data绑定
可是data又不能和excel连接,
我需要连接excel,所以只能用adodc,然后被迫又用MSHFlexGrid
请问高手有什么办法用data和excel2003连接?

追答

dbgrid能绑定到adodc

追问

哎,不知道我的怎么不行,在dbgrid的datasource没有下拉选择项adodc1,一点这个框就报错说“没有找到与此兼容的数据源,请添加一个固有的数据控件或者远程数据控件到窗体"

追答

adodc1中没有设置记录源。

本回答被提问者采纳
第3个回答  2013-05-03
最好不要绑定,用代码添加的话可以用FORMAT函数处理一下。追问

这方法试过了,数据量太大,而且我要经常刷新MSHFlexGrid里的数据,所以将每个单元格数据用FORMAT处理,不太现实。

追答

用DATAGRID吧,这个速度很快