脚本模式下的填报表制作

填报是报表工具不可或缺的功能之一,润乾报表不仅提供了多源 SQL 填报方式,而且提供了脚本模式填报,以便适应不同的填报数据处理需求。在线教程中对多源 SQL 方式做了详细的配置说明,这里就不再赘述了。(附在线教程地址:http://doc.raqsoft.com.cn/report/input/zzygwgstbb.html)

今天小编将带领大家解锁另外一种填报处理方式——脚本模式

以行式填报表实现雇员信息维护为例,我们来看一下脚本模式如何实现数据处理,请紧随小编的步伐:

第一步 新建填报表,编辑填报表内容和样式,如下图所示:

报表工具会将连续两行数值格会自动识别为行式填报,所以需要将第三、四行的单元格类型设置为数值格,设置方法如下图所示:

第二步 设置数据处理

依次点击“填报”---“数据处理”---“使用向导生成脚本”,会弹出如下图所示的向导配置页面,然后按照下图标示的顺序进行操作就可以自动生成脚本。!

其中,对象名称用户可以自行修改,例如修改为 employee,那么自动生成的来源脚本和去向脚本如下图所示:

其中,

A1:=connect(“demo”) 表示连接 demo 数据库

B1:>employee=A1.query(SQL) 表示在 demo 库中查询员工表信息,并将结果赋值给 employee 对象

C1:>A1.close() 表示关闭数据库连接

其中,

A1:[email protected](“demo”) 表示连接 demo 数据库,@e 选项表示出错时返回错误信息由代码自行处理,否则将中断

B1:>[email protected](新对象: 旧对象, 更新表名称, 更新字段列表; 主键) 表示根据新旧对象的数据差异智能更新表的字段数据(关于 update 函数使用心得参见附录)

C1:[email protected]() 表示获取数据库异常信息

D1:>if(C1==null,A1.commit(),A1.rollback()) 表示如果没有异常抛出,则更新入库,否则回滚处理

E1:>A1.close() 表示关闭数据库连接

第三步 配置字段名称

选中 A3 单元格,在右侧属性列表的字段名称中输入“employee. 编号”。

对数据采集规则不理解的同学,可以直接对每个数值格设置字段名称,规则是:对象名. 字段名。

这里分享一个【小技巧】,我们可以通过设计器的预览按钮查看填报表的分区识别结果:

在制作填报表时,需要保证右侧识别到的对象、字段名称和来源脚本的对象结构是匹配的,这是将数据成功更新入库的必要条件之一。

第四步 其他设置

按照需求设置编辑风格、校验、自动计算、显示格式等。

其中,

校验设置可参考文章: 报表数据填报中的合法性校验

自动计算配置可参考文章: 报表数据填报中的自动计算

总结:

至此,一个简单的脚本模式填报表就制作完成了。实现过程也很简单,但是你可能会有疑问:脚本模式到底是个啥(What)?我为什么需要它(Why)?它适合什么样的场景(Where)?

  • What?脚本模式是基于集算器 (SPL) 语法的填报模式,通过内置函数实现数据获取、数据处理、数据回填等操作。
  • Why?脚本模式可以让开发人员更加明确需要维护的内容,也可以让开发人员处理填报数据时更加自由,让填报本身更加 open 和 free。
  • Where?多源填报场景下,多源 SQL 的配置步骤比较多,而脚本模式可以简化此配置;同时,从文件系统中获取数据、多表关联取数、动态取数等情况多源 SQL 是无法支持的,此时需要通过脚本模式实现。讲真,80% 的填报场景需要通过脚本模式制作实现。

附录:

脚本模式的核心函数:update()

一、语法:

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

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

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

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

二、常用选项:

举个栗子:

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

demo.update( 对象 1: 对象 1_old,EMPLOYEE,EID,NAME,SURNAME,GENDER,

SALARY:SALARY+1000;EID)

说明:根据主键 EID 对比对象 1 和对象 1_old 的数据差异,并将差异数据智能更新到 demo 库的物理表 EMPLOYEE 中,更新字段为 EID、NAME、SURNAME、GENDER、SALARY,其中 SALARY 字段的更新值为 SALARY+1000

智能更新时,程序会自行判断执行 insert、update 或者 delete 操作。

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

[email protected]( 对象 1,EMPLOYEE,EID,NAME,SURNAME,GENDER,

SALARY:SALARY+1000;EID)

说明:对比主键 EID,将对象 1 的数据插入 demo 库的 EMPLOYEE 表中,插入数据的字段为 EID、NAME、SURNAME、GENDER、SALARY,其中 SALARY 字段的更新值为 SALARY+1000

三、注意事项:

1)必须设置主键字段

2)更新的字段内容需要在新旧对象中都存在

3)自增字段的选项写法是 @1,注意:这里是数字 1 而不是字母 l

原文地址:https://www.cnblogs.com/shiGuangShiYi/p/12111182.html

时间: 2024-08-02 03:16:57

脚本模式下的填报表制作的相关文章

【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表

提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图表等形式来动态显示数据,并为使用者提供浏览.打印.导出和分析的功能,可以用公式表示为: 报表 = 多样的布局 + 动态的数据 + 丰富的输出 报表通常包含以下组成部分: 报表首页:在报表的开始处,用来显示报表的标题.图形或说明性文字,每份报表只有一个报表首页. 页眉:用来显示报表中的字段名或对记录的

