hur.cn - 华软网

 热门搜索

还是显示格式——难倒老夫

  作者:未知    来源:网络    更新时间:2018/3/3
打印用的数据窗口某列为numeric(18,2),
为了让80.00显示为80,format设为 if(  score_score_score    = int(   score_score_score  ),'###','###.##')
但用户又提出
打印要显示良好之类,比如字段值score_score_score>=80.00时,显示优秀
当然可以通过更改数据库的相应字段属性,在编程实现,但系统基本已定,那样更改实在不可能
想到,如果用户输入的字段值为-1,就显示优秀,输入为-2显示良好,
于是score_score_score用了一个DropdownDW,
问题是,用了DropdownDW后,format设定格式不起作用了

难倒老夫了!


------华软网友回答------
-1,就显示优秀,输入为-2显示良好
====================
是在说score_score_score这个字段吗? 究竟这个字段是显示数字还是字符?
------华软网友回复------
这个字段当然是数字类型了
但显示的时候既有数字,又有字符
比如:
科目 成绩
语文  60.5
体育  良好
------华软网友回复------
用case 写表达式就行了
case score_score_score when is = int(score_score_score) then '###' when is= -1 then '优秀' when is= -2 then '良好' else '###'

大概是这样了,你测试一下吧
------华软网友回复------
呵呵,直接用sql是一种方法,也可以用伪列+ddlb的
------华软网友回复------
不能加计算列吗?if (ColumnName<80 ,"优秀",if...
------华软网友回复------
多谢楼上三位

j9dai(DoItNow), lzheng2001(1加1=0)的意思明白
只是这样的话,优秀,良好之类就固定了,假如以后用户还想加个优良怎么办,我不可能在format内容吧


“也可以用伪列+ddlb的”?
可以吗?
这可是打印报表啊

把问题再描述清除一些:
打印一报表,里面数据较多,用composite数据窗口,例如本科的毕业生成绩表
子窗口显示每学期成绩
成绩字段为numeric(1,2),
假如有成绩56.00,89.50,-1(良好)
显示格式要求为:
语文 56
数学 89.5
体育 良好

快走了,总想善始善终啊
何谓兄弟帮帮忙!
------华软网友回复------
忙晕了,话都不会说了
我不可能在format内容吧—>>我不可能在format里再改吧
何谓兄弟帮帮忙!—>>各位兄弟帮帮忙!

补充:-1——良好
      -2——优秀
这种对应关系我想放在一个表中,让用户自己设定

------华软网友回复------
用COMPUTEFIELD即可!
CASE(xx when ...then... when ...then ... else...)
------华软网友回复------
然后在FORMAT中定格式即可...
------华软网友回复------
楼上的,人家是不想用硬代码啦!

要这样实现的话,比较麻烦了,用全局函数吧
------华软网友回复------
不用硬代码,直接这样实现格式的确很难控制。
其实他们自身就是比较矛盾,到底按什么样的格式显示呢!所以楼主可以和用户沟通一下,可以直接把所有显示数据的地方都显示两位。

------华软网友回复------
这样是否可行:
使用下拉数据窗口.(可用外部数据源,也可关联一个表,这样以后不用改代码.)
下拉值为:所有小于零的情况:比如 -1:优秀;-2:良好;.....
大于零的情况,下拉数据窗口中不存在值,则会直接显示原始值.
同时设置字段的FORMAT
------华软网友回复------
这个方法可能可以:
使用下拉数据窗口.(可用外部数据源,也可关联一个表,这样以后不用改代码.)
下拉值为:所有小于零的情况:比如 -1:优秀;-2:良好;.....
大于零的情况,下拉数据窗口中不存在值,则会直接显示原始值.
并隐藏该字段
建一计算字段:
if ( score_score_score > 10, string(  score_score_score ,'###.00' ),lookUpDisplay (  score_score_score ) )
------华软网友回复------
楼上的说得不错,建一个dddw,反正没有的显示原值嘛!另外可以改一下sql ,将分数转成string;
convert(varchar(30),case when fs = convert(int,fs) then convert(int,fs) else fs end )      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。