開發者在使用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框架程序設計視頻教程
From:http://tw.wingwit.com/Article/program/PB/201311/24612.html