水晶报表大写转换的问题!泰哥....

feng442624978 2010-03-03 03:33:48
上次我在这里发帖说了 windows 7下面 我的那个水晶报表转换中文大写的函数有问题. 经你提醒把:

Function total (ls as Currency) as string 改成 Function total (ls as Number) as string

但是现在出现了一个大问题. 如果传进去的是一个 小数位数 它就要报错:

非数字字符串。调用自定义函数'toal' 时出错。文件 C:\Users\ADMINI~1.DAD\AppData\Local\Temp\Stock_OrderDetail {1DAE7B8F-2003-475A-9888-D0ADA4A294A2}.rpt 内出错:公式 . 'Function toal (ls as Number) as string ' 非数字字符串

----- 怎么解决啊. ??? 急....在线等待!!
...全文
554 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng442624978 2010-03-05
  • 打赏
  • 举报
回复
结贴了 .万恶 :回复内容太短了!
feng442624978 2010-03-05
  • 打赏
  • 举报
回复
谢了 各位了. .万恶的
阿泰 2010-03-04
  • 打赏
  • 举报
回复
win7下确实存在上述问题,经过反复调试,最终修订版如下,支持Win7及其他平台。

Function total (ls as number) as string
dim dx_sz as string
dim dx_dw as string
dim str_int as string
dim str_dec as string
dim dx_str as string
dim fu as string
dim a as string
dim b as string
dim c as string
dim d as string
dim b2 as string
dim num_int as number
dim num_dec as number
dim len_int as number
dim i as number
dim a_int as number
dim pp as number

dx_sz="零壹贰叁肆伍陆柒捌玖"
dx_dw="万仟佰拾亿仟佰拾万仟佰拾圆"

if ls=0 then dx_str="零圆整"

if ls<0 then
ls=abs(ls)
fu="负"
else
fu=""
end if

dx_str=CStr (ls)
dx_str=Replace (dx_str,"¥","")
dx_str=replace(dx_str,",","")
if (ls>=0) and (ls<1) then dx_str="0"+dx_str

pp=InStr (dx_str,".")
if pp>0 then
str_int=mid(dx_str,1,instr(dx_str,".")-1)
else
str_int=dx_str
end if

num_int=ToNumber (str_int)

if (ls>0) and (ls<1) then
num_dec = ls*100
else
num_dec=(ls-num_int)*100
end if

str_dec=totext(num_dec)
str_dec=replace(str_dec,"¥","")

len_int=len(str_int)
dx_str=""
for i=1 to len_int
a=mid(str_int,i,1)
a_int=tonumber(a)
b=mid(dx_sz,(a_int+1),1)
c=mid(dx_dw,(13-len_int+i),1)
if dx_str<>"" then
d=mid(dx_str,len(dx_str)-1,1)
else
d=""
end if
if(b="零") and ((d="零") or (b=b2) or (c="圆") or (c="万") or (c="亿")) then b=""
if(a="0") and (c<>"圆") and (c<>"万") and (c<>"亿") then c=""
if((c="圆") or (c="万") or (c="亿")) and (d="零") and (a="0") then
dx_str=mid(dx_str,1,len(dx_str)-2)
d=mid(dx_str,len(dx_str)-1,2)
if((c="圆") and (d="万"))or((c="万") and (d="亿")) then c=""
end if
dx_str=dx_str+b+c
b2=b
next i

'处理金额小于1的情况
if len(dx_str)<=2 then dx_str=""
if(num_dec<10)and(ls>0) then
a_int=tonumber(str_dec)
b=mid(dx_sz,(a_int+1),1)
if num_dec=0 then dx_str=dx_str+"整"
if num_dec>0 then dx_str=dx_str+"零"+b+"分"
end if
if num_dec>=10 then
a_int=tonumber(mid(str_dec,1,1))
a=mid(dx_sz,(a_int+1),1)
a_int=tonumber(mid(str_dec,2,1))
b=mid(dx_sz,(a_int+1),1)
if a<>"零" then a=a+"角"
if b<>"零" then b=b+"分" else b=""
dx_str=dx_str+a+b
end if

dx_str=fu+dx_str

dx_str=replace(dx_str,"零亿","亿")
dx_str=replace(dx_str,"零万","万")
dx_str=replace(dx_str,"零千","千")
dx_str=replace(dx_str,"零圆","圆")


total =dx_str
End Function


其实改动只有一处,就是把
dim num_dec as currency
替换为
dim num_dec as number
雷肿么了 2010-03-04
  • 打赏
  • 举报
回复
学习了。。。..........
阿泰 2010-03-03
  • 打赏
  • 举报
回复
你那个函数就是Basic语法的。。
我试验了下小数的情况,是可以正常执行的,不过我不确定在Win7下会有什么效果。
我家里的电脑装了win7,晚上我回去看看。


