起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2536|回复: 7

[处理中6] x5.2.7实现报表筛选

[复制链接]

9

主题

45

帖子

188

积分

初级会员

Rank: 2

积分
188
QQ
发表于 2015-1-19 17:30:49 | 显示全部楼层 |阅读模式
var report = justep.xbl('ds1');
      report.setIntegerVar('offset', 0);
      report.setIntegerVar('limit', -1);
      report.setStringVar('filter', "(PM_WYZB.fXMMC = '航空摄影测量项目')")
   justep.xbl('ds1').refresh();
请教:X5EE论坛看到的,在x5.2.7上如何实现?

396

主题

2433

帖子

4863

积分

论坛元老

Rank: 8Rank: 8

积分
4863
QQ
发表于 2015-1-20 08:43:40 | 显示全部楼层
x5.2.7也是可以这样实现

评分

参与人数 1 +2 收起 理由
jishuang + 2 赞一个!

查看全部评分

QQ67886387
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2015-1-20 08:45:19 | 显示全部楼层
如果不是用的标准的queryAction,可以参考
/UI/demo/report/process/property/parameterFilterReport.w
/UI/demo/report/process/ksql/ksqlReport.w

如果用的是标准的queryAction,就是var report = justep.xbl('ds1');
      report.setIntegerVar('offset', 0);
      report.setIntegerVar('limit', -1);
      report.setStringVar('filter', "(PM_WYZB.fXMMC = '航空摄影测量项目')")
   justep.xbl('ds1').refresh();
设置filter实现
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

9

主题

45

帖子

188

积分

初级会员

Rank: 2

积分
188
QQ
 楼主| 发表于 2015-1-21 10:23:02 | 显示全部楼层
我的实现方法:
实现报表查询方法:
1、在BIZ中,对ksqlReport的Action的where字句设置带参数和and操作的筛选条件,例如:
ER_XSSQZK.fXSRY LIKE :a AND ER_XSSQZK.fXSSQBH LIKE :b AND ER_KHXX.fKHMC LIKE :c AND ER_KHXX.fYWQTR LIKE :d
2、在UI的w文件中创建data准备存放筛选参数,设置data的autonew=true;可选设置原report的autoload=false【reportData没有这个属性,由report实际读数据库】,以提高用户体验--否则数据量大的时候,等很久才有数据显示;
3、根据需要创建输入参数需要的界面组件,一般这样操作:首先在原layout下borderLayout_1下创建一个borderLayout-bottom(bottom),然后在这里再创建一个View,随后在这个view里创建需要的输入组件和trigger【简单的直接使用input】;
4、将输入组件与data各字段关联,创建trigger的点击事件,例如:
mainActivity.trigger1Click = function(event){
var report = justep.xbl('ds1'), data = justep.xbl('data1');
var a = b = c = d = '%';
if (data.getValue('xsryName') != '') a = data.getValue('xsryName');
if (data.getValue('xssqNumber') != '') b = data.getValue('xssqNumber');
if (data.getValue('khMC') != '') c = data.getValue('khMC');
if (data.getValue('khQTR') != '') d = data.getValue('khQTR');
    report.setStringVar('a', a);report.setStringVar('b', b);report.setStringVar('c', c);report.setStringVar('d', d);
    alert(a+b+c+d);
  justep.xbl('gridReport').refresh();
};
这里最关键的是:
X5.2.7的Action接受参数能力非常弱,复杂参数都不行,只能处理类似:关系名=:A的方式!
故我这里使用where可接受的通配符,并结合Action的and来实现报表筛选操作!

结贴。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2015-1-21 11:22:10 | 显示全部楼层
gzprof 发表于 2015-1-21 10:23
我的实现方法:
实现报表查询方法:
1、在BIZ中,对ksqlReport的Action的where字句设置带参数和and操作的筛 ...

不是Action不支持复杂参数,Action中可以有Object、Table、list、map等
reportData中提供了简单类型的参数赋值
reportData.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

9

主题

45

帖子

188

积分

初级会员

Rank: 2

积分
188
QQ
 楼主| 发表于 2015-1-22 09:54:49 | 显示全部楼层
你没有理解我的意思。其参数控制很傻瓜的。
例如,要实现上述的查询功能,这么设置:
1、在BIZ中,对ksqlReport的Action的where字句设置带参数和and操作的筛选条件,例如:
ER_XSSQZK.fXSRY LIKE :a AND ER_XSSQZK.fXSSQBH LIKE :b AND ER_KHXX.fKHMC LIKE :c AND ER_KHXX.fYWQTR LIKE :d
这里就设置为:a
2、然后对啊整个字句赋值,继续用setStringVar传递参数。。。
这样做是不行的!!!

其实就是,X5.2.7只接受严格意义的传递参数,where字句中必须按
关系=:a这种方式!
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2015-1-22 10:53:18 | 显示全部楼层
你好楼主,这个问题需要我在本地环境进行问题重现,所以会花费较长时间,请你耐心等待,我完成后会第一时间反馈结果,谢谢!
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

9

主题

45

帖子

188

积分

初级会员

Rank: 2

积分
188
QQ
 楼主| 发表于 2015-1-23 10:58:49 | 显示全部楼层
已经很清楚了。
Action如果是bizQueryAction,确实筛选功能很强大,可以设置各种参数,如filter limit offset 等;但如果使用ksqlAction,这几个参数都不能设置,则只能采取我上述变通方法实现数据筛选。而这在查询统计报表的时候却又是必须的。不管如何,能够实现筛选就行:能抓住老鼠的就是好猫!
至于为什么在报表中一定要使用ksqlAction,是因为ksqlAction是在服务器端直接展现数据,比bizQuery效率高得多!一旦数据量大,bizQuery生成报表消耗的时间可长了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-12 15:18 , Processed in 0.063885 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表