求助: COGNOS10 怎么实现人民币大写?

请问坛子的高手们,
  COGNOS10 怎么支持人民币大写的功能啊?
比如 一笔金额 32.5 元,  要展示成  叁拾贰圆伍角

要能支持的数据最大 为1000亿 人民币的转换啊!!
参与40

37同行回答

zhengyi1943zhengyi1943  CEO , 南京正一信息科技有限公司
这个需求是经常遇到的需求,也并不难实现。使用JavaScript可以很好的实现这种转换。我在网上找了一个转换的代码,这段代码只支持10亿之内的转换,并且不支持负数。我稍作修改,使其支持千亿之内的转换,并且可以支持负数。以下是实现的效果图:实现方式见下图:其中,第一部分的代码为: fu...显示全部
这个需求是经常遇到的需求,也并不难实现。使用JavaScript可以很好的实现这种转换。
我在网上找了一个转换的代码,这段代码只支持10亿之内的转换,并且不支持负数。我稍作修改,使其支持千亿之内的转换,并且可以支持负数。
以下是实现的效果图:

金额大小写转换2.png



实现方式见下图:

其中,第一部分的代码为:
 
第二部分的代码为:
'
已付金额总额(大写):
'

另外,
回复 11# iceacman
转我的帖子说明出处噻~~~~

共同学习,共同提高!!收起
系统集成 · 2014-05-13
浏览846
ed4wined4win  其它 , 某公司
数字转中文大写,好厉害显示全部
数字转中文大写,好厉害收起
互联网服务 · 2014-06-24
浏览1680
housheng33housheng33  软件开发工程师 , 农行软件开发中心
变成字符串,再N个REPLACE,哈哈显示全部
变成字符串,再N个REPLACE,哈哈收起
互联网服务 · 2014-05-26
浏览1729
iceacmaniceacman  学生 , stagiaire
回复 30# 369873158     这个对于实时聚合数据项生成的报表不适用吧显示全部
回复 30# 369873158


    这个对于实时聚合数据项生成的报表不适用吧收起
互联网服务 · 2014-05-21
浏览1677
执笔诉唯一执笔诉唯一  其它 , A-F
都好厉害显示全部
都好厉害收起
IT其它 · 2014-05-20
浏览1690
xiexingxinxiexingxin  数据库开发工程师 , 文思
回复 31# sealink     确实啊! 我也发现了, 导出PDF 和EXCEL 都不能展现大写人民币了! 我们的主要需求就是打印PFD,给客户啊!!! 真折腾人啊!!!!!显示全部
回复 31# sealink


    确实啊! 我也发现了, 导出PDF 和EXCEL 都不能展现大写人民币了! 我们的主要需求就是打印PFD,给客户啊!!! 真折腾人啊!!!!!收起
软件开发 · 2014-05-19
浏览1684
xiexingxinxiexingxin  数据库开发工程师 , 文思
回复 32# 贝克汉姆     我们用的数据库就是不支持自定义函数! 太垃圾了! IBM的Netzza数据库!!! 所以搞出这么多问题来! 奶奶的! 恨死这个数据库了!!!显示全部
回复 32# 贝克汉姆


    我们用的数据库就是不支持自定义函数! 太垃圾了! IBM的Netzza数据库!!! 所以搞出这么多问题来! 奶奶的! 恨死这个数据库了!!!收起
软件开发 · 2014-05-19
浏览1661
贝克汉姆贝克汉姆  软件开发工程师 , IBM
数据库里写个函数实现,输入一个数字即可输出大写中文数字显示全部
数据库里写个函数实现,输入一个数字即可输出大写中文数字收起
互联网服务 · 2014-05-19
浏览1717
sealinksealink  技术总监 , sealink.com
js实现只能解决html上的显示,但是导出pdf和Excel是不行的,所以最好是在etl的时候就转换好,也可以在模型 ...369873158 发表于 2014-5-18 20:22 嚓,这就比较麻烦了,呵呵显示全部
js实现只能解决html上的显示,但是导出pdf和Excel是不行的,所以最好是在etl的时候就转换好,也可以在模型 ...
369873158 发表于 2014-5-18 20:22