关联帖子备用
http://topic.csdn.net/u/20100202/11/c7896700-1b7d-42e8-a203-48d50636043a.html
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
没人知道了吗? 神啊 救救我吧..
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
不行..哎. 我郁闷啊. 我不懂 Basic语法..
雷肿么了 2010-03-03
  • 打赏
  • 举报
回复
我也不知道用哪个替换,

你直接用String 不行吗?
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
有 我用 Double 替换过. 还是报一样错..
雷肿么了 2010-03-03
  • 打赏
  • 举报
回复
Function total (ls as Number) as string

还有其他 的类型没? 你换换试下。 替换掉Number
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
就是一个小数传进去有错误..整数没问题!
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
恩..整型没问题的. 万恶的回复内容:"回复内容太短了! "
波导终结者 2010-03-03
  • 打赏
  • 举报
回复
62.42后面还有俩点?
雷肿么了 2010-03-03
  • 打赏
  • 举报
回复
引用 2 楼 feng442624978 的回复:
我传的是数字啊. 不过是带小数的数字..例如 :62.42..就报这个错.


传整型的就没错? 比如:62
feng442624978 2010-03-03
  • 打赏
  • 举报
回复
我传的是数字啊. 不过是带小数的数字..例如 :62.42..就报这个错.
雷肿么了 2010-03-03
  • 打赏
  • 举报
回复
转中文的,你传个数字进去,当然会报错,

 你可以先判断是不是数字,如果是则不传,反之则传。。
相信很多人都喜欢小动物,例如小狗或小喵什么的!现在分享一个好玩的小玩意!类似Sphero的球型机器,可以用来逗喵溜狗。2016年大概5月份的时候看到做BB-8机器人的泰哥做了一个遥控小球,我也好想做一个,可是他说电脑坏了重装系统后建模文件没了。恰好2016年暑假8月份我家走来了一只流浪小喵,好萌好可爱啊!我正好在学习solidworks三维建模,于是就决定自己试着做一个逗喵的小球。 一边学习Solidworks一边建模,断断续续地画,大概画了一个多月吧,建完模后又修改了好多遍才满意。 零件清单: 材料名称数量 8CM直径亚力克球1(建议多买几个备用) N20减速电机4mm出轴(转速大约300RPM/6V)2 7.4V小锂电池602540(SM接口)1 两路电机驱动板drv88331 塑料牛眼轮3 Arduino Nano(不焊排针)1 HC05或06蓝牙模块1 橡胶圈2 杜邦线、28号硅胶线、热缩管、扎带若干 M2*8螺丝+M2螺母14 3D打印件按stl文件说明打印(轮子多打印几个备用 橡胶圈是买橡胶圈车轮拆下来的,尺寸大概是外径28mm、内径25mm、线径3mm。 想自己做的自己到网上购买上面说的电子零件,在这里说说做小球时走过的坑!用DF活动的现金券在DF商店买了Bluno Nano、3.7v锂电、HR8833微型电机驱动板结果发现没一个能用上,原来那个集成蓝牙功能的Bluno Nano是个不通用的蓝牙,蓝牙软件必须用官方提供的app,不支持密码配对,自己弄好的蓝牙遥控app用不了;HR8833驱动板需要两个5V或以上的电源输入才能工作,我还以为一个是电源输入,另外一个可以输出电源的,折腾了我快一个多星期才搞懂了,真是每块板子都有它不工作的脾气啊!!!希望DFRobot能完善一下这些电子零件和模块,做个通用的蓝牙Nano板,电机驱动板也做得更人性化易用;3.7v电池电机启动瞬间会把电压拉低,导致蓝牙自动断开然后小球会失控,一直滚停不下来,所以改用7.4v锂电就没有问题了。 接线图:接线很简单,就是一个蓝牙小车的接线方式 组装零件 感觉小球程序用PWM控制好像会好点 蓝牙模块先不要安装,先烧录程序,通过ArduinoIDE串口发送字符测试电机转向,方向不对就修改子函数下的digitalWrite(INX,HIGH或者LOW);测试好再装蓝牙模块 蓝牙模块设置好后再组装到Arduino板子上,我比较喜欢用杜邦线与蓝牙模块连接,不焊死,方便拆下来用到别的地方 组装完成 用扎带把电池固定 完成 我在GitHub上找到了一个android开源的蓝牙遥控App把源码修改成自己想要的,我不会iOS,所以就没有iOS苹果手机的App啦。 自定义编码默认值为:前进 1、后退 2、左转 3、右转 4、停止 0 滑动虚拟摇杆上-前进、下-后退、左-左转、右-右转、松开为停止;也可以作为其它蓝牙小车的遥控app。 附件包含开源程序文件和蓝牙模块设置教程。 转自DF社区-好奇吖斌

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