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

QQ登录

只需一步,快速开始

查看: 34492|回复: 26

report组件

  [复制链接]

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2013-7-2 11:20:01 | 显示全部楼层 |阅读模式
分组报表前加序号(按分组排序)

=count(C3)
  求出 C3 单元格扩展后所有数据总量。

在写count这个单元格上加上批注
如下:
  1. v-acc:true
  2. v-group:$ALL
  3. rowspan:$PR5C3
复制代码
R3C3:group所在的单元格


设计器或运行的效果如下
设计器.png


运行时.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
 楼主| 发表于 2013-7-4 11:02:49 | 显示全部楼层
报表添加字体

报表中平台提供的字体是有限,可以自己添加需要的字体,如下操作:
1.从系统的字体目录(c:\WINDOWS\Fonts)中拷贝所需字体的ttf文件到runtime\ReportServer\WEB-INF\config\fonts目录下
2.生成ttf文件对应的xml配置文件操作如下:
  a、在命令窗口(cmd)中切换到X5版本的runtime\ReportServer\WEB-INF\config\fonts目录
  b、用java调用runtime\ReportServer\WEB-INF\lib中的fop-0.95.jar,serializer-2.7.0.jar,commons-logging-1.1.jar,commons-io-1.3.1.jar 中的org.apache.fop.fonts.apps.TTFReader
  如下:
  1. E:\x5.2.5\runtime\ReportServer\WEB-INF\config\fonts>"E:\x5.2.5\jdk\bin\java" -cp "E:\x5.2.5\runtime\ReportServer\WEB-INF\lib\fop-0.95.jar;E:\x5.2.5\runtime\ReportServer\WEB-INF\lib\serializer-2.7.0.jar;E:\x5.2.5\runtime\ReportServer\WEB-INF\lib\commons-logging-1.1.jar;E:\x5.2.5\runtime\ReportServer\WEB-INF\lib\commons-io-1.3.1.jar" org.apache.fop.fonts.apps.TTFReader fzstk.TTF  fzstk.xml
复制代码
说明:fzstk.TTF  是字体对应的ttf文件
          fzstk.xml  是需要生成的xml文件

注意:   
       1.生成的xml文件中要注意看一下<family-name>的值是否是乱码,如果是需要手动修改为和<full-name>的值一样即可
       2.需要在<subtype>节点前加上<ttc-name>节点,值和<full-name>的一样
       3. 修改runtime\ReportServer\WEB-INF\fop.xconf文件内容
   在此文件的<fonts>节点下添加需要的字体的内容
   如下:
        <!-- 方正舒体 -->
        <font metrics-url="config\fonts\FZSTK.xml" kerning="yes" embed-url="config\fonts\FZSTK.TTF">
          <font-triplet name="方正舒体" style="normal" weight="normal"/>
          <font-triplet name="FZShuTi" style="normal" weight="normal"/>
        </font>
      4.在报表相关的excel文件中设置字体,重启应用服务即可生效

添加后的加附件
ReportServer.rar (3.57 MB, 下载次数: 2058)
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
 楼主| 发表于 2013-7-2 11:26:38 | 显示全部楼层
报表中用div计算时加if条件

a、在studio中选中excel文件右键切换到资源管理器
b、在资源管理器中用记事本或者notepad++打开excel文件,然后在需要写if的地方写if
参考如下

  
  1. <Cell ss:StyleID="s44"><Data ss:Type="String">=if(s6.RUNITPRICE=0) then '0' else (s6.RUNITSINSTOCK div s6.RUNITPRICE)</Data></Cell>
复制代码

s6:reportData的id
RUNITSINSTOCK和RUNITPRICE是reportData上的字段
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
 楼主| 发表于 2013-7-2 13:49:56 | 显示全部楼层
report中设置日期可以

1、  在ksql中使用函数dateTimeToString或者dateToString
     如下:
select dateTimeToString(X5_Order.fCreateDateTime) as fCreateDateTime from X5_Order X5_Order
2、  excel中右键属性设置显示格式就可以
     参考
     http://bbs.justep.com/forum.php?mod=redirect&goto=findpost&ptid=37177&pid=164949988
     或者如下设置
    设计器.png




运行时.png
     
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
 楼主| 发表于 2013-7-2 13:56:45 | 显示全部楼层
动态设置打印纸张大小

可以在报表功能的model的onload事件中加如下代码实现
  1. justep.xbl("report1")._config.page.paperType = "B5";
  2. justep.xbl("report1")._config.page.pageWidth = "182mm";
  3. justep.xbl("report1")._config.page.pageHeight = "257mm";
复制代码

点评

我看不到onload事件呢  发表于 2013-8-19 15:55
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
发表于 2013-8-7 16:39:43 | 显示全部楼层

用报表打印当前行数据

本帖最后由 liangyongfei 于 2013-8-7 17:33 编辑

1,:
首先在项目的logic/action目录下的kjcgjl.action.m文件中添加一个reportAction,点击‘选择’,选择ksqlQueryProcedure,点击‘生成’,如图
1.jpg 2.jpg
然后在第三个参数设置dataModel的值,选择对应项目的data,如图:
3.jpg
然后设置第一个参数ksql的值,添加关系为主表信息,确定。如图:
5.jpg
where 条件中设置如图:
6.jpg
ksql源码为:
select KJ_Reward.*
    from KJ_Reward KJ_Reward
    where KJ_Reward = :a