嚓,这就比较麻烦了,呵呵收起
银行 · 2014-05-19
浏览1660
369873158369873158  技术经理 , Infosys
js实现只能解决html上的显示,但是导出pdf和Excel是不行的,所以最好是在etl的时候就转换好,也可以在模型中处理,但是效率就比较差,我在Oracle中写了下面的SQL,可以实现转换--使用的oracle主要函数 --instr用于搜索 --length取长度 --substr截取字符串 --replace替换 with rmbje as (s...显示全部
js实现只能解决html上的显示,但是导出pdf和Excel是不行的,所以最好是在etl的时候就转换好,也可以在模型中处理,但是效率就比较差,我在Oracle中写了下面的SQL,可以实现转换
--使用的oracle主要函数
--instr用于搜索
--length取长度
--substr截取字符串
--replace替换
with rmbje as (select to_char(字段名) as rmb from 表名),
sburmb as (select rmb,instr(rmb,'.') as xsd,case instr(rmb,'.') when 0 then rmb else substr(rmb,1,instr(rmb,'.')-1) end as zsw,case instr(rmb,'.') when 0 then '' else substr(rmb,instr(rmb,'.')+1,2) end as xsw from rmbje),
zhrmb as (select a.*,length(a.zsw) as zswws from sburmb a),
jqrmb as (select rmb,b.zswws,substr(b.zsw,1,1) w1,substr(b.zsw,2,1) w2,substr(b.zsw,3,1) w3,substr(b.zsw,4,1) w4,substr(b.zsw,5,1) w5,substr(b.zsw,6,1) w6,substr(b.zsw,7,1) w7,
substr(b.zsw,8,1) w8,substr(b.zsw,9,1) w9,substr(b.zsw,10,1) w10,substr(b.zsw,11,1) w11,substr(b.zsw,12,1) w12,substr(b.xsw,1,1) x1,substr(b.xsw,2,1) x2 from zhrmb b),
zh1 as (select a.*, 
case w1 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z1,
case w2 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z2,
case w3 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z3,
case w4 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z4,
case w5 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z5,
case w6 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z6,
case w7 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z7,
case w8 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z8,
case w9 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z9,
case w10 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z10,
case w11 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z11,
case w12 when '0' then '零' when '1' then '壹' when '2' then '贰' when '3' then '叁' when '4' then '肆' when '5' then '伍' when '6' then '陆' when '7' then '柒' when '8' then '捌' when '9' then '玖' end z12,
case x1 when '0' then '零角' when '1' then '壹角' when '2' then '贰角' when '3' then '叁角' when '4' then '肆角' when '5' then '伍角' when '6' then '陆角' when '7' then '柒角' when '8' then '捌角' when '9' then '玖角' end xs1,
case x2 when '0' then '零分' when '1' then '壹分' when '2' then '贰分' when '3' then '叁分' when '4' then '肆分' when '5' then '伍分' when '6' then '陆分' when '7' then '柒分' when '8' then '捌分' when '9' then '玖分' end xs2
from jqrmb a),
zh2 as (select 
rmb,
case zswws
when 1 then z1||'圆'
when 2 then z1||(case when w1='0' then '' else '拾' end)||z2||'圆'
when 3 then z1||(case when w1='0' then '' else '佰' end)||z2||(case when w2='0' then '' else '拾' end)||z3||'圆'
when 4 then z1||(case when w1='0' then '' else '仟' end)||z2||(case when w2='0' then '' else '佰' end)||z3||(case when w3='0' then '' else '拾' end)||z4||'圆'
when 5 then z1||'萬'||z2||(case when w2='0' then '' else '仟' end)||z3||(case when w3='0' then '' else '佰' end)||z4||(case when w4='0' then '' else '拾' end)||z5||'圆'
when 6 then z1||(case when w1='0' then '' else '拾' end)||z2||'萬'||z3||(case when w3='0' then '' else '仟' end)||z4||(case when w4='0' then '' else '佰' end)||z5||(case when w5='0' then '' else '拾' end)||z6||'圆'
when 7 then z1||(case when w1='0' then '' else '佰' end)||z2||(case when w2='0' then '' else '拾' end)||z3||'萬'||z4||(case when w4='0' then '' else '仟' end)||z5||(case when w5='0' then '' else '佰' end)||z6||(case when w6='0' then '' else '拾' end)||z7||'圆'
when 8 then z1||(case when w1='0' then '' else '仟' end)||z2||(case when w2='0' then '' else '佰' end)||z3||(case when w3='0' then '' else '拾' end)||z4||'萬'||z5||(case when w5='0' then '' else '仟' end)||z6||(case when w6='0' then '' else '佰' end)||z7||(case when w7='0' then '' else '拾' end)||z8||'圆'
when 9 then z1||'亿'||z2||(case when w2='0' then '' else '仟' end)||z3||(case when w3='0' then '' else '佰' end)||z4||(case when w4='0' then '' else '拾' end)||z5||'萬'||z6||(case when w6='0' then '' else '仟' end)||z7||(case when w7='0' then '' else '佰' end)||z8||(case when w8='0' then '' else '拾' end)||z9||'圆'
when 10 then z1||(case when w1='0' then '' else '拾' end)||z2||'亿'||z3||(case when w3='0' then '' else '仟' end)||z4||(case when w4='0' then '' else '佰' end)||z5||(case when w5='0' then '' else '拾' end)||z6||'萬'||z7||(case when w7='0' then '' else '仟' end)||z8||(case when w8='0' then '' else '佰' end)||z9||(case when w9='0' then '' else '拾' end)||z10||'圆'
when 11 then z1||(case when w1='0' then '' else '佰' end)||z2||(case when w2='0' then '' else '拾' end)||z3||'亿'||z4||(case when w4='0' then '' else '仟' end)||z5||(case when w5='0' then '' else '佰' end)||z6||(case when w6='0' then '' else '拾' end)||z7||'萬'||z8||(case when w8='0' then '' else '仟' end)||z9||(case when w9='0' then '' else '佰' end)||z10||(case when w10='0' then '' else '拾' end)||z11||'圆'
when 12 then z1||(case when w1='0' then '' else '仟' end)||z2||(case when w2='0' then '' else '佰' end)||z3||(case when w3='0' then '' else '拾' end)||z4||'亿'||z5||(case when w5='0' then '' else '仟' end)||z6||(case when w6='0' then '' else '佰' end)||z7||(case when w7='0' then '' else '拾' end)||z8||'萬'||z9||(case when w9='0' then '' else '仟' end)||z10||(case when w10='0' then '' else '佰' end)||z11||(case when w11='0' then '' else '拾' end)||z12||'圆'
end zs,
xs1||xs2 xs
from zh1),
zh3 as (select rmb,replace(replace(replace(replace(replace(replace(zs,'零零','零'),'零零','零'),'零亿','亿'),'零萬','萬'),'零圆','圆'),'亿萬','亿')||replace(replace(replace(xs,'零分','零'),'零角','零'),'零零','') rmbdx from zh2),
zh4 as (select rmb,case when rmbdx like '%圆' then rmbdx||'整' when rmbdx like '零%' then substr(rmbdx,2,length(rmbdx)-1) else rmbdx end dxrmb from zh3)
select * from zh4
收起
互联网服务 · 2014-05-18
浏览1700

提问者

xiexingxin
数据库开发工程师文思

相关问题

相关资料

问题状态

  • 发布时间:2014-04-29
  • 关注会员:2 人
  • 问题浏览:12983
  • 最近回答:2014-06-24
  • X社区推广