注册 登录
编程论坛 VFP论坛

VF报表打印预览及打印 怎么去掉小数点后的0的问题

dellkey 发布于 2023-07-20 22:14, 1769 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

报表数据只直接引用的表数据
怎么在报表里定义报表表达式,去掉小数点后面的0
望大神指点
27 回复
#2
sdta2023-07-20 22:52
8.000 变为8
8.002 变为8.2
5.000 变为5
是这个意思吗
#3
sdta2023-07-20 22:54
用TRANSFORM()试试
#4
dellkey2023-07-20 23:12
回复 2楼 sdta
是这样的
比如 8的时候  就显示8  不要显示8.000
     8.01的时候 显示8.01   不要显示8.010
就是说没有有效性后的0 不显示
TRANSFORM()这个我试过了  当8.001   显示为8.000999999999999
                         当8.002   显示为8.0020000000000001
                         当8.003   显示为8.003
                         当8.004   显示为8.004
                         当8.005   显示为8.0050000000000001
                         当8.006   显示为8.006
                         当8.007   显示为8.007
                         当8.008   显示为8.007999999999999
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-7-20 23:13编辑过]

#5
laowan0012023-07-21 10:12
xx=8.00002000
MESSAGEBOX(rtrim(TRANSFORM(xx),'0'))
#6
sdta2023-07-21 10:41
以下是引用laowan001在2023-7-21 10:12:36的发言:

xx=8.00002000
MESSAGEBOX(rtrim(TRANSFORM(xx),'0'))

楼主用的是VFP6.0
#7
dellkey2023-07-21 11:23
回复 6楼 sdta
是的VF6
按说明这个格式应该没为题,为啥有部分数值出来就不一样了呢
iif(最大流量>0,TRANSFORM(最大流量),"")
只有本站会员才能查看附件,请 登录
#8
sdta2023-07-21 11:26
盲人摸象?
#9
dellkey2023-07-21 11:45
回复 8楼 sdta
新手卡住啦
#10
dellkey2023-07-21 12:16
回复 5楼 laowan001
VF6
#11
kangss2023-07-21 12:47
VFP6用自定义函数

PARAMETERS m._char

m._char = IIF("." $ m._char, RTRIM(m._char, "0"), m._char)

IF RIGHT(m._char, 1) = "."        && 去掉最后一个“.”
    m._char = STRTRAN(m._char, ".", "")
ENDIF

RETURN m._char
#12
sdta2023-07-21 12:52
以下是引用kangss在2023-7-21 12:47:13的发言:

VFP6用自定义函数

PARAMETERS m._char

m._char = IIF("." $ m._char, RTRIM(m._char, "0"), m._char)

IF RIGHT(m._char, 1) = "."        && 去掉最后一个“.”
    m._char = STRTRAN(m._char, ".", "")
ENDIF

RETURN m._char

此处的RTRIM()应该是VFP9中的吧
#13
sdta2023-07-21 12:54
上传相关文件吧
#14
kangss2023-07-21 13:18
以下是引用sdta在2023-7-21 12:54:32的发言:

上传相关文件吧

只有本站会员才能查看附件,请 登录


VFP6支持
#15
sdta2023-07-21 13:24
m._char = IIF("." $ m._char, RTRIM(m._char, "0"), m._char)
#16
laowan0012023-07-21 15:03
做个函数吧
程序代码:
FUNCTION MRtrim
LPARAMETERS Pnum
LOCAL xchr,ii
xchr = TRANSFORM(Pnum)
IF AT('.',xchr)=0
    RETURN xchr
ENDIF

DO WHILE RIGHT(xchr,1)='0'
    xchr = LEFT(xchr,LEN(xchr)-1)
ENDFOR
IF RIGHT(xchr,1)='.'
    xchr = LEFT(xchr,LEN(xchr)-1)
ENDIF
RETURN xchr


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

#17
吹水佬2023-07-21 16:34
先要确定浮点数计算精度,如:
?str(8.002,20,18)
显示:8.002000000000001000
去掉后面的0:8.002000000000001
#18
穿云烈日2023-07-22 14:06
a=8.00002000
ALLTRIM(transform(a),'0')
以上这个方式去写应该是可以的
#19
dellkey2023-07-24 17:27
回复 18楼 穿云烈日
搞定了
换了VF9 直接就OK   VF6有BUG
感谢!
#20
dellkey2023-07-24 17:28
统一回复
搞定了
换了VF9 直接就OK   VF6有BUG
感谢!
#21
dellkey2023-07-25 07:14
以下是引用dellkey在2023-7-24 17:28:13的发言:

统一回复
搞定了
换了VF9 直接就OK   VF6有BUG
感谢!



又有新问题了
只有本站会员才能查看附件,请 登录

这个方法到是可以去除小数后的无效0
但是有个问题,当对象为0时,显示还是0,数值型勾选当前值为0是为空,无反应,还是显示0

还有就是VF9 生成的EXE文件  在WIN系统里 界面显示不是很友好呢
#22
dellkey2023-07-25 14:49
回复 17楼 吹水佬
IIF("."$TRANSFORM(最大流量),RTRIM(TRANSFORM(最大流量),"0"),TRANSFORM(最大流量))
此方法可以去除无效的0 但是当数值为0时  报表预览应该显示空  这个空什么实现呢
报表字段里的 格式表达式Z选中后  还是实现不了空
望大师解析
#23
laowan0012023-07-25 15:32
打印条件:最大流量>0
#24
csyx2023-07-25 18:51
以下是引用dellkey在2023-7-25 07:14:54的发言:
还有就是VF9 生成的EXE文件  在WIN系统里 界面显示不是很友好呢

怎么个不友好法?没用过 vf6,故有此一问
#25
dellkey2023-07-26 08:17
回复 23楼 laowan001
已搞定
#26
dellkey2023-07-26 08:19
回复 24楼 csyx
感觉VF9在WIN10系统中  做窗体  窗体  颜色不是很友好
是我没设置对?还是一来就有这个问题
#27
csyx2023-07-26 09:43
以下是引用dellkey在2023-7-26 08:19:10的发言:
感觉VF9在WIN10系统中  做窗体  窗体  颜色不是很友好
是我没设置对?还是一来就有这个问题

看得我一头雾水,能否截图展示一下哪方面的颜色不友好?
#28
hdx602023-07-28 11:31
LTRIM(TRIM(TRIM(STR(wtz.srsl,16,3),'0'),'.'))

这是我报表中字段中实际用的。
只有本站会员才能查看附件,请 登录
1