[英]Sorting Cross-Tab columns in Crystal Reports with string datatype
[英]Sorting Cross-Tab columns in Crystal Reports
我一直在一個 Crystal Reports 項目中工作,在該項目中我必須按月顯示按列分組的值的總和。
我必須從參數中的指定日期開始處理一年的范圍。 所以我使用了交叉表,按@MONTH_DISPLAY 的列分組,定義為:month({ASIENTOI.DATE})。 重要的事實是,我必須按最早的月份到一年對列進行排序。 這意味着:如果用戶將日期設置為 10-07-12,我必須顯示這樣排序的列:七月 (2012) - ... - 六月 (2013)。
問題是 Crystal Reports 設置的范圍是這樣的:Jan (2013) - ... - June (2013) - July (2012) - ... - December (2012)。
我就是找不到修改排序的方法。
通過設計器對交叉表列進行排序的唯一方法是在降序或升序之間進行選擇,這意味着水晶報表將按字母順序對您的字段進行排序。
例如,一種可能的解決方法是在數據源中要排序的字符串之前放置帶下划線的數字(如 01_July (2012)、02_August (2012)...13_June (2013))並使用升序,然后到隱藏數字,進入“交叉表專家”部分,然后在交叉表選項卡上的列下選擇“組選項”(對不起,我只有意大利語)
並在選項選項卡上選擇以下選項
單擊公式按鈕並使用該功能
Right(yourField,Length(yourField)-3)
排除前綴,因此交叉表列上不會有“01_July (2012)”,而是“July (2012)”。 這應該可以解決問題
另一個有用的解決方法是。
創建一個新公式column1
= ToText({yourField}, "yyyy") + '-' + ToText({yourField},"MM")
。 將此字段用作交叉表列。
現在您的交叉表列將被排序為
2020-01 | 2020-02 | 2020-03 |...
現在交叉表專家> 列> 組選項> 選項卡:選項> ✓ 自定義組名稱字段> ✓ 使用公式作為組名稱。
添加Left({@column1}, 5) & MonthName(ToNumber(Right({@column1}, 2)),True)
因此最終結果
2020-Jan | 2020-Feb | 2020-Mar |...
根據月份日期對列進行排序,但按月份名稱打印!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.