grid列显示小数位最后为0不要显示出来

tj19982008 2013-02-04 10:32:07
例如:vfp grid第2列的2.030100显示为2.0301, 0.1020030显示为0.102003,请问如何处理?
...全文
463 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tj19982008 2013-02-05
  • 打赏
  • 举报
回复
高手.知道问题所在了.原来是column引用错误
十豆三 2013-02-05
  • 打赏
  • 举报
回复
vfp6.0,在 Grid 的 Init 事件加代码:
This.Columns(3).ControlSource="Transform(nNum2)"
效果:


vfp9.0,在 Grid 的 Init 事件加代码:
This.Columns(3).ControlSource=[Alltrim(Alltrim(Alltrim(Str(nNum2,16,7),1,"0"),1,"."))]
*或
*This.Columns(3).ControlSource="Iif(Int(nNum2)=nNum2,Transform(nNum2),Rtrim(Transform(nNum2),'0'))"
效果:
sdta2012 2013-02-04
  • 打赏
  • 举报
回复
* 函数名称:SCD0
* 函数功能:删除数值型数据中,小数点后尾随的0,适用VFP的任何版本
* 调用方法:SCD0(0.100900)
FUNCTION SCD0
PARAMETERS NUM
IF PCOUNT()=0
   RETURN
ENDIF
CSTR=TRANSFORM(NUM)
FOR i=1 TO LEN(JUSTEXT(CSTR))
    CSTR=IIF(RIGHT(CSTR,1)=[0],SUBSTR(CSTR,1,LEN(CSTR)-1),CSTR)
ENDFOR
RETURN CSTR
将上面的代码添加到表单的自定义方法中,然后再调用
tj19982008 2013-02-04
  • 打赏
  • 举报
回复
请在grid列中显示测试
tj19982008 2013-02-04
  • 打赏
  • 举报
回复
多谢! 我试了下,也是我刚才说的效果,不行,你可实际测试下. 0.500显示为1
十豆三 2013-02-04
  • 打赏
  • 举报
回复
vfp9.0 以下你试试这个:
定义一个自定义函数,比如新建一个.prg文件(比如:changeShow.prg),写入以下代码:
PROCEDURE conversion
LPARAMETERS nDecimal
LOCAL lcString
lcString = ALLTRIM(STR(nDecimal, 13, 6))
lcString = STRTRAN(lcString, "0", " ")
lcString = TRIM(lcString)
lcString = STRTRAN(lcString, " ", "0")
IF RIGHT(lcString, 1) == "."
lcString = LEFT(lcString, LEN(lcString) - 1)
ENDIF
RETURN lcString
ENDPROC
然后可以在表单的INIT事件中: SET PROCEDURE TO changeShow.prg
最后设置表格列的ControlSource属性为:[conversion(字段名)]
十豆三 2013-02-04
  • 打赏
  • 举报
回复
十豆三 2013-02-04
  • 打赏
  • 举报
回复
我的方法只适合 VFP9.0
tj19982008 2013-02-04
  • 打赏
  • 举报
回复
多谢.不过,我需要的是vfp8或以下版本的显示。按Transform(字段名)或用程序处理显示,都不正常显示,四舍五入处理了。例如:0.50,正确应显示为0.5,但却显示为1;0.0却显示为1,这个更不明白。不知道是否vfp的debug
十豆三 2013-02-04
  • 打赏
  • 举报
回复
vfp9.0 把 Grid 这列的 ControlSource 设为:Iif(Int(字段名)=字段名,Transform(字段名),Rtrim(Transform(字段名),'0'))

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