:a 表示可以之后赋值,根据条件进行过滤。

2:
之后在process目录下流程建模,引入上边的reportAction

3:界面建模
拖入一个reportData,设置它的source为:reportAction。如图:

8.jpg 7.jpg
在w文件中拖入一个report报表,注意:auto-load:false
宽度高度设置为0,则在浏览器中得以隐藏,右击进入里边设置需要打印数据和格式,卡片报表注意合并列,如图:
9.jpg

在w文件中拖入一个trigger,实现打印预览的功能,在单击事件中写以下代码:

//得到当前选择行的ID
var id = justep.xbl('dataMain').getID();
//给上边的where条件赋值,使得ksql完整
justep.xbl('ds1').setStringVar('a', id);
//刷新报表数据。
justep.xbl('report1').refresh();
//显示报表预览效果
  justep.xbl('report1').preview();

单击打印则成功预览


qq:1912779713
WeX5教程--WeX5下载

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
发表于 2013-8-19 15:53:25 | 显示全部楼层
jishuang 发表于 2013-7-2 13:56
动态设置打印纸张大小

可以在报表功能的onload事件中加如下代码实现

我怎么看不到onload事件呢?

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
发表于 2013-8-19 15:54:41 | 显示全部楼层
jishuang 发表于 2013-7-2 13:56
动态设置打印纸张大小

可以在报表功能的onload事件中加如下代码实现

我怎么看不到onload事件呢
发表于 2013-9-3 15:19:23 | 显示全部楼层

根据时间查询生成报表

本帖最后由 liangyongfei 于 2013-9-3 17:17 编辑

我在一个页面中添加了一个报表组件,两个设置为时间input框,一个按钮,当点击按钮时会根据时间生成不同的报表记录
制作过程如下:
1,在项目的logic/action目录下打开.action.m的文件,然后添加一个新的Action,procedure选择ksqlQueryProcedure,如图:
OOE[4XHY5)ZEB9}[8H9RJ2H.jpg
然后设置第三行 dataModel的值选择为该项目的data
XYC275CL9N7)})7LRI_09HU.jpg
再设置第一行的ksql语句,
_8D2F4}_C%WAXK~@SST@(%2.jpg
在where条件中写上预定义的条件,如图:

PY%IBG9ZMVGXK1W$H~4_GG0.jpg

源码为:
  1. select MY_BBGLRQ.*
  2.     from MY_BBGLRQ MY_BBGLRQ
  3.     where MY_BBGLRQ.fSJ >= :a AND MY_BBGLRQ.fSJ <= :b
复制代码
2,在process下的  .process.m文件中的对应显示报表的页面添加刚刚定义的Action。
3,
在w页面中添加一个reportData,设置source属性为自己定义的那个Action,
添加一个report组件,自己设置其显示样式,auto-load设为false.
添加一个静态data组件,并且在columns属性添加两个列,startTime和endTime,并且在data上右击设置编辑规则,type为DataTime(根据自己的日期格式定义),最好设置必填,因为两个日期必须都要有值,否则Ksql语句的条件不能正常编译
T6O1MC{405()~V}N3D6~ND4.jpg 3J137S%YPTO16L3LM2JZ@ZD.jpg

添加两个input组件,并且分别关联到静态data的两个列上
添加一个按钮,在点击事件中写如下代码:
  1. mainActivity.trigger1Click = function(event){
  2. //静态data
  3.         var data1 = justep.xbl('data1');
  4. //reportData
  5.         var reportDate = justep.xbl('ds1');
  6. //得到开始时间
  7.         if(data1.getValue('startTime').trim() != ''){
  8.                 var d1 = data1.getValue('startTime');
  9.                 d1 = d1.substr(0, 22);
  10.                 d1 = d1.replace("T", " ");
  11.                 reportDate.setStringVar('a', d1);
  12.         }
  13. //得到结束时间
  14.         if(data1.getValue('endTime').trim() != ''){
  15.                 var d2 = data1.getValue('endTime');
  16.                 d2 = d2.substr(0, 22);
  17.                 d2 = d2.replace("T", " ");
  18.                 reportDate.setStringVar('b', d2);
  19.                
  20.         }
  21. //刷新报表
  22.         justep.xbl('report1').refresh();
  23. };
复制代码
点击查询即可
JXT{QJ49[ZMBM4K3AOOM_GU.jpg

点评

IE不支持.trim() ,用x5自带jquery的.trim()吧  发表于 2014-7-15 16:17
qq:1912779713
WeX5教程--WeX5下载

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
 楼主| 发表于 2013-11-27 13:20:54 | 显示全部楼层
分组报表组内加序号
=count(D5)
  求出 D5 单元格扩展后所有数据总量(select所在的单元格)。

在写count这个单元格上加上批注
如下:
  1. v-acc:true
  2. v-group:$PR5C2
复制代码
R5C2:group所在的单元格

设计器或运行的效果如下
5.png

6.png

远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-11-25 00:26 , Processed in 0.080416 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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