Solved

VB.net Reference for Pivot class

Posted on 2014-01-24
9
501 Views
Last Modified: 2014-01-27
Hi
In VB.net what do I have to reference to use the Pivot class with code like the following
and can this be used in ASP.net:


    Public Function PivotData(RowField As String, DataField As String, Aggregate As AggregateFunction, ParamArray ColumnFields As String()) As DataTable
        Dim dt As New DataTable()
        Dim Separator As String = "."
      Dim RowList = (From x In _SourceTable.AsEnumerable()New With { _
            Key .Name = x.Field(Of Object)(RowField) _
      }).Distinct()
      Dim ColList = (From x In _SourceTable.AsEnumerable()New With { _
            Key .Name = ColumnFields.[Select](Function(n) x.Field(Of Object)(n)).Aggregate(Function(a, b) a += Separator & b.ToString()) _
      }).Distinct().OrderBy(Function(m) m.Name)

        dt.Columns.Add(RowField)
        For Each col As var In ColList
            dt.Columns.Add(col.Name.ToString())
        Next

        For Each RowName As var In RowList
            Dim row As DataRow = dt.NewRow()
            row(RowField) = RowName.Name.ToString()
            For Each col As var In ColList
                Dim strFilter As String = (RowField & Convert.ToString(" = '")) + RowName.Name + "'"
                Dim strColValues As String() = col.Name.ToString().Split(Separator.ToCharArray(), StringSplitOptions.None)
                For i As Integer = 0 To ColumnFields.Length - 1
                    strFilter += " and " + ColumnFields(i) + " = '" + strColValues(i) + "'"
                Next
                row(col.Name.ToString()) = GetData(strFilter, DataField, Aggregate)
            Next
            dt.Rows.Add(row)
        Next
        Return dt
    End Function
0
Comment
Question by:murbro
  • 5
  • 4
9 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39805933
from what I see you need not that much :
System.Data class and the LINQ reference.
0
 

Author Comment

by:murbro
ID: 39805956
Hi

Thanks. I aleady have System.Data but not sure what you mean by LINQ.
Where would I find the LINQ reference?
0
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 500 total points
ID: 39805960
from the official reference:
http://msdn.microsoft.com/en-us/library/bb546156.aspx 
To enable basic LINQ functionality

    In a Visual Basic or C# project, click the Project menu, and then click Add Reference.

    In the Add Reference dialog box, click the .NET tab, scroll to System.Core.dll, and then click it. Click OK.

    Add a using directive or Imports statement for System.Linq to your source code file or project.

Open in new window

0
Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

 

Author Comment

by:murbro
ID: 39805972
Hi

Thanks very much
I still have 23 errors
eg Error      34      Type 'AggregateFunction' is not defined.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      40      82      Elements
Error      33      'RowList' is not declared. It may be inaccessible due to its protection level.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      23      36      Elements
Error      49      'GetSum' is not declared. It may be inaccessible due to its protection level.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      61      28      Elements
0
 

Author Comment

by:murbro
ID: 39806018
I've requested that this question be closed as follows:

Accepted answer: 0 points for murbro's comment #a39805956

for the following reason:

Thanks very much
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39806012
I could not find a standard class having this as type, so I must presume that either it's a typo in the code, or you have some customer class (missing in this project)
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39806014
huh?
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39806019
I see you other question now, and I confirm the conversion is incorrect.
it must be:
Public Function PivotData(RowField As String, DataField As String, AggregateFunction as Aggregate  , ParamArray ColumnFields As String()) As DataTable 

Open in new window

0
 

Author Closing Comment

by:murbro
ID: 39811432
Thanks. Thought I had already accepted this. Sorry about the delay
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

792 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question