我從來沒有使用Telerik,因此以下建議僅適用於Crystal。
可以在至少兩種不同的方式有條件地隱藏交叉表水晶:
- 通過格式化對話框(不交叉表專家) - 在交叉表上單擊鼠標右鍵,選擇格式化交叉Tab ...從菜單中,按格式編輯器對話框的公共選項卡中抑制旁邊的
x-2
按鈕,然後輸入適當的公式(類似{?crosstab1s1}="n/a"
)。
- 通過將交叉在自己的子部分,使子部分條件抑制 - 右鍵單擊灰色區域在相關子節的報表設計設計選項卡中的報表佈局區域的左側,選擇截面專家...在截面專家對話框的公共選項卡中按下抑制(無向下拉伸)旁邊的
x-2
按鈕,然後輸入適當的公式。
我建議使用這兩種方法中的後者 - 抑制交叉表本身仍然會將空白處留在要顯示的位置。
你也可以把每一個交叉表在自己的報表和抑制那些條件 - 然而,這引入了似乎沒有必要在這一點上覆雜的級別。
其他一些意見:
- 水晶的參數比什麼可以在ASP實現靈活的要少得多,所以如果可能的話做ASP的所有參數選擇和參數傳遞給水晶。
- 晶體的空值處理有些尷尬,因此傳遞一個指示不需要交叉表的特定值,而不是將參數評估爲空。目前
- 您的交叉參數設置爲交叉製表1和2交叉表,每個或2節1和3。目前尚不清楚這是否意味着應達到總共六個交叉表,或只有兩個:
- 如果是前者,那麼它是不明確的行分組,列分組和總結領域如何被指定。
- 如果是後者,那麼我建議將第1,2和3部分重命名爲Row Grouping,Column Grouping和Summarized Field(因爲我認爲這就是它們要表示的內容)。
- 您目前有顯示組總計和顯示百分比選項 - 這些選項似乎適用於交叉表。這些選項可以在Crystal中指定,但不能在報表設計器中有條件地指定。
- 如果您能夠訪問Crystal API,應該可以在運行時以編程方式設置這些選項。
- 否則,如果要爲每個交叉表包含這兩個選項,唯一的選擇是將每個交叉表的四個版本添加到報表中,每個選項都根據所選的選項進行有條件抑制。 (我不會推薦這種方法,除非你別無選擇。)
- 晶體不能處理動態數據結構(即設計報告時必須知道數據結構),所以我建議生成結果基於指定的參數的SQL存儲過程中設置,具有結構是這樣的:
Dataset structure
crosstab1Row
crosstab1Column
crosstab1SumValue
crosstab2Row
crosstab2Column
crosstab2SumValue
reportColumn1
reportColumn2
reportColumn3
reportColumn4
reportColumn5
感謝您的回覆,我要試試這個,當我今晚回家。 – user973671 2012-02-27 14:51:01
這是什麼意思,將交叉表放在其自己的子部分中,並使子部分有條件地被抑制。通過分節,你的意思是像報告標題b?謝謝 – user973671 2012-02-27 18:42:31
@ user973671:確實如此 - 如果您打算將交叉表放入報表頁腳,請將報表頁腳部分分爲兩部分,並將交叉表放入其中一部分。 – 2012-02-27 18:57:04