开发者在使用Crosstab数据窗口时会碰到一个问题如果开发者想对其中的列内容进行处理时不能用通用的方法得到Crosstab中的列名使该操作无法运行这是因为Crosstab数据窗口中行列定义不同于其它的数据窗口而且其列数是变化的因此要得到Crosstab中的列名必须采用其它办法
下面以一个统计各工资段作者人数按男女性别分别统计的Crosstab数据窗口静态风格为例探讨得到Crosstab中的列名
选择显示风格定义数据源后选择表auths中的列author_codesalary和sex;用鼠标拖动Source Data列表框中的sex列到Columns列表框中使sex列成为数据窗口的纵向统计列用鼠标拖动Source Data列表框中的salary列到Rows列表框中使salary列成为数据窗口的横向统计列将salary改为int(salary/)*;用鼠标拖动Source Data列表框中的author_code列到列表框中使count(author_code for Crosstab)列成为数据窗口的统计值此时出现CrossTab Definition对话框
单击OK按钮数据窗口显示
Crosstab数据窗口中的列名
Crosstab显示风格有静态和动态如采用静态风格则在CrossTab Definition对话框中取消选中Rebuild columns at runtime复选框数据窗口的列名在Detail栏中有一定规律可循
第一栏的列名分两种情况一CrossTab Definition对话框中的所选的Rows的列名为表中的字段如Rows=salary则第一栏的列名为salary;二如CrossTab Definition对话框中的所选的Rows的列名为计算表达式如int(salary/)*则第一栏的列名均为row_column
其余各栏依次为所选Value的列名的排列如Value为author_Code则各栏依次author_Codeauthor_code_ author_code_…… 栏的数目根据所选的Columns所能产生的数目而定如Columns=sex则只有两栏author_Codeauthor_code_;
最后一列的列名为grand_count_+所选Value名如在此例中为grand_count_author_code 如采用动态风格则在CrossTab Definition对话框中选中Rebuild columns at runtime复选框数据窗口的列名在Detail栏中(图略)第一栏和最后一列的列名情况类似静态风格所述也就不雷同了中间各栏的列名情况与静态风格有所不同依次为所选rows列名的排列如rows为salary在此例中各栏依次为salarysalary_;
这样问题就迎韧而解了在得到Crosstab中的列名之后也就能自由地对其中的行列内容进行处理通过上面的介绍读者其实也能感觉到计算机中许多不太容易实现的功能只要好好分析仔细琢磨多试验几次一般还是能找到有效的解决办法的
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程