hur.cn - 华软网

 热门搜索

自以为pb很熟的我解决不掉这样简单的问题!!!

  作者:未知    来源:网络    更新时间:2018/2/6
我用pb好几年了,自以为很熟,可这样一个简单的问题解决不了。

数据窗口某一字段为numeric(18,2),数据显示两位小数,比如50显示为50.00。因为是作打印,我想这样显示,如果小数位为0,则不显示(50.00显示为50),如有小数则显示(50.5显示为50.5),我在数据窗口的format规则中这样表示:string("字段名","##.#0.0") .测试了几次,还算正常,可客户用的时候,出现天大笑话:90显示为99,100显示为110。问题很明显,如第二位为零,则用第一位替代。

恳请各位兄弟帮忙,不胜感激!!!

------华软网友回答------
如果仅为了打印,那就加个空的string(19)字段,写个函数把numeric的值按要求写入到string中。问题解决。
------华软网友回复------
帮顶
------华软网友回复------
学习
------华软网友回复------
修改数据窗口的source,将该字段类型改成number.

再在该列的属性中将format设成[General]
------华软网友回复------
使用计算域吧,假如字段为a,则计算域为:
if(long(a)*10=a*10,string(long(a)),if(long(a)*100=a*100,string(round(a,1)),string(a)))
------华软网友回复------
string("字段名","##.#0.0")你这句有问题吧
试改成string("字段名","###0.#")
------华软网友回复------
在字段的format寫
if (ceiling( name) = int (name),'#,###','#,###.##')
------华软网友回复------
你可以写一个计算列,假设原来字段名叫aaa则计算列如下写
if(aaa*100 = int(aaa)*100 ,string(int(aaa)),if(aaa*10 = int(aaa*10),string(aaa,"###.0"),string(aaa))),刚刚测试通过
------华软网友回复------
这样写好像也不行,始终会有一个点。
要不判断小数点后面的位数,如果有就string("字段名","###0.#"),没有就string("字段名","###0")

------华软网友回复------
楼主,还是我的办法最稳妥了,不管你有几位小数都没有问题。
------华软网友回复------
前两天也搞了这个
if (  round( 字段  ,0 ) = 字段 ,'0' , '#.######')
------华软网友回复------
帮顶得了
------华软网友回复------
format中直接写0就行,这么费劲
------华软网友回复------
显示格式改成[general],就显示为50.5了,没有小数显示为50
------华软网友回复------
单纯为了打印,解决这个问题就很好办:
写一个全局函数来把你的这个数值处理成字符串。
在数据窗口中采用计算列来处理就好了。
------华软网友回复------
如果打印的东西为金额,那么显示格式应该为#0.00,而且还可以在显示属性中设置if(列名 = 0 ,1,0) 这样在显示的时候如果金额为0则不会显示任何东西
------华软网友回复------
不过按你说的数据格式为18,2的话,直接使用[general]就可以了啊,应该不用使用任何格式
------华软网友回复------
在format中这样设置:
0.00;0.00;_;_
其中_用空格表示,因为在这打上空格你会看不清楚
这个格式的意思是说:
正数用0.00格式,负数用0.00格式,零值用空格显示,null值用空格显示

------华软网友回复------
up一下
------华软网友回复------
呵呵,有趣
------华软网友回复------
很简单,在format中:

0值显示: if(列名 = int(列名),'##0','##0.##')
0值不显示:if(列名 = int(列名),'###','###.##')



------华软网友回复------
忙着毕业
好久没来
多谢各位各位

 iflynet(iflynet) 的方法最好
其他兄弟可能也可以,但没有每个都试了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。