基础设置部分
1、连接工作目录(可以是远程服务器)
2、在打开的界面中设置具体的远程地址
3、 一个报表文件可以有多个数据集、但是数据集依附于报表文件的存在,不能跨报表共享。
开发设计部分
4、查询条件区域的字段,可以在数据源的对应 SQL 中用一对${ }包裹并引用。而且查询条件区域的字段名,不需要增加其他前缀。
当设计不同条件下生成不同的 SQL ,往往需要借助设计器内置的 if() 函数。代码示例如下:
/**
* 我们实际环境是 Oracle 数据库
* 假设我们有2个日期控件 dateEditor0 、dateEditor1
* 这里展示了如果日期控件选择了值、SQL 查询中如何用 if() 函数拼接对应的 SQL 片段
* 标准用法:if(表达式,值为true执行的部分,值为false执行的部分)
*/
SELECT * FROM my_table
WHERE 1=1
${if(len(dateEditor0)>0,
" AND TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') > '"+dateEditor0+"' ",
"")}
${if(len(dateEditor1)>0,
" AND TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') < '"+dateEditor1+"' ",
"")}
类似的还有,动态改变统计维度的报表。我们借助同一个控件、在不同值的条件下,做不同维度的汇总统计。代码示例如下:
/**
* 我们的实际环境是 Oracle 数据库
* 假设我们有一个名为 comboBox_time_dms 的下拉组件、且实际值对应:
* daily -- 按日汇总统计
* monthly -- 按月汇总统计
* yearly -- 按年汇总统计
* 这里展示的是汇总同一批字段、仅改变了汇总时间维度
*/
SELECT SUM(T1.WT_NUM) WT_NUM,
T.WKI_GROUP_CODE,
${if(len(comboBox_time_dms)==0,
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') AS IN_TIME, ",
"")}
${if(comboBox_time_dms=="daily",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') AS IN_TIME, ",
"")}
${if(comboBox_time_dms=="monthly",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm') AS IN_TIME, ",
"")}
${if(comboBox_time_dms=="yearly",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy') AS IN_TIME, ",
"")}
T1.WT_MODEL_CODE
FROM T_WIP_KEYP_INFO T
LEFT JOIN T_WIP_TRACKING T1
ON T.WKI_SN = T1.WT_SN
WHERE 1 = 1
AND T1.Q_LEVEL = 'A-'
AND T.WKI_GROUP_CODE = 'JY'
AND T.DATA_AUTH = '0001F3100000000HOWH7'
${if(len(dateEditor0)>0,
" AND TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') > '"+dateEditor0+"' ",
"")}
${if(len(dateEditor1)>0,
" AND TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd') < '"+dateEditor1+"' ",
"")}
GROUP BY T1.Q_LEVEL,
T.WKI_GROUP_CODE,
${if(len(comboBox_time_dms)==0,
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd'), ",
"")}
${if(comboBox_time_dms=="daily",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm-dd'), ",
"")}
${if(comboBox_time_dms=="monthly",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy-mm'), ",
"")}
${if(comboBox_time_dms=="yearly",
"TO_CHAR(T.WKI_IN_TIME, 'yyyy'), ",
"")}
T1.WT_MODEL_CODE
5、保存数据集后、可以在设计器端进行语句的预览。在弹出的 “数据库查询” 窗口下方,输入对应条件后点击 “查看执行SQL”、可以复制生成对应条件的 SQL 片段。
6、控件(比如下拉框)的显示值、实际值都需要进行配置。否则在报表展示界面无法在对应控件中进行选择(i.e.下拉框没有更多选项了)。具体操作,如下图所示:
7、在报表单元格中,可以直接引用查询条件的值。具体格式是 =$控件英文名 。
8、在报表单元格中,可以用 ="特定的字符串" 表示固定的值 。
系统特性部分
9、在帆软设计器的控件列表中,有专门的搜索按钮。在设计器上方的控件列表,点击更多,找到搜索按钮控件并拖拽到当前报表的条件区(设计界面的上半部)。注意:如果报表的条件区没有搜索按钮,那么报表展示界面将加载不出来数据。然后可以为各查询条件设计事件绑定、实现自动刷新等更多功能。
同样的,不论是常规报表(*.cpt)还是 决策报表(*.frm)的控件,都可以添加事件。比如在控件完成初始化后、添加 js 回调脚本,令其点击可以打开另一个报表的 url 地址。
10、决策报表的使用
决策报表可以包含多个报表控件、查询控件等内容。报表控件可以通过设置填充属性为 “图片”、达到美化决策报表外观的目的。
11、图表的设计方法(以折线图为例)
图表的数据集要成功预览 SQL 和数据才能继续制图。一般需要带条件的数据库数据集才可以成功预览。
要去掉图表的横 / 纵轴参考线,在 “样式-背景-绘图区” 属性中、将网格线的横纵线均设置为 “透明” 即可。
未去掉网格线的效果,如下图所示:
去掉网格线后的效果,如下图所示:
此外,还可以设置在可视化图表中打开超链接(外部网址或者网络报表等)。具体操作如下图所示:
运维部分
99、当预览报表失败、请到决策系统后台 “管理系统-注册管理” 检查证书是否过期。
先补充这么多,有遇到问题再写一点。
(完)