如何解决BIRT 列组级别周围的交叉表边框
我觉得我错过了一些非常简单的东西,但我一生都无法弄清楚是什么。我有一个非常简单的交叉表,可以提取零件的库存数据。库存数据按仓库集分组,然后是仓库,然后是库存状态
尝试在过滤后的小组赛阶段周围放置一个或一组边框,以便轻松查看不同小组的开始和结束位置。理想情况下,我正在考虑将主组周围的黑色边框和子组/度量周围的银色边框组合在一起。这有意义吗?有可能吗?像这样:
(想象 | 是黑色, : 是银色)
Set group | SET A |
WH group | WH A : WH B : WH C |
Part No | PHYS : QUAR : PHYS : QUAR : PHYS : QUAR |
part a | 5 : 2 : 10 : 0 : 25 : 55 |
part b | 0 : 12 : 155 : 26 : 5000 : 250 |
我遇到的问题基本上是如何确定何时为每个不同的组级别放置银色边框或黑色边框?设置组很容易,因为这是一个简单的左/右黑色边框,但是对于 WH 组和它下面的状态组,我需要能够确定哪一列是每个组中的第一列并应用黑色边框左,这是组中的最后一个和黑色边框右侧,中间的所有内容都是银色
与实际度量相同,我可以根据 Set 组确定相同的第一个/最后一个度量并应用相同的边界约束吗?
我一直尝试在交叉表中的不同单元格上使用直线边框样式,但无法获得上面的输出
解决方法
对于交叉表我无能为力,因为我避免使用它们。 相反,我使用的是普通的表项和一些基于分析函数和大小写表达式的 SQL 魔法(示例来自德语 https://modern-sql.com/de/anwendung/pivot):
SELECT year,SUM(CASE WHEN month = 1 THEN revenue END) rev01,SUM(CASE WHEN month = 2 THEN revenue END) rev01
...,SUM(CASE WHEN month = 12 THEN revenue END) rev12
FROM (SELECT invoices.*,EXTRACT(YEAR FROM invoice_date) year,EXTRACT(MONTH FROM invoice_date) month
FROM invoices
) invoices
GROUP BY year
同样的原理可用于获取列标题值。
对于表格,可以使用 onCreate
事件遍历列并动态调整其左右边框(宽度、颜色等)。
// Untested!
for (var colno=0; colno<this.getColumnCount(); colno++) {
var col = this.getColumn(col);
var style = col.getStyle();
if (columnBelongsToNext(col-1)) {
style.borderLeftWidth = "0";
} else {
style.borderLeftWidth = "2px";
}
if (columnBelongsToNext(col)) {
style.borderRightWidth = "0";
} else {
style.borderRightWidth = "2px";
}
}
这里将i+1列的borderLeftXXX属性设置为与i列的borderRightXXX属性相同的值是非常重要的。 否则计算出的值可能会相互矛盾。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。