• 文档总览
  • 入门
    什么是填报表
    填报表的分类
    制作填报表的流程图
  • 固定网格填报
    制作一个网格式填报表
    采集规则
    编辑风格
    合法性检查
    自动计算
    显示格式
    WEB 预览
    手机预览填报表
    填报表预览结果的导出与导入
    填报表的粘贴功能
    如何从 EXCEL 文件生成填报表格
    自定义编辑风格
  • 动态行式填报
    快速制作行式填报表
    制作带参数模板的行式填报表
  • 自由格式填报
    制作自由格式填报表
    空白表格
    图片字段
  • 混合格式填报
    制作主子填报表
    制作交叉填报表
  • 填报表组
    制作填报表组
    表间校验
    表间自动计算
    Sheet 操作
    JS 获取单元格对象
  • SPL 文件模式在数据处理中的使用
  • 多源 SQL 模式在数据处理中的使用
  • 业务填报与分析
    制作简单自动存取数据填报表
    填成二进制文件
    制作多页自动存取数据填报表
    自动汇总统计
    复杂业务填报与统计示例一
    复杂业务填报与统计示例二
首页 润乾报表 填报教程 SPL 文件模式在数据处理中的使用 前一篇 | 后一篇

SPL 文件模式在数据处理中的使用

阅读(3500) 标签: splx文件,

如果脚本复用,可以把脚本保存到SPL文件(文件后缀为.splx/.spl/.dfx),数据处理用SPL文件模式,这样也更方便调试。

第一步:设计填报表

打开润乾报表设计器,启动示例数据库,连接demo数据源。

点击【文件】à【新建填报表】,系统生成一张空白填报表。

编辑填报表内容和样式,内容如下图所示:

第二步:设置单元格类型

选中B1A2A4单元格,在右侧单元格属性栏中设置其单元格类型为维度格。

选中B2B4单元格,在右侧单元格属性栏中设置其单元格类型为数值格,如下图。

第三步: 制作SPL

制作取数SPL

订单表数据如图:

订单明细表数据如图:

由于本例中所有统计销售额数据不是直接来自于数据库表,而是由订单和订单明细两个基础表汇总而来,然后回填到另外两个汇总数据表中。所以本例不能用“ 使用向导生成脚本”快速生成取数和回填脚本,故我们使用SPL文件模式。

如果填报表需要通过SPL取数,那么首先需要通过集算器制作SPL文件,将填报表展现所需的数据通过变量的形式返回给填报表,在填报表单元格中就可以通过引用变量名获取数据。

打开集算器设计器,创建取数SPL并命名为8.splx。文件内容如下表:

 

A

 

1

=connect("demo")

连接 demo 数据库。

2

=A1.query("select * from 订单")

demo 数据库中查询订单信息。

3

=A1.query("select * from 订单明细")

demo 数据库中查询订单明细信息。

4

=A1.query("select * from 产品")

demo 数据库中查询产品信息。

5

=A3.derive(A4.select@1(产品ID==A3.产品ID).类别ID:类别ID)

A3中增加类别ID”

6

=join(A2:订单,订单ID;A5:订单明细,订单ID)

外键式连接。

7

=地区销售额=A6.group(订单.货主地区:货主地区,订单明细.类别ID:类别ID;订单明细.数量*订单明细.单价:销售额)

按货主地区和类别ID分组,并将结果赋值给地区销售额对象。

8

=类别=A1.query("select * from 类别")

 

9

=雇员销售额=A6.group(订单.雇员ID:雇员ID,订单明细.类别ID:类别ID;订单明细.数量*订单明细.单价:销售额)

按雇员ID和类别ID分组,并将结果赋值给雇员销售额对象。

10

=A1.query("select * from 雇员")

 

11

=员工=A10.derive(姓氏+名字:姓名)

A10中增加姓名字段,并将结果赋值给员工对象。

12

=A1.close()

