Solved

VB.net Code Errors

Posted on 2014-01-24
4
522 Views
Last Modified: 2014-01-27
Hi

I get the following code errors amongst othersin the code further on.
I already have the following references:
Imports System.Data
Imports System.Linq


Error      34      Type 'AggregateFunction' is not defined.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      41      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      24      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      62      28      Elements
Error      47      'GetMin' is not declared. It may be inaccessible due to its protection level.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      60      28      Elements
Error      45      'GetMax' is not declared. It may be inaccessible due to its protection level.      C:\Users\murbro\Documents\Visual Studio 2010\Projects\Elements\Elements\Pivot.vb      58      28      Elements


Imports System.Data
Imports System.Linq

Public Class Pivot


    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


    Private Function GetData(Filter As String, DataField As String, Aggregate As AggregateFunction) As Object
        Try
            Dim FilteredRows As DataRow() = _SourceTable.[Select](Filter)
            Dim objList As Object() = FilteredRows.[Select](Function(x) x.Field(Of Object)(DataField)).ToArray()

            Select Case Aggregate
                Case AggregateFunction.Average
                    Return GetAverage(objList)
                Case AggregateFunction.Count
                    Return objList.Count()
                Case AggregateFunction.Exists
                    Return If((objList.Count() = 0), "False", "True")
                Case AggregateFunction.First
                    Return GetFirst(objList)
                Case AggregateFunction.Last
                    Return GetLast(objList)
                Case AggregateFunction.Max
                    Return GetMax(objList)
                Case AggregateFunction.Min
                    Return GetMin(objList)
                Case AggregateFunction.Sum
                    Return GetSum(objList)
                Case Else
                    Return Nothing
            End Select
        Catch ex As Exception
            Return "#Error"
        End Try
        Return Nothing
    End Function

End Class
0
Comment
Question by:Murray Brown
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 250 total points
ID: 39806026
Aggregate As AggregateFunction  must be  AggregateFunction as Aggregate
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39806028
after that, please post the new build error list, because I presume some errors will go away or change...
0
 
LVL 52

Assisted Solution

by:Carl Tawn
Carl Tawn earned 250 total points
ID: 39806186
It sounds like you AggregateFunction enum isn't in the same project, or at least the same namespace, as your method (or maybe just not scoped correctly).
0
 

Author Closing Comment

by:Murray Brown
ID: 39811435
Thanks for the help
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

717 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