Ureport2做同比報表

2022-10-11 02:42:11 字數 1783 閱讀 3048

報表模版如下圖所示:

d2處公式:

c2 - c2[a2:-1]
在上面的模版當中,d2 單元格中首先取到與其同行的 c2 單元格的值,然後利用單元格坐格,先取到當前 d2 單元格所在行的 a2 單元格的上一條 a2 單元格記錄(-1表示座標上移),然後再取這個 a2 下對應的 c2 單元格,但由於其下 c2 單元格還是有多個,所以這裡加了個條件b2==$b2,這裡的第乙個 b2 表示當前單元格所在行對應的 b2 的值,$b2 表示座標定位後(上一條a2單元格) c2 單元格對應的 b2 單元格的值,條件就是他們倆要相等,實際上就是月份相等,這樣就達到了我們要實現的同比的目的,執行後的效果如下:

ps:關於b2==$b2的理解:

在上例中可以理解b2為

$b2可以理解為:

:對於c2存在的多個值加了額外條件,即還要滿足上一行的b2的值需要跟下一行b2的值相等。取b2行值也相等的c2行的值。

關於$b2在ureport2當中,在單元格名稱前加$符號,表示取相對於目標單元格的單元格的值,多用在條件比較當中,比如上面的c2[a2:-1],這裡的$b2就是指取到的c2單元格對應的b2單元格的值。

在上面的例子中,第乙個分組2000下,所有的同比值都為0,這是因為這個分組下不存在 a2:-1 這個座標,沒法上移,所以系統預設取了當前記錄自身,所以計算後的值都是0。如果我們不希望顯示0,那麼可以加個 if 條件判斷表示式,如果當前位於第乙個分組,就輸出空字串,否則輸出實際計算後的值,修改後的報表模版如下圖所示:

d2 單元格對應的表達內容如下圖所示:

if(&a2==1)else

}

執行後的效果如下圖所示:

在上面的例子中,我們使用了 if 判斷表示式,當然你也可以換成三元表示式判斷或 case 判斷,在這個 if 判斷中,首先我們判斷的是 &a2==1 是否成立,這裡的 &a2 指的是相對於當前單元格 a2 單元格展開後的序號,在 ureport2 中,可以採用「&單元格名稱」的方式標記某個單元格展開後的序號,需要注意的是,使用「&單元格名稱」來標記目標單元格展開後的序號時,當前單元格必須是目標單元格的子格或間接子格;比如,在上面的例子中,使用 &a2 的單元格是 d2,d2 是 a2 單元格的間接子格,這樣就可以正確取到 a2 展開後的序號值。

關於&標記的使用

注意:上述公式中在減號前後存在空格,其中減號前面的空格不可省略,否則表示式報錯,減號後面空格可以省略,不過不建議省略。

2 同餘運算

同餘 同餘方程 特性1 同餘 如果a和b除以m的餘數相同,就說a和b關於模m同餘,記作a b mod m a b mod m 等價於m整除 a b,即 m a b 也即a m t b。2 同餘方程 例如ax y mod m 就稱為同餘方程。基於同餘的定義,ax mt y ax mt y 就轉換成了二...

Linux parted同e2label的妙用

原貼 http www.linuxdiyf.com bbs thread 37989 1 1.html 用過pq magic 工具調整 分割槽大小的人可能不少,但知道 linux也可以調整 分割槽的人恐怕就不多了。linux有個parted 工具可以調整 分割槽,但它的使用有些限制。如果想增大乙個 ...

如何做售前交流 從什麼叫同塵談起

最近群人數猛增,每天都有都有新朋友加入。我原來的網名叫庖丁解牛,是引用莊子養生主中的典故,取得是 以無厚入有間,恢恢乎,其於游刃必有餘地矣 的含義。然後群裡的很多朋友都認識這個名字了,基本稱呼老牛。後來我改名了,於是新來的人都聽說過,但是找不見老牛這人了。呵呵,現在我在群裡叫同塵,取的是道德經裡 挫...