填报应用 >> 行式填报表 >>批量生成字符串类型卡号

楼主
我是社区第56952位番薯,欢迎点我头像关注我哦~
本帖最后由 加菲喵 于 2015-9-10 16:36 编辑

  
批量生成字符串类型卡号
  
  
  


  • 问题描述
  • 实现思路
  • 示例
  •    在数据库中设计数据表
    • 制作上传数据模板
    • 保存填报
    • 制作查看模板
    • 保存预览
1. 问题描述
批量生成字符串类型卡号是指,用户上传了一段位数很长的字符串类型卡号的开头和结尾(如图),然后要求系统自动生成这一段所有的卡号并且成功输出。
用户上传卡号
2. 实现思路
     主要从三个方面进行思考:1.对过长的字符串进行截断,使其可以被转化成数字;2.使用公式批量生成;3.输出过程进行拼接;4.对数字0进行标注。
3. 示例

3.1 设计数据表
     此处使用Oracle数据库,在数据库中设计以下这样一张数据表,数据类型和属性如下:
3.2 制作上传数据模板

  • 新建数据连接
新建一个数据连接,连接至该数据库,新建数据连接的方法详细请参照数据连接

  • 模板设置
新建一张模板,在在模板设计主体页面第二行C单元格添加公式:
  
if(lenA2)==0,"",  
  
RANGE(TOINTEGER(RIGHT(LEFT(A2,len(A2)-4),3)),
  
TOINTEGER(RIGHT(LEFT(B2,len(B2)-4),3))))
  
下面对公式做出解释,从用户上传卡号可以看出,1.卡号位数较多;2,卡号位数不固定;3.卡号自带字符串后缀;

针对以上情况作出以下解决方案:1. 通过len(B5)-4)获取卡号位数;2.通过LEFT(B5,len(B5)-4)截断字符串后缀;3.通过RIGHT(LEFT(B5,len(B5)-4),3)获得起始卡号和终止卡号最后三位(注,此处只取了后三位,用户可以根据实际需要取位数);4.通过TOINTEGER(RIGHT()将获取的三位卡号转换成整数型;5.利用RANGE()公式实现卡号后三位的自增长。将C2单元格获取的结果传进D2单元格

  • 填报属性设置

点击模板>报表填报属性,增加一个内置SQL
对填报内容作出解释:id采用随机数来表示,用UUID();
papername是用来存放产生的卡号尾数,因为此时所有的卡号位数都是采用字符串形式存放在D2单元格里用“,”分开,因此此处采用split公式,将字符串根据“,”分离,split(D2,”,”);
basename用来存放卡号前几位left(B2,len(B2)-7),取B2的长度减7然后取左边这几位。
suffix用来存放卡号的后缀right(B2,4);
3.3 保存填报
保存模板,采用填报预览。                                                            
点击导入按钮导入Excel表。
         导入后效果                                                                                         
可以看到C单元格已经自动生成卡号的后三位,正式报表可以将CD两列隐藏
提交进数据库后数据库保存的数据如下:
3.4 制作查看模板
新建一张模板,添加数据集
select filed||suffix as cardnumber from(
SELECT BASENAME||PAPERNAME AS FILED,suffix FROM (
select case when length(papername)=2 then '0'||papername
       when length(papername)=1 then'00'||papername
       else papername end aspapername, basename, suffix from CPTZ_PAPERNAME)
      order by to_number(FILED) )
注:自增长函数range只能对数字类型实施运算,因此被存进数据库的数字会自动截断首位的0,因此在此处需要对自增长产生的数字位数进行判断,并且根据位数选择填补的0。本例截取的末尾数为三位。

在模板设计主体页面第二行添加一个单元格,并将数据列拖曳至对应单元格中,如下图:
3.5 保存预览

保存模板,查看效果如下:
页面显示                                
批量生成字符串类型卡号.xls (22.5 KB, 下载次数: 38) showcard.cpt (3.15 KB, 下载次数: 45) generatecard.cpt (6.88 KB, 下载次数: 43) 批量生成字符串类型卡号.docx (404.11 KB, 下载次数: 50)

分享扩散:
参与人数 +1 F币 +325 理由
传说哥 + 325 赞一个!

查看全部评分

沙发
发表于 2015-9-6 09:24:51
亲,用的哪个数据库说一下哦,模板貌似还要添加下控件吧,导入excel那部分也描述下哈
板凳
发表于 2015-9-6 15:42:45
地板
发表于 2015-9-21 17:01:19
赞一个~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表