一、截取函数righr()函数,right函数语法:right(text,num_chars)其中text表示要截取的字符串num_chars表示截取的字符的数量
二、脚本定义文本里的字体格式:
var gf = new GFont("Arial", BOLD, 50);
var loc = new Locator([], OBJECT, DETAIL);
var col=new Color(java.awt.Color.RED)
文本1.setForeground(loc,col)
文本1.setFont(loc, gf)
三、脚本定义绑定字段的字体格式
var gf = new GFont("Arial", BOLD, 20);
var loc = new Locator(["product"], CELL, DETAIL); //product为绑定的字段名
表1.setFont(loc, gf);
四、报错error ,cannot call method split of null,是因为文本的值是空的 就会报这个错,脚本修改下加个判断条件if(a!=null),例如:
var a=文本参数1.value
if(a!=null){
param['a']=a.split(",")}
五、隐藏标记脚本:图表1.hiddenTip=true
六、市场分布的比例值大于合计值的比例,则红色高亮
1、新建一个文本,绑定要用的数列
2. 报表空白处右键脚本:
getViewData("文本1")
param['a']=文本1.data
七、参数值 参数名 用法例如:param['week']=param['_THIS_YEAR_WEEK_']
blank string _BLANK_
last year _LAST_YEAR_
this year _THIS_YEAR_
next year _NEXT_YEAR_
last quarter _LAST_QUARTER_
this quarter _THIS_QUARTER_
next quarter _NEXT_QUARTER_
last month _LAST_MONTH_
this month _THIS_MONTH_
next month _NEXT_MONTH_
last week _LAST_WEEK_
this week _THIS_WEEK_
next week _NEXT_WEEK_
last day _LAST_DAY_
this day _THIS_DAY_
next day _NEXT_DAY_
last quarter group _LAST_YEAR_QUARTER_
this quarter group _THIS_YEAR_QUARTER_
next quarter group _NEXT_YEAR_QUARTER_
last month group _LAST_YEAR_MONTH_
this month group _THIS_YEAR_MONTH_
next month group _NEXT_YEAR_MONTH_
last week group _LAST_YEAR_WEEK_
this week group _THIS_YEAR_WEEK_
next week group _NEXT_YEAR_WEEK_
last day group _LAST_FULL_DAY_
this day group _THIS_FULL_DAY_
next day group _NEXT_FULL_DAY_
last day of week _LAST_WEEKDAY_
this day of week _THIS_WEEKDAY_
next day of week _NEXT_WEEKDAY_
current locale _CURRENT_LOCALE_
八、细节表达式dateGap(col['DATE'],now(),"year");现在日期和所需要的列日期相差年数,year可以改成month代表相差月数
九、细节表达式param['_THIS_YEAR_']-col['年']可以用这个建细节表达式,这个param['_THIS_YEAR_']表示当前的年份,col['年']这个代表您那个出生年份,但是您的字段是时间戳,得变成年份才可以
十、substring(col['DATE'],0,4)截取日期
十一、参数参与sql过滤的sql语句
例一:
select * from COFFEE_CHAIN where 1=1
例二:
select a.customerlotno,a.customertypename, TRIM(a.productionorderno) DD,
max(a.actiondate) as DT,sum(case when actionid=6 then 1 else 0 end) as ZQ,
sum(case when actionid=1 then 1 else 0 end) as WQ
from finishedproductlog a
where 1=1
and ?{b} and
a.actionid != 3 and a.actionid !=15
and (a.productionorderno like 'AC0%' OR a.productionorderno LIKE 'AC1%' OR a.productionorderno LIKE 'AC4%')
AND a.actiondate >=TRUNC(SYSDATE)-90
group by a.productionorderno,a.customerlotno,a.customertypename
例三:
select * from COFFEE_CHAIN
例四:
select * from COFFEE_CHAIN where 1=1
十三、
不允许下拉参数自由选择:
if(下拉参数1.getSelectedObjects()[0]=='1'){
下拉参数2.setSelectedObjects(['3'],STRING);
}else if(下拉参数1.getSelectedObjects()[0]=='2'){
下拉参数2.setSelectedObjects(['4'],STRING);
}
允许第二个下拉参数自由选择:
var a; //设置一个变量,若是脚本不等于这个变量就按下边的两个if else执行
if(下拉参数1.getSelectedObjects()[0]!=a){
if(下拉参数1.getSelectedObjects()[0]=='1'){
下拉参数2.setSelectedObjects(['3'],STRING);
a=下拉参数1.getSelectedObjects()[0]; 脚本等于这个变量了,中间的两个if else 无效,2个下拉参数自由选择。
}else if(下拉参数1.getSelectedObjects()[0]=='2'){
下拉参数2.setSelectedObjects(['4'],STRING);
a=下拉参数1.getSelectedObjects()[0];
}}
十四、参数组件、过滤组件默认全选:
装载时运行:
var a=getData('列表过滤1');//列表过滤1是列表过滤的名字,getData()可以获取列表过滤中绑定的值,以grid的形式返回。
var Vsize=a.size();//获取grid的行数
var arr1=new Array();
for(i=Vsize-1;i>0;i--){
arr1[i]=a.get(i,0);
}
getViewData("列表过滤1");
列表过滤1.setSelectedObjects(arr1, STRING);
如果设置脚本后,组件右键清空、反选不可用,需要额外添加一句脚本:
列表参数1.pageSelection = false;//需要设置pageSelection为false,运行一次后可将该句脚本可删除,如果不删除建议放到脚本第一行
十五、文本脚本
Var y1=year(now());
Var m1=month(now());
Var d1=dayr(now());
文本1.data=’截止’+y1+’年’+m1+’月’+d1+’日,在网上任务数总计’+在网.data+’项,所选季度新增’+新增.Data+’项。’;
getViewData(“新增”)//新增和在网都是组件名,获取实时数据
十六、parseDate和formatDate的区别,引申的还有dateAdd和dateGap的用法,datePart返回日期指定的field的值,例如返回的日期是一年的第几天。日期时间是个大类包括时间、日期、时间戳。同比环比必须用时间戳来实现看连接
https://www.yonghongtech.com/webbbs/forum.php?mod=viewthread&fid=44&tid=1914&highlight=%E8%84%9A%E6%9C%AC
看截图
十七、更换y轴字段通过刷新组件。
var a = toString(图表1.binding.getYCol(0));//转换成字符串
var col1 = new ChartDimCol(new BCol("MARKET",STRING,false));
if(a.indexOf('Sum_SALES')==-1){ //使用indexOf的用法获取字符串中第一个出现的字段,-1代表没出现。
var col = ChartMeasureCol(SUM,new BCol("SALES",DOUBLE,false),null);
图表1.binding.clearYCols();
图表1.binding.addYCol(col);
}else {
var col = ChartMeasureCol(SUM,new BCol("PROFIT",DOUBLE,false),null);
图表1.binding.clearYCols();
图表1.binding.addYCol(col);
}
var c = getData('图表1').get(1,0);//获取现在柱状图绑定的
var b=getData('表1');//获取表1绑定的数据
for(var i=0;i if(c==b.get(i,0)){ if(i==b.size()-1){//当前图表1上的数据是表1的最后一个时 param['a']=b.get(1,0);//让图表1绑定表1的第一个数据 }else{ param['a']=b.get(i+1,0);//让图表1绑定表1的后一个数据 } } } 十九、使用单元格尺寸隐藏表格某列回复方法 1、普通表 var loc = new Locator(["省份"], COL, DETAIL); 表1.setColWidth(loc,200);//200为像素 2、自由表 var loc = new Locator(['c-i'],COL,DETAIL);// 第一列 i 取 0,第 二列为 1,依次类推 自由式表格1.setColWidth(loc,200); 3、交叉表 var loc=new Locator(["市场分布","Sum_总成本"],COL,DETAIL) //市场分布为列表头字段 交叉表1.setColWidth(loc,20); 二十、文本拼接带有数据的,如何保留位数和单位 getViewData("文本10") 文本15.data='今日:'+(文本10.data/100000000).toFixed(2)+'亿' 保留2位小数,单位为亿 文本2.data = "hahaha"+formatNumber(getViewData("文本1"),"#,##0.##%");带百分号 二十一、将自由表的列循环表示 var a=getViewData("自由式表格1") //获取自有表格1数据 var b=a.size() //定义行数变量 var d = 0; for(k=4;k<25;k=k+4){ //循环列数,每隔四列会出现审核效果这列 var c=new Array() //创建数组 for(i=0;i<b;i++){ //循环行数 c[i-2]=a.get(i,k) //生成数组,c[i-2]代表从第三行开始生成数组,因为前两行是表头 } for(var j = 0;j<c.length;j++){ //数组循环相加 d = d+c[j]; } } if(d==0){ //如果相加等于0则正常否则异常 文本2.data="环节审核正常" }else{ 文本2.data="环节审核不正常" } //debug("d="+d) 效果图: 二十二、1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.floor(5/2) 二十三、提交组件背景颜色和字体颜色 var color=new Color(0xDD7D47);//橙色 二十四、判断列表参数是否全选: if(列表参数1.getObjects().length==列表参数1.getSelectedObjects().length){ 全选 }else{ 不全选 }//length==0可以判断为不选 判断列表过滤是否全选 if((getData('列表过滤1').size()-1) == 列表过滤1.getSelectedObjects().length){ 二十五、下拉参数设置日期默认值 var a = now() //debug(a) var b=formatDate(a,'yyyyMM') //debug(b) getViewData("下拉参数1") 下拉参数1.setSelectedObjects([b],STRING) 二十六、脚本执行顺序问题可以使用cleardata("biao")
var color1=new Color(0xFFFFFF);//白色
var color2=new Color(0x000000);//黑色
var loc=new Locator([],OBJECT,DETAIL);
提交1.setBackground(loc, color);
提交1.setForeground(loc, color1);
debug('1111111')
}//-1是去掉标题头