初中文言文110篇第53篇。

本书结构清晰共分三章。第一嶂以“任务型阅读”的解题方法为主线深入细致地分析其命题特点,涉及到知识、解题的方法和应具备的能力在第一章开头,配有“沝平测试”部分让学生先进行自我评估,了解自己的真实水平;其后为10篇“牛刀小试”供学生进一步了解、熟悉题型。第二章为“实踐演练篇”共有50个练习。第三章为“能力提升篇”共有53个练习。

}

委托跟类一样是用户自定义的類型。但类是表示数据的集合委托是具有兼容返回类型和输入参数的方法或lambda表达式的集合。 
如果你学过C++那么可以把委托理解为指向函數的指针。但是委托是类型安全和可靠的。 
你可以把委托看做一个包含有【有序方法列表】的对象这些方法具有相同的返回类型和签洺(参数列表,包括ref和out修饰符) 
在调用委托时,会执行【有序方法列表】的所有方法

}

某电力集团在实际应用中需要在填报数据时将数据库中的字段以更符合业务人员使用习惯的方式进行呈现其中就有行列转换的情况。在常规的应用开发中一般都是通過专门设计的数据界面进行录入,然后再通过程序转换存入数据库而现在有了集算器支持的润乾填报表,就能够处理各种有关数据结构嘚填报需求了这种行列转换自然也不在话下。

首先我们来看一下行列转换的准确含义:

在一些企业应用中,一些指标项在数据库存储時会做为不同的字段存储这样数据结构会更加清晰,但是在报表展示或填报表数据录入时又需要将列转换成行的形式,从而更加符合業务人员的使用习惯这就是行列转换。首先看一个报表展示页面:

需求一:这个填报表是月度报表要求按照月份查询某公司下各项目鉯及机组信息数据,并且能够对数据进行修改

需求二:工具栏中增加两个按钮:“报表保存”保存当前页面数据,“报表锁定”能够对當前页面数据进行保存并对数据锁定锁定后用户再次访问该月份数据就无法再修改了。

需求三:报表第二列是项目名称用户系统结构仳较特殊,页面中每个项目名称都是数据库表中的字段名称第三列和第四列为机组信息数据,在数据库中每个机组为一条记录也就是說数据存放在数据库中两个表中,分别是 rep_tl_config 表和 rep_tl_yb 表取数或回写时要根据项目名称从不同表中取数或回写。

下面是这些需求的实现过程

这個报表的格式相对比较简单,按照需求制作即可如下图:

A 列为序号列,单元格中设置序号

C 设置,B 列中项目名称中是有特殊符号的和數据库中字段名称无法完全对应,会对取数造成影响所以增加了 C 列,单元格类型为维度格值为对应的字段名称。

D 列、E 列为数值格该報表要取两个机组的数据,分别显示在 D 列、E 列中

F 列为固定列,输入相应信息即可

G 列用于控制页面端加锁后数据是否能够被修改。

C、D、E、G 列均需要设置字段名称根据数据取数的数据对象来确定。

由于数据结构较为特殊所以取数使用集算器文件(dfx),并且由于报表中数據来自数据库两张数据表所以取数脚本分两部分处理,脚本一如下:

D1:单元格从数据表中取出公司名称赋值给变量:公司名称

A2、A3 单元格汾别定义了从两个数据表中取数的字段名称

D4、E4 分别定义两个变量设置机组名称groupID 为机组传入参数,传入格式为 #1#2 方式所以此处做了拆分。

A5:从 rep_tl_config 表中取出需要数据数据返回如下:

A6:使用集算器的 pivot 函数,将 A5 中的数据做行列转换将列转成行,将字段名称转为行数据

A8:将 A7 数据按照脱硫设备编号进行分组拆分,将数据放到 data 列中

A9、B9、C9 取第一个脱硫编号的数据处理后放到 t1 对象中

A10、B10、C10 取第二个脱硫编号的数据,处理後放到 t2 对象中

A11:通过序号字段将 t1、t2 两个对象关联在一起

A12:取出需要数据,此时数据格式为:

可以看到已经将数据进行了行列转换,原來的字段做为项目字段中的值另外两列存储对应的数据值。

至此第一部分取数完成,接下来看下第二部分数据处理

B16:设置页面端是否加锁标志,数据表中有个字段“是否经过修正”判断 A16 是否为空,如果为空那么证明是第一次访问该月数据,所以值为 false否则取数据庫中对应值。

A17 中做判断如果 A16 数据为空,则直接在之前定义的 tl_config 对象基础上增加公司名称、month、是否经过修正、flag 字段返回给报表,即报表第②部分数据为空

B22~B30 之间单元格设置和脚本一中设置设置方式类似,由于篇幅原因此处不做过详细说明,最终将所需要数据放到 tl_config 对象中tl_config 對象中数据为:

接下来,设置填报表中对应单元格的字段名称将 C 列单元格字段名称设置为:tl_config. 项目,D 列字段名称设置为:1 脱硫装置E 列字段名称设置为:2 脱硫装置,G 列设置为:是否经过修正

这样填报表能够从数据库中取出相应数据展示到页面中。

接下来看下数据回写脚本同样,回写时也需要将数据回写到数据库的两个表中此处脚本分两段来说明:

D1:设置 month 对象值,如果传入参数为空则取当前系统时间嘚前一个月

A2、A3 分别定义两个表中的字段名

B10、C10,取 1、3 列同上,将机组 2 数据取出并作行列转换

处理方式和之前一样,A3 单元格定义的是 rep_tl_yb 中的芓段名称在 A14~A17 中按照之前方式,取出对应字段并通过 pivot 做行列转换将数据更新到数据库即可。

这样就完成了数据的取数及回写操作

在取數对象中,取出了数据库的是否经过修正字段通过该字段的值控制页面中的数据是否经过锁定,该字段的值在报表的 G 列中取出所以报表可以根据 G 列的值控制页面端是否能够修改数据,是否修改数据可以通过报表单元格的是否可编辑表达式属性控制在 D、E 两列(两个机组數据列)的是否可编辑表达式中写入:G4!=“true”,表示 G4 单元格不为 true 时在页面端可编辑。

上述完成了报表取数时可以根据相应字段控制页面端昰否能够修改数据接下来看下,如果在页面端点击报表锁定按钮实现数据加锁操作。

报表工具栏默认使用的是 inputtoolbar.jsp里边定义了工具栏的按钮,可在该页面自定义按钮:

这样在页面端点击报表锁定按钮,就能通过 js 更改标识位的值并将值保存到数据库中再次访问报表时,頁面中的数据处于锁定状态无法编辑。

至此完成了客户的所有需求,该例中可以看到对于数据库结构比较特殊的表,可以通过集算器先对数据进行处理将处理后的数据返回给报表使用,点击填报后又能在脚本中对数据再次处理从而实现行列转换的需求,此例中主偠是 pivot 函数的使用具体可以看一下函数说明。并且润乾填报表页面端的值可以通过 javascript 进行处理,从而实现数据加锁等相应需求

}

我要回帖

更多关于 初中文言文110篇 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信