- ''' <summary>
- ''' 将CellSet转为DataTable.
- ''' </summary>
- ''' <param name="CellSet">CellSet对象.</param>
- ''' <returns>DataTable</returns>
- ''' <remarks></remarks>
- Private Function AdoMdCellSetToDataTable(ByVal CellSet As Microsoft.AnalysisServices.AdomdClient.CellSet) As DataTable
- Dim Dt As New DataTable
- Dim Dc As New DataColumn
- Dim Dr As DataRow = Nothing
- Dim I As Int32
- Dim ColName As String = ""
- Dim sC As Int32
- Dim sR As Int32 = 0
- Dim RowID As Int32 = 0
- Dim SDr As DataRow = Nothing
- sC = 1
- For Each M As Microsoft.AnalysisServices.AdomdClient.Member In CellSet.Axes(1).Positions(0).Members
- sC += 1
- Dc = New DataColumn()
- Dc.ColumnName = Microsoft.VisualBasic.Space(sC) '//以空填充空白部分.
- Dt.Columns.Add(Dc)
- Next
- '//生成数据列对象
- sR = 0
- Dim R, C As Int32
- Dim ColID As Int16 = 0
- Dim AxexCount_0 As Int32 = CellSet.Axes(0).Positions.Count
- Dim AxexCount_1 As Int32 = CellSet.Axes(1).Positions.Count
- Dim CName As String
- R = 0 : C = 0
- For Each P As Microsoft.AnalysisServices.AdomdClient.Position In CellSet.Axes(0).Positions '//分解0轴,Mdx中的 ON Columns 轴.
- CName = ""
- R = 0 : ColID += 1
- For Each M As Microsoft.AnalysisServices.AdomdClient.Member In P.Members
- If R = 0 Then
- CName = CName & "[" & Trim$(M.Caption) & "]"
- Else
- CName = CName & ".[" & Trim$(M.Caption) & "]"
- End If
- R += 1
- Next
- Dc = New DataColumn()
- Dc.ColumnName = CName
- Dt.Columns.Add(Dc)
- C += 1
- Next
- '//添加行数据
- Dim CellVal As String
- Dim Pos As Int32 = 0
- Dim Ts As String
- Dim Cid As Int32
- For Each py As Microsoft.AnalysisServices.AdomdClient.Position In CellSet.Axes(1).Positions '//分解1轴,Mdx中的 ON Rows 轴
- Dr = Dt.NewRow()
- RowID += 1
- I = 0
- '//行方向的名称列.
- For Each m As Microsoft.AnalysisServices.AdomdClient.Member In py.Members
- Ts = m.Caption
- Cid = I
- Dr(Cid) = Ts
- I += 1
- Next
- '//行数据
- For X As Int32 = 1 To AxexCount_0
- CellVal = "" & CellSet(Pos).FormattedValue
- If CellVal = "1.#INF" OrElse CellVal = "-1.#IND" OrElse CellVal = "1#I.NF0" OrElse CellVal = "1#I.NF0%" Then CellVal = ""
- Dr(Cid+X) = CellVal
- Pos += 1
- Next
- Dt.Rows.Add(Dr)
- Next
- Return Dt
- End Function
VB.NET将CellSet转为DataTable
最新推荐文章于 2021-05-06 21:18:17 发布