資源描述:
《用rollup進(jìn)行分類數(shù)據(jù)統(tǒng)計(二)--》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、用ROLLUP進(jìn)行分類數(shù)據(jù)統(tǒng)計(二)>> 我們介紹了mssqlserver中的rollup語句。下面開始介紹如何用datagrid結(jié)合rollup語句來進(jìn)行分類統(tǒng)計?! ∥覀円_(dá)到的效果是這樣的: 首先,應(yīng)先將數(shù)據(jù)庫中的產(chǎn)品數(shù)據(jù)按照所屬的不同的目錄列舉出來,這其中要用到一些技巧.這里先用SQL語句,從數(shù)據(jù)庫讀取product表的數(shù)據(jù),之后放到dataset的默認(rèn)datatable中去,然后檢查每一個產(chǎn)品所屬的類別,如果發(fā)現(xiàn)某一個產(chǎn)品的類別和前一條記錄中產(chǎn)品所屬的類別不一樣的話,那么就可以肯定當(dāng)前產(chǎn)品是屬于一
2、個新的分類了,就可以插入新的行,并且加以修飾,成為分類標(biāo)題,同時將rollup的統(tǒng)計結(jié)果顯示在相應(yīng)的位置就可以了。我們先來看page_load部分的代碼SubPage_Load(SenderAsObject,EAsEventArgs)HandlesMyBase.Load 'TODO:UpdatetheConnectionStringandmandTextvaluesforyourapplicationdim ConnectionStringasstring=server=localhost;database=
3、northmandTextAsString=SelectCASEainTotal'ELSEcategorynameENDASCategoryName, mandText=CASEe)=1)THEN'SubTotal'ELSE_ ProductnameENDASProductName, mandText=Sum(UnitPrice)asunitprice, mandText=Sum(UnitsinStock)asUnitsinStock mandText=fromProduct
4、sINNERJOINCategoriesOnProducts.categoryID=_ Categories.CategoryID mandText=GroupByCategoryname,ProductNamemyConnectionAsNemymandAsNeandText,myConnection) DimdsAsNeymand.Fill(ds) DimcurCatAsString 指示當(dāng)前記錄中產(chǎn)品所屬的類別 DimprevCatAsString 指示上一條記錄中產(chǎn)品所屬的類別 Di
5、miAsInteger=0 要插入分類標(biāo)題行的位置,用I表示'遍歷結(jié)果集,找出要插入分類標(biāo)題的行 DoshRo(0) 'ChangeItemDataBoundmarkertoNegativeNumber shRo(1)=Total DataGrid1.DataSource=ds DataGrid1.DataBind()EndSub 可以看到,上面用到的技巧基本和《在DATAGRID中使用分類標(biāo)題》的是差不多的,只不過為了在最后統(tǒng)計所有的分類結(jié)果,將最后一行的標(biāo)題改
6、為total。之后,我們要對datagrid中的數(shù)據(jù)進(jìn)12下一頁>>>>這篇文章來自..,。行格式化,將臨時標(biāo)記取消,換為我們要顯示的格式,因為新插入的分類標(biāo)題行是和普通的行不同的,我們要設(shè)置其樣式,于是在其item_bound事件中,代碼如下: PrivateSubDataGrid1_ItemDataBound(senderAsObject, eAsDataGridItemEventArgs)SelectCasee.Item.ItemType CaseListItemType.AlternatingItem,L
7、istItemType.Item 如果發(fā)現(xiàn)是分類標(biāo)題行的話,則對其進(jìn)行格式化 Ife.Item.Cells(1).Text.Equals(-1)Then 'FormattheSubHeadingColumns e.Item.Cells(0).Attributes.Add(align,Left) e.Item.Cells(0).ColumnSpan=3 e.Item.Cells(0).Font.Bold=True 合拼為一個新的分類標(biāo)題行,移除其
8、中的單元格 e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(1) e.Item.BackColor=Color.FromArgb(204,204,255)EndIf最后的所有分類的總計 Ife.Item.Cells(0).Text.E