壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4814|回复: 21

报表中能实现数字转换成英语吗,急。。。。

[复制链接]
发表于 2007/5/22 14:39:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
请问各位有经验人事:
在报表开发中能实现将数字转换成英文吗??
如:1500  转成:one thousand and five hundred

[ 本帖最后由 meachal 于 2007-5-22 14:52 编辑 ]
 楼主| 发表于 2007/5/22 15:42:08 | 显示全部楼层
自已顶一下,请版主帮忙,谢谢
发表于 2007/5/22 15:49:43 | 显示全部楼层
可以的

select to_char(to_date('1500','J'),'Jsp') from dual
发表于 2007/5/22 16:47:18 | 显示全部楼层
刚刚知道 了
赫赫
发表于 2007/5/22 16:54:47 | 显示全部楼层
寫個函數,我們這邊寫的,目前時轉換了15位
发表于 2007/5/22 16:57:22 | 显示全部楼层
上面的只能用7位整數,而且還不帶允許小數位,我們採取的方法時自己寫函數來轉的
 楼主| 发表于 2007/5/22 18:58:39 | 显示全部楼层
能否麻烦“jiangkunko ”把这个函数共享给我呀
现在正急需要用,可以发到我的邮箱:kch@bbkav.com
MSN:keconghua@hotmail.com非常感谢!!


to_char(to_date('5373484','J'),'Jsp')这种转英文方式,最大数为:5373484,超过就不行
其实我是想这样实现,我做报表的,有一个统计列,比如取到的值为:999999999
再用一个占位列来把这个数翻译成英文,谢谢帮忙
如果有什么好的方法,麻烦转发给我的邮件或MSN联系,谢谢你们!

[ 本帖最后由 meachal 于 2007-5-22 19:40 编辑 ]
发表于 2007/5/22 20:03:44 | 显示全部楼层
我想知道为什么可以这样用
原理是什么
还有大家是怎么处理的
有什么好方法都共享一下阿
 楼主| 发表于 2007/5/23 09:15:05 | 显示全部楼层
有没有人知道呀,急出汗来了,呵呵。。。。。。。。。。。
发表于 2007/5/23 12:48:23 | 显示全部楼层
你这个可能还是要自己写个函数的
发表于 2007/5/23 19:38:34 | 显示全部楼层
这个要自己写吧,很简单的,代码不长,我这个写的是金额转换用的,判别标志是里面的格式里面的金额间隔符号(,),你那完全是数字,不能套用,你还是自己写歌吧
 楼主| 发表于 2007/5/24 14:32:43 | 显示全部楼层
create or replace function tcos_spell_number( p_number in number )
return varchar2
-- CopyRight Toshiba Shenzhen Han Fangquan 2002.04.10
as
type myArray is table of varchar2(255);
l_str myArray := myArray( '',
' Thousand ', ' Million ',
' Billion ', ' Trillion ',
' Quadrillion ', ' Quintillion ',
' Sextillion ', ' Septillion ',
' Octillion ', ' Nonillion ',
' Decillion ', ' Undecillion ',
' Duodecillion ' );
l_num varchar2(50) default trunc( p_number );
h_number number;
l_return varchar2(4000);
begin
h_number := round(p_number*100)/100;
for i in 1 .. l_str.count
loop
exit when l_num is null;

if ( substr(l_num, length(l_num)-2, 3) <> 0 )
then
l_return := to_char(
to_date(
substr(l_num, length(l_num)-2, 3),
'J' ),
'Jsp' ) || l_str(i) || l_return;
end if;
l_num := substr( l_num, 1, length(l_num)-3 );
end loop;
-- add Dollars string. Han Fangquan
-- Han Fangquan modified begin
if l_return is null then l_return := 'Zero' ;
end if;
-- p_number >1 then add Dollars else Add Dollar.
if trunc( h_number )>1
then
l_return := l_return || ' Dollars ';
else
l_return := l_return || ' Dollar ';
end if;

if to_char( h_number ) like '%.%'
then
l_num := substr(h_number,instr(h_number,'.')+1);
if length(l_num)=1
then
l_num := l_num || '0';
end if;
if l_num > 0
then
if l_num > 1
then
l_return := l_return ||'And '||l_num||' Cents ';
else l_return := l_return ||'And '||l_num||' Cent ';
end if;
end if;
end if;
-- end (Han Fangquan modified )
/*
-- beginning of section added to include decimal places:
if to_char( h_number ) like '%.%'
then
l_num := substr( h_number, instr( h_number, '.' )+1 );
if l_num > 0
then
l_return := l_return || ' point';
for i in 1 .. length (l_num)
loop
exit when l_num is null;
if substr( l_num, 1, 1 ) = '0'
then
l_return := l_return || ' zero';
else
l_return := l_return
|| ' '
|| to_char(
to_date(
substr( l_num, 1, 1),
'j' ),
'jsp' );
end if;
l_num := substr( l_num, 2 );
end loop;
end if;
end if;
*/

-- end of section added to include decimal places
-- Han if the length fo l_trun less than 100 ,i will add **
-- if length(l_return) < 100
-- then
-- l_return := l_return ||
-- substr
-- length(l_return)-1) ;
-- end if;
l_return := l_return||'*************';
return l_return;
end tcos_spell_number;
 楼主| 发表于 2007/5/24 14:47:02 | 显示全部楼层
请问在报表中如何去调用呢??
function CF_1Formula return Char is
begin
  return (tcos_spell_number(to_number(:ORDERED_QUANTITY)));
end;
我这样调用怎么不能用呀,只接在PL/SQL中可以呀,请有经验人事帮个忙呀,急呀,谢谢!
 楼主| 发表于 2007/5/25 08:44:23 | 显示全部楼层
没有人会吗, :@
发表于 2007/5/25 11:29:19 | 显示全部楼层
原帖由 meachal 于 2007-5-24 14:47 发表
请问在报表中如何去调用呢??
function CF_1Formula return Char is
begin
  return (tcos_spell_number(to_number(:ORDERED_QUANTITY)));
end;
我这样调用怎么不能用呀,只接在PL/SQL中可以呀,请有经验 ...

怎么个调用不能啊,报什么错
好象看上去没啥错误
 楼主| 发表于 2007/5/25 16:40:23 | 显示全部楼层
REP-1517:列'CF_1'引用频率不兼容的列'ORDERED_QUANTITY'
这是为什么??????
发表于 2007/5/25 17:55:03 | 显示全部楼层
.........
无言啊....
发表于 2007/5/26 08:33:11 | 显示全部楼层
原帖由 meachal 于 2007-5-25 16:40 发表
REP-1517:列'CF_1'引用频率不兼容的列'ORDERED_QUANTITY'
这是为什么??????


SQL的逻辑关系搞错了
 楼主| 发表于 2007/5/26 11:06:58 | 显示全部楼层
呵呵,CF_1是对列'ORDERED_QUANTITY'进行统计的公式列,呵呵
发表于 2007/5/26 12:01:55 | 显示全部楼层
原帖由 meachal 于 2007-5-26 11:06 发表
呵呵,CF_1是对列'ORDERED_QUANTITY'进行统计的公式列,呵呵

那么可能就是你的循环框嵌套调用出问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 13:45 , Processed in 0.017933 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表