我从来没有使用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