关闭数据库连接。

此填报报表涉及多张表包括:订单、订单明细、产品、类别和雇员。其中订单和订单明细有外键关联。

制作回填SPL

打开集算器设计器,创建回填SPL并命名为8_save.splx。文件内容如下表:

 

A

 

1

=connect@e("demo")

连接 demo 数据库,使用选项@e表示出错时返回错误信息由代码自行处理,否则将中断。

2

>A1.update@k(地区销售额,CPXSTJA,类别ID,货主地区,销售额;类别ID,货主地区)

对比主键插入和更新数据,(关于update函数使用参见扩展)。

3

>A1.update@k(雇员销售额,CPXSTJB,类别ID,雇员ID,销售额;类别ID,雇员ID)

对比主键插入和更新数据。

4

=A1.error@m()

获取数据库异常信息。

5

>if(A4==null,A1.commit(),A1.rollback())

如果没有异常抛出,则更新入库,否则回滚处理。

6

>A1.close()

关闭数据库连接。

7

return A4

返回A4内容。

回填SPL的核心函数:db.update()

语法

db.update(新对象:旧对象,更新表名称,字段:更新值,…;主键,…)

有旧对象时,新旧对象的数据先进行对比,将差异数据更新入库,例如,根据主键对比数据后,新增了的主键会进行插入操作;主键相同,其他字段不同时执行修改操作;主键字段减少时,则执行删除操作。

如果只有新对象,那么将直接将新对象的数据按照主键设置更新入库,此时只涉及修改和插入操作,无删除操作。

常用选项

@u

对比主键只生成UPDATE。无旧对象时不再对比,直接用新对象更新到数据库。

@i

对比主键只生成 INSERT。无旧对象时不再对比,直接用新对象插入到数据库。

@a

执行前清空目标表。先清空数据库表中的数据,再执行db.update(新对象:旧对象,更新表名称,字段:更新值,…;主键,…)

@k

完成后不提交事务,缺省将提交

@1

第一个字段是自增字段,没有对应表达式

@d

只删除,此时必须有旧对象

示例

1)根据新旧对象差异数据执行智能更新:

demo.update(employee:employee_old,员工表,'编号','部门','姓名','性别','出生日期','入职日期','籍贯','工资','应发工资': '工资'*1.2;编号)

说明:根据主键编号对比employee employee_old 的数据差异,并将差异数据智能更新到 demo 库的物理表员工表中,更新字段为'编号','部门','姓名','性别','出生日期','入职日期','籍贯','工资','应发工资',其中'应发工资'字段的更新值为'工资'*1.2

2)根据新对象数据执行插入更新:

demo.update@i(employee,员工表,'编号','部门','姓名','性别','出生日期','入职日期','籍贯','工资','应发工资': '工资'*1.2;编号)

说明:对比主键编号,将employee的数据插入 demo 库的员工表中,插入数据的字段为 '编号','部门','姓名','性别','出生日期','入职日期','籍贯','工资','应发工资',其中'应发工资'字段的更新值为'工资'*1.2

update函数详细说明可参考:http://doc.raqsoft.com.cn/esproc/func/dbupdate.html

更多集算器函数详细说明可参考:http://d.raqsoft.com.cn/esproc/func/

第四步:编辑维度格

选中B1单元格,在右侧单元格属性栏的表达式中编辑:=地区销售额.id(类别ID)

编辑A2单元格的表达式为:=地区销售额.id(货主地区).rvs()

编辑A4单元格的表达式为:=雇员销售额.id(雇员ID).rvs()

这三个维度格单元格表达式返回维序列,是扩展格,维序列不可出现重复值,所以此例中通过id()进行了distinct操作。其中,B1单元格横向扩展;A2A4单元格纵向扩展。

可参考 同记录采集规则小节,查看该填报表对应的分片结果

第五步:设置字段名称