脚本填报表的条件查询

在上一篇<脚本模式下的填报表制作>中,我们详细讲述了如何使用脚本进行数据处理.制作填报表,今天我们盘道一下脚本模式下如何实现条件查询. 一.需求描述 然后再进行增删改操作.例如,先过滤出所关心城市的客户信息,然后再对查询结果进行更新操作.那么,实现这个需求需要解决两个问题: 1. 如何让条件录入更加人性化 2. 脚本模式下如何实现参数的接收处理和数据过滤? 二.实现难点 多城市值传入时,脚本中如何处理参数并实现数据过滤: 参数模板中如何实现地区和城市之间的关联过滤. 三.操作步骤 第一步  制

如何用报表工具实现树状层级结构的填报表

需求说明 对于带有层级结构的数据中,用户为了能够更加清晰直观地查看,往往需要在数据展示时将层级展示出来,比如常见的省.市.县结构,或者一些科目中也会带有层级.通常,我们管这种形式叫做树状报表.在查询统计类报表中可以使用报表的左主格来实现,但是由于填报模型更加侧重于数据处理,格式设计上有别于查询统计报表,往往较难实现树状报表. 下面,我们通过一个层级科目的例子介绍一下在填报表中如何实现这个需求.首先,我们看一下报表展示的结果: 这个报表是一个按照科目录入数据的填报表,科目分不同等级,比如 1001

填报表中也可以添加 html 事件

在实际的项目开发中,填报表的应用十分广泛. 多数情况下,填报表会作为整个项目的一部分配合需求灵活使用,但有时也会受大项目环境的影响,产生一些特别的要求.比如,通常报表单元格的数据类型大多是文本,有时却需要借助 HTML 或者 JavaScript 实现一些交互效果,例如在报表中添加一些说明性的提示.自定义功能性按钮等.显然,单纯的文本数据类型不支持这种交互操作,那么我们就会想填报表是不是能够支持 HTML 数据类型的用法呢?如果支持又该怎么使用呢? 答案肯定是支持的(你懂得),下面我们就举个栗子

固定格式填报表的制作

在前面几篇文章中,我们学习了多种类型填报表的制作,对润乾报表的填报机制有了一定的了解.今天我们来研究一下如何制作固定格式填报表,同时检验下自己之前学习的内容是否已熟练掌握. 今天要学习的固定格式填报表效果图如下所示: 左侧为固定内容,蓝色部分是需要客户填写的内容,最后将整个页面数据更新到数据库表中. 这里的难点在于,如何把左侧固定内容也更新到数据库中,也就是如何设置单元格分区. 带着这个问题我们来看一下具体实现步骤: 第一步 新建填报表 编辑填报表内容和样式,如下图所示: 一般这类报表会对应一个

linux mini模式下如何制作本地yum源,并用远程工具安装 vim

linux mini模式下如何制作本地yum源,并用远程工具安装 vim 打开虚拟机 启动centos 系统 点右下角的光盘图标 出现连接(或是断开).设置,下拉菜单,选择 "设置" 在虚拟机设置对话框内如图所示 [[email protected] ~]# vim -bash: /usr/bin/vim: 没有那个文件或目录 光盘挂载: 查看系统中所有的挂载信息 [[email protected] ~]# mount /dev/sda3 on / type ext4 (rw) pr

怎么在命令模式下使用adb / 进入adb shell(脚本)

1.打开winows菜单,输入cmd命令,点击确定,进入命令模式下. 2.输入命令 D:(这里输入的D表示你的sdk存放的盘下) 然后回车输入cd 3.然后选择你sdk路径,复制路径. 4.鼠标点击cmd,选择编辑,选择粘贴 将复制的路径粘贴到 命令行 回车. 5.然后输入命令adb start-service 打开adb. 出现如图所示,表示adb服务开启成功,就可以使用adb命令了. 6.使用adb  shell 命令.--- 进入adb shell(脚本) 原文:http://jingya

【FastReport教程】在报表的预览模式下复制或删除页面

下载FastReport.Net最新版本 在FastReport 2018.4中,出现了一个非常有趣的功能 - 在预览模式下复制和删除报表页面.也就是说,您可以选择特定的报表页面并根据需要多次克隆,或删除所选页面.在这种情况下,对模板本身没有影响.即使你只有一页,要使一切恢复到原始状态 - 只需再次构建报表. 例如,如果要打印报表以及多个实例中所需的任何特定页面.相反,不想打印的某些页面,在打印设置中,您可以选择所需的页码.但你必须记住这些数字.这不是很方便.使用新功能,您可以添加所需的页面.

配置lvs nat模式下real server服务器端lvsrs脚本

因为lvs nat模式下,只有入站方向的流量经过lvs服务器,出站流量直接由Real server服务器响应,所以Real Server服务器必须做相应的配置才能响应客户数据包,即修改Real server做负载均衡时回包的源地址要改为VIP,另外要修改Real server的arp响应策略,关闭arp响应功能. #!/bin/bash #description:start real server VIP=192.168.12.200 ./etc/rc.d/init.d/functions ca