2012-02-26 54 views
0

我一直在尝试使用动态交叉选项卡和列创建带有小运气的数据透视表。我需要它的功能就像这样,顶部有动态交叉标签,左侧有动态列。下拉列表中的动态交叉选项卡

1 http://img689.imageshack.us/img689/1812/crosstabs.jpg

我也只需要选择的列和跨接片被显示。例如,如果只选择了一列和一个交叉标签,则它们应该是唯一显示的列。我已经尝试了一个SQL数据透视表和一个网格,但是我无法使用堆叠在顶部的两列类别正确地格式化它。我也尝试过水晶报告,但没有选择时无法隐藏交叉标签。我尝试了Telerik报告控制,但无法通过下拉菜单动态生成交叉表。我正在寻找关于如何解决这个问题的任何建议。此外,如果有人创造了这样的东西或有一个想法如何,请分享。 在此先感谢。

回答

0

我从来没有使用Telerik,因此以下建议仅适用于Crystal。

可以在至少两种不同的方式有条件地隐藏交叉表水晶:

  1. 通过格式化对话框(交叉表专家) - 在交叉表上单击鼠标右键,选择格式化交叉Tab ...从菜单中,按格式编辑器对话框的公共选项卡中抑制旁边的x-2按钮,然后输入适当的公式(类似{?crosstab1s1}="n/a")。
  2. 通过将交叉在自己的子部分,使子部分条件抑制 - 右键单击​​灰色区域在相关子节的报表设计设计选项卡中的报表布局区域的左侧,选择截面专家...在截面专家对话框的公共选项卡中按下抑制(无向下拉伸)旁边的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 
+0

感谢您的回复,我要试试这个,当我今晚回家。 – user973671 2012-02-27 14:51:01

+0

这是什么意思,将交叉表放在其自己的子部分中,并使子部分有条件地被抑制。通过分节,你的意思是像报告标题b?谢谢 – user973671 2012-02-27 18:42:31

+0

@ user973671:确实如此 - 如果您打算将交叉表放入报表页脚,请将报表页脚部分分为两部分,并将交叉表放入其中一部分。 – 2012-02-27 18:57:04