2.5.2. 报表
通过脚本设置报表SQL数据源
位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
---|---|---|---|
报表->基本->sql数据源->数据源sql脚本 | 报表打开时触发 | WebUserCurrentDocument | 类型:String含义:sql查询语句 |
示例代码:
//获取的是查询条件,组合成SQL数据源
(function () {
var doc = getCurrentDocument();
var ProjectName = doc.getItemValueAsString("S_ProjectName");
var ProjectCode = doc.getItemValueAsString("S_ProjectCode");
var ProjectPhase = doc.getItemValueAsString("S_ProjectPhase");
var sql = "select t.* from(select domainid, domainid as id ,item_selectplatform, item_platform,item_projectname , item_projectcode, item_ProjectPhase,item_ProductionPlace,count(*) as item_count from tlk_sample_vehicle_plan s where 1 = 1 group by domainid, item_selectplatform, item_platform,item_projectname, item_projectcode, item_projectphase,item_ProductionPlace) t where 1=1";
if (isNotNull(ProjectName)) {
sql += " and item_projectname like '%" + ProjectName + "%'"
}
if (isNotNull(ProjectCode)) {
sql += " and item_projectcode like '%" + ProjectCode + "%'"
}
if (isNotNull(ProjectPhase)) {
sql += " and item_ProjectPhase like '%" + ProjectPhase + "%'"
}
return sql;
})()
通过脚本设置报表存储过程数据源
位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
---|---|---|---|
报表->基本->sql数据源->存储过程数据源 | 报表打开时触发 | WebUserCurrentDocument | 类型:string含义:存储过程查询语句 |
示例代码:
通过脚本设置报表自定义数据源
位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
---|---|---|---|
报表->基本->sql数据源->自定义数据源 | 报表打开时触发 | CurrentDocument,WebUser | 类型:DRDataSource对象含义:自定义数据源 |
示例代码:
//通过脚本自定义报表数据源
(function () {
var DRDataSource = Packages.cn.myapps.runtime.report.model.DRDataSource; //系统自定义类
var BigDecimal = Packages.java.math.BigDecimal;
var Double = Packages.java.lang.Double;
var dataSource = new DRDataSource("A", "B", "C", "D", "E"); //新建一个类的实例
dataSource.add("chain", new Double(350), new Double(300), new Double(200), new Double(200));
dataSource.add("abel", new Double(300), new Double(500), new Double(200), new Double(600));
dataSource.add("quan", new Double(450), new Double(250), new Double(300), new Double(200));
return dataSource; //返回实例
})()
通过脚本设置报表内容
位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
---|---|---|---|
报表->内容->脚本 | 报表打开时触发 | WebUserCurrentDocument | 类型:Report对象含义:返回报表内容 |
示例代码:
//通过脚本定义打印图表
(function () {
var FontBuilder = Packages.net.sf.dynamicreports.report.builder.style.FontBuilder;//系统自定义类
var DynamicReports = Packages.net.sf.dynamicreports.report.builder.DynamicReports;
var Templates = Packages.cn.myapps.report.examples.Templates;
var TextColumnBuilder = Packages.net.sf.dynamicreports.report.builder.column.TextColumnBuilder;
var DRDataSource = Packages.net.sf.dynamicreports.report.datasource.DRDataSource;
var DRException = Packages.net.sf.dynamicreports.report.exception.DRException;
var JRDataSource = Packages.net.sf.jasperreports.engine.JRDataSource;
var BigDecimal = Packages.java.math.BigDecimal;
var Integer = Packages.java.lang.Integer;
function createDataSource() {
var dataSource = new DRDataSource("item", "quantity", "unitprice");//新建一个类的实例
dataSource.add("Tablet", new Integer(350), new BigDecimal(300));
dataSource.add("Laptop", new Integer(300), new BigDecimal(500));
dataSource.add("Smartphone", new Integer(450), new BigDecimal(250));
return dataSource;
}
var boldFont = DynamicReports.stl.fontArialBold().setFontSize(12);
var itemColumn = DynamicReports.col.column("Item", "item", DynamicReports.type.stringType());
var quantityColumn = DynamicReports.col.column("Quantity", "quantity", DynamicReports.type.integerType());
var unitPriceColumn = DynamicReports.col.column("Unit price", "unitprice", DynamicReports.type.bigDecimalType());
return DynamicReports.report().setTemplate(Templates.reportTemplate)
.columns(itemColumn, quantityColumn, unitPriceColumn)
.title(Templates.createTitleComponent("Bar3DChart"))
.summary(DynamicReports.cht.bar3DChart()
.setTitle("Bar 3D chart")
.setTitleFont(boldFont)
.setCategory(itemColumn)
.series(DynamicReports.cht.serie(quantityColumn), DynamicReports.cht.serie(unitPriceColumn))
.setCategoryAxisFormat(DynamicReports.cht.axisFormat().setLabel("Item")))
.pageFooter(Templates.footerComponent)
.setDataSource(createDataSource());
})()
文档更新时间: 2022-11-02 13:43 作者:admin