选中A2单元格,在右侧单元格属性栏的字段名称中输入“地区销售额.货主地区”。

 

选中B1单元格,在右侧单元格属性栏的字段名称中输入“类别ID ,为公用维。

选中B2单元格,在右侧单元格属性栏的字段名称中输入“地区销售额.销售额”。

此处地区销售额为取数脚本返回的序表变量,表示前2行这片区域的数据取自地区销售额。

选中A4单元格,在右侧单元格属性栏的字段名称中输入“雇员销售额.雇员ID”。

 

选中B4单元格,在右侧单元格属性栏的字段名称中输入“雇员销售额.销售额”。

此处雇员销售额为取数脚本返回的序表变量,表示第4行这片区域的数据取自雇员销售额。

第六步:设置数据处理

数据处理中我们采取指定取数SPL和回填SPL的方式。此时需要事先已制作取数SPL和回填SPL

点击【填报】à【数据处理】,打开数据处理界面设置数据来源和数据去向。如下图:

 

设置数据来源中的SPL文件后,切换到【保存对象旧数据】界面,点击【提取对象名】按钮提取对象名。

 

第七步:自动计算

编辑C2单元格的表达式为=sum({B2})

编辑B3单元格的表达式为=sum({B2})

编辑C3单元格的表达式为=sum({B3})

编辑C4单元格的表达式为=sum({B4})

编辑B5单元格的表达式为=sum({B4})

编辑C5单元格的表达式为=sum({B5})

第八步:设置显示格式

设置B2C2B3C3B4C4B5C5的显示格式为¥#0.00

第九步:设置编辑风格

此例中维度格对应的字段值是编码,但为了展现数据更直观,所以需要给维度格设置显示值,通常我们通过给维度格设置编辑风格来设置显示值。

例如B1,选中单元格B1,点击【填报】à【编辑风格】或者右击选择【编辑风格】,弹出“编辑风格”窗体,如下图所示:

在“编辑风格”下拉框中选择“下拉数据表”风格类型,如下图所示:

点击【设置】按钮,弹出下拉数据表编辑对话框,设置数据表名称、显示列、数据列和空选项文字。内容如下图所示:

例如A2,选中单元格A2,点击【填报】à【编辑风格】或者右击选择【编辑风格】,弹出“编辑风格”窗体,如下图所示:

在“编辑风格”下拉框中选择“下拉列表框”风格类型,如下图所示:

点击【设置】按钮,弹出下拉列表框编辑对话框,设置代码值、显示值和空选项文字,内容如下图所示:

例如A4,选中单元格A4,点击【填报】à【编辑风格】或者右击选择【编辑风格】,弹出“编辑风格”窗体,如下图所示:

在“编辑风格”下拉框中选择“下拉数据表”风格类型,如下图所示:

点击【设置】按钮,弹出下拉数据表编辑对话框,设置数据表名称、显示列、数据列和空选项文字。内容如下图所示:

保存该填报表文件为8.sht

第十步:WEB预览

点击WEB预览按钮wps63BB.tmp,服务器自动启动。填报表WEB预览效果如下图所示:

 

天下网标王锦江区网站优化排名公司网站优化方法和技巧昆明个人网站优化江苏网站优化公司排名网站打开速度慢优化泊头市网站优化价格网站推广和优化哪个好网站加关键词优化东莞企业网站优化寿光优化网站软件西华网站优化深圳外贸网站优化推广安阳搜索引擎网站优化哪家便宜弥勒市网站seo优化排名中山网站优化知识网站优化代理网站整站优化报价天门本地网站优化公司排名网站优化前景如何服务好的企业网站优化哪家靠谱曲阜优化网站靠谱保定专业网站优化哪家公司好陈江网站关键词优化贵阳市百度网站优化新乡网站关键词优化排名多少钱新山村网站推广优化江苏扬州网站优化广州做网站优化费用湖州网站seo如何优化莱州市网站关键词优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化