在reportview表格中 有一个格的值是 =Fields!PriceBig.Value
在数据库的数据是:“壹万贰仟叁佰肆拾伍元零角零分整”及12345.00的大写
但是由于打印纸的格式是固定的 分别是 “ 万 仟 佰 拾 元 角 分”
所以我必须把PriceBig 分解出来 !
请问 在reportview中
1. 我如何截取“万”前面数 。
2. 如何截取“万”和“仟”之间那个字符串。
请指教!!!!~~~
在数据库的数据是:“壹万贰仟叁佰肆拾伍元零角零分整”及12345.00的大写
但是由于打印纸的格式是固定的 分别是 “ 万 仟 佰 拾 元 角 分”
所以我必须把PriceBig 分解出来 !
请问 在reportview中
1. 我如何截取“万”前面数 。
2. 如何截取“万”和“仟”之间那个字符串。
请指教!!!!~~~
解决方案 »
- C# 抓取java webservice 抛出的异常 问题
- ASP C# div显示问题
- 如何用vs2005开发C#的B/S项目
- 顶的有分,急,vs2005 ,Winform程序部署到客户端提示未能使用RsaProtectedConfigurationProvider进行解密。
- 100分,大家来讨论看看有什么好的解决方案
- (保证结贴给分)高手看看我这个界面布局,是不是应该用MDI,请多给些意见
- wpf 遍历相对路径中所有图片资源
- 请教如何实现将鼠标放在下拉列表中某一项时显示内容?
- 想请教在软件公司工作的大哥几个问题,谢谢!
- 问个简单问题,如何清空ComboBox中的数据?
- 在数据列中找到相同的项,返回相同的项或行数
- C#下如何关闭EXCEL进程
Response.Write(a.Substring(a.IndexOf("万") - 1, 1)); //输出壹自已写一个方法, 分离出来后,在对应纸张.
Console.WriteLine(a.Substring(0, a.IndexOf('万')));
Console.WriteLine(a.Substring(a.IndexOf('万')+1, a.IndexOf('仟')-2));
你把字符串换成你的字段就行了,
我这里使用的字符串常量来进行测试的报表中用的函数是VB的,这个你在表达式中看他的解释就知道了
'万
=IIf(InStr("壹万贰仟叁佰肆拾伍元零角零分整","万")>0,left("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","万")-1),"")'仟
=IIf(InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元零角零分整","万")>0,mid("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","万")+1,InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")-InStr("壹万贰仟叁佰肆拾伍元零角零分整","万")-1),left("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")-1))
,"")'佰
=IIf(InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")>0,mid("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")+1,InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")-InStr("壹万贰仟叁佰肆拾伍元零角零分整","仟")-1),left("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")-1))
,"")'拾
=IIf(InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")>0,mid("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")+1,InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")-InStr("壹万贰仟叁佰肆拾伍元零角零分整","佰")-1),left("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")-1))
,"")'元
=IIf(InStr("壹万贰仟叁佰肆拾伍元零角零分整","元")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")>0,mid("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")+1,InStr("壹万贰仟叁佰肆拾伍元零角零分整","元")-InStr("壹万贰仟叁佰肆拾伍元零角零分整","拾")-1),left("壹万贰仟叁佰肆拾伍元零角零分整",InStr("壹万贰仟叁佰肆拾伍元零角零分整","元")-1))
,"")'角
=IIf(InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","元")>0,mid("壹万贰仟叁佰肆拾伍元陆角柒分整",InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","元")+1,InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")-InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","元")-1),left("壹万贰仟叁佰肆拾伍元陆角柒分整",InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")-1))
,"")'分
=IIf(InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","分")>0
,iif(InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")>0,mid("壹万贰仟叁佰肆拾伍元陆角柒分整",InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")+1,InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","分")-InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","角")-1),left("壹万贰仟叁佰肆拾伍元陆角柒分整",InStr("壹万贰仟叁佰肆拾伍元陆角柒分整","分")-1))
,"")
取万时,先用iif判断是否含有万字,如果含有,就取万字前面的字符,没有就打印空字符仟及其他,先判断是否存在本位(如仟),如果不存在就打印空字符串,
如果存在,则进一步判断是否含有前一位(如万),
如果存在则取两万之间的,如(万和仟)之间的内容,
如果不存在,则取本位(如仟)前面的所有字符涉及到的函数
iif(表达式,真值,假值),类似于C#中的?:表达式
instr(字符串1,字符串2),获取字符串2在字符串1中的位置,如果不包含,则返回0,如果包括,则返回位置,从1开始,这点与C#有所不同,类似于C#中的string.Indexof
left(字符串,个数),获取字符串左边的指定个数的字符串。类似于C#中的string.Substring
mid(字符串,位置,长度),获取字符串中从指定位置开始的指定长度的子字符串,注意:位置从1开始,类似于C#中的string.Substring
=IIf(InStr(Fields!PriceBig.Value,"万")>0,left(Fields!PriceBig.Value,InStr(Fields!PriceBig.Value,"万")-1),"")
=IIf(InStr(Fields!ETBigPrice.Value,"万")>0,left(Fields!ETBigPrice.Value,InStr(Fields!ETBigPrice.Value,"万")-1),"*")
错误图片:
=IIf(InStr(Fields!ETBigPrice.Value,"万")>0,left(Fields!ETBigPrice.Value,InStr(Fields!ETBigPrice.Value,"万")-1),"*")错误图片:
这下只有使用自定义代码的方法
1、进入报表属性,注意是整够报表的属性,
然后选择“代码”标签,
如下图所示
2、输入以下代码,作用是获取传入字符串中的万前面的内容,如果没有万就返回空字符串。
如果需要不含万返回星号(*),将value=""改成value="*"即可。public function GetWan( str as string) as string
dim value as string if instr(str,"万")>0 then
value=left(str,InStr(str,"万")-1)
else
value=""
end if getwan=valueend function3、更改你以前的表达式,参考你上一楼的代码
应该将
=IIf(InStr(Fields!ETBigPrice.Value,"万")>0,left(Fields!ETBigPrice.Value,InStr(Fields!ETBigPrice.Value,"万")-1),"*")
改成
=code.getwan(Fields!ETBigPrice.Value)出现红色波浪线不要管它。