帆软报表开发常用公式
前言
记录常用公式与js
提示:以下是本篇文章正文内容,下面案例可供参考
一、常用公式
--1.参数为空选择全部
${if(PRO_ID =="总体情况","","and FILL_PRO_COST_DETAILS.PRO_ID= ('" + PRO_ID + "')")}
--2.在公式编辑窗口调用sql
if($TREE_COST="总成本","总成本",SQL("LINKA","SELECT ACCLEV FROM FILL_DIM_ACCOUNT WHERE ACCCODE = '"+$TREE_COST+"'",1,1))
--3.利用存储过程在提交时同步表格内容
设置web属性为填报成功
contentPane.setCellValue(3,0,"已经填报成功")//填报成功给第四列第三行单元格赋值为“已经填报成功”
contentPane.setCellValue(3,0,"")//给第四列第三行单元格赋值为“”
IF(LEN(d1)==0,"",sql("ZJBI","exec dbo.PRO_COST_FOLLOW '"+year+"','"+PRO_NAME+"'",1))
//第四列第三行单元格为空则执行多参数的存储过程
--4.在报表页面计算年累计值
一个行列式表格在单元格拓展,本质上是一个行号为科目名称,列号为月份的数组。以下公式的含义是:当前单元格的取值为对 E6 单元格求和,其中筛选列号小于等于当前月份的、且行号与数组当前行号相等的元素。单元格实际情况见下图1.
sum(E6[!0;!0]{right(E4, 2) * 1 <= month(now()) && C6 = $C6})
--5.数据集中引用帆软公式的案例
表FILL_DIM_ACCOUNT中有列 ACCNAME ACCCODE ACCLEV,给${CANSHU}赋值 NAME CODE LEV 可以查出对应列。也就是不含引号的文本参数在数据集中可用于数据拼接,用于将 1-12 月份直接建表在数据库的极端情况。-_-
select
ACC${CANSHU}
from dbo.FILL_DIM_ACCOUNT
--6.cpt 文件填报刷新(继承参数)
contentPane.refreshAllSheets()
--7.富文本编辑公式的引用方式
${if(len(a3)==0,a5,a3)}
图1
二、相关JS
--1.1frm文件标签保留两位小数js
FR.contentFormat(this.value, '#.##%')--规范图表标签值为保留两位小数
--1.2frm文件标签引用单元格进行计算-瀑布图
function(){ return this.category+' '+FR.contentFormat(Math.round(this.value),'#,##0.00')+'万元 '+'占比 '+ FR.contentFormat(this.value / _g().getWidgetByName("background7").getCellValue("g15"), '#.##%');}
--2.cpt/frm文件在决策平台内跳转
window.parent.FS.tabPane.addItem({title:"项目合同信息填报",src:"${servletURL}?viewlet=DIM_BASE/Fill_Opt_Project_FinishedJob_Only.cpt&op=write&CONTRACT_NAME="+CONTRACT_NAME+"&pro_id="+pro_id});
//title表示新打开页面的标题
//js参数定义框引用报表参数,js代码框引用js参数定义框的参数,在“”外部通过 + 拼接
三、其他注意事项
1.涉及到复杂拓展关系的填报表 报表填报属性对更新人、更新日期的设置要写成公式而不能引用单元格。可能导致最后一行删除失效(推测前端单元格的取值不会被送到报表填报属性做校验或主键校验)
2.SqlSever在帆软提交数据的应用中 主键自增不可用,uuid()。在提交时uuid列要在报表上存在并且设置新值(报表填报属性对应单元格不可为公式)
if(len($$$)=0,uuid(),$$$)
3.若不适用唯一主键(自增或uuid) 填报时维度列不可更改,否则会导致修改反而数据行增加。
4.隐藏行列使用条件属性
5.以表格为单位纵向拓展的填报表涉及到复杂的主子表关系时,多表查看与多表填报功能不能并存(插入行锁定不了拓展后表格位置,会默认添加在最后的表格中)
版权声明:本文为Jooohn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。