数据查询

阅读(2380) 标签: 数据查询,

本节主要介绍如何将查询JSON转换为报表结果数据。

这里我们以集算器脚本处理查询JSON为例。将查询JSON传入spl中,从数据库中查询出需要的数据。

脚本举例:

上图展示的脚本不完整,仅做示意,具体参考commonQueryDS.splx。该文件位于【安装目录】\report\web\webapps\demo\WEB-INF\reportFiles\commonQuery\下。

脚本主要处理过程如下:

1、解析查询JSON

2、根据查询JSON的查询细节以及一些权限参数(如用户ID)拼出最后的查询语句(可以理解为SQL);

3、数据库执行SQL,返回符合要求的数据;

4、增加二维表存储真实值和显示值,并返回。

 

l  接收查询模板返回的查询JSON做解析

>q=json(queryJSON)

>params=json(params)

 

l  权限控制

commonQueryDS.splx中权限控制的部分脚本:

if (params2.userId==23)

>wheres.insert(0,"EMPID==23")

else if (params2.userId==24)

>wheres.insert(0,"EMPID==24")

查询员工表时,可根据用户ID的不同,返回不同查询信息。

如下:

用户ID23时,只能查询EMPID23信息:

用户ID24时,只能查询EMPID24信息:

 

l  数据库执行SQL,返回符合要求的数据

=connect("demo")

>sql="select * from "+params.table

=A21.query(sql)

 

l  根据查询JSON中的别名信息重命名字段别名,以此改变结果集中的字段名

aliasNamesExp = "员工编号:ID"

=A25.new(${aliasNamesExp})

 

l  通过性别字段,计算出一个显示值字段

[{v:1,d:""},{v:2,d:""}]

 

if (A25.fname().pos("性别")!=null)

=A25.derive(B32.select@1(v==性别).d:性别名称)

l  设置代码值和显示值。用于为结果集数据设置显示值。

>sex=create(v,d),"1:;2:".split(";").(~.split(":")).run(sex.insert(0),tmp=sex(sex.len()),tmp.v=int(~(1)),tmp.d=~(2))