none
Chart Control Ler dados de uma base dados em access RRS feed

  • Pergunta

  • Ola

    Não estou a conseguir que o meu grafico vá buscar os valores à base de dados em access.

    Consigo colocar o grafico a funcionar se colocar valores manualmente mas de uma base de dados nao estou a conseguir.

    Alguem me dá uma ajuda

     

    Imports

     

    System.Data

    Imports

     

    System.Data.OleDb

    Imports

     

    System.Configuration

    Imports

     

    System.Windows.Forms.DataVisualization.Charting

    '''''''''''''

    Public

     

    Class Menu

     

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

    Dim oDados As New CDados()

    oDados.charttt()

     

    Dim yValue() As Double

     

    Dim xNames() As String

     

    Chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie

    Chart1.Titles.Add(

    "Ttulo")

    Chart1.Legends.Add(

    "Default").Title = "Legenda"

     

     

    Chart1.ChartAreas(0).Area3DStyle.Enable3D =

    True

    Chart1.ChartAreas(0).Area3DStyle.Inclination = 60

    Chart1.ChartAreas(0).Area3DStyle.Rotation = 30

    Chart1.ChartAreas(0).Area3DStyle.Perspective = 10

    Chart1.ChartAreas(0).Area3DStyle.LightStyle = LightStyle.Simplistic

    Chart1.Palette = ChartColorPalette.Pastel

    Chart1.Series(0).Points.DataBindXY(xNames, yValue)

     

    End Sub

    '''''''

    Public Function charttt() As ArrayList

     

    Dim oList = New ArrayList

     

    Dim oConn = New OleDb.OleDbConnection

     

    Dim oCmd = New OleDb.OleDbCommand

     

    Try

    oConn.ConnectionString = ConfigurationSettings.AppSettings(

    "ConnectionString")

    oConn.Open()

    oCmd.Connection = oConn

    oCmd.CommandType = CommandType.Text

    oCmd.CommandText =

    "SELECT NomeDoProduto, UnidadesPedidas FROM Produtos "

     

    Dim oReader As OleDb.OleDbDataReader = oCmd.ExecuteReader

     

    While oReader.Read

     

    Dim oDados = New CDados

    oDados.mNomeProduto = oReader.GetValue(0).ToString

    oDados.UnidadesEncomendadas = oReader.GetValue(1).ToString

    oList.Add(oDados)

     

    End While

     

    Catch ex As Exception

    MessageBox.Show(ex.Message,

    My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

     

    End Try

    oConn.Close()

     

    Return oList

     

    End Function

    terça-feira, 20 de julho de 2010 17:45

Todas as Respostas

  • terça-feira, 20 de julho de 2010 22:42
    Moderador
  • Obrigado Malange mas não consegui ver a luz lol

    Obrigado

    quarta-feira, 21 de julho de 2010 16:45
  • quarta-feira, 21 de julho de 2010 17:52
    Moderador
  •  

    Obrigado AndreAlves Lima mas ainda nao foi desta.

    Fiz algumas uns ajuste ao meu codigo mas ainda nao funciona.

    Sei que o meu arry está correcto e a parte de criar o grafico tambem, só nao consigo passar os dados do arry para o grafico.

     

    Imports System.Configuration
    
    
    Public Class CDados
      Private mNomeProduto As String
      Private mUnidadesEncomendadas As Double
      
      Public Property NomeProduto() As String
        Get
          Return mNomeProduto
        End Get
        Set(ByVal value As String)
          mNomeProduto = value
        End Set
      End Property
    
      Public Property UnidadesEncomendadas() As Double
        Get
          Return mUnidadesEncomendadas
        End Get
        Set(ByVal value As Double)
          mUnidadesEncomendadas = value
        End Set
      End Property
      Public Function charttt() As ArrayList
    
        Dim oList = New ArrayList
        Dim oConn = New OleDb.OleDbConnection
        Dim oCmd = New OleDb.OleDbCommand
        Try
          oConn.ConnectionString = ConfigurationSettings.AppSettings("ConnectionString")
          oConn.Open()
          oCmd.Connection = oConn
          oCmd.CommandType = CommandType.Text
          oCmd.CommandText = "SELECT NomeDoProduto, UnidadesPedidas FROM Produtos "
          Dim oReader As OleDb.OleDbDataReader = oCmd.ExecuteReader
          While oReader.Read
            Dim oDados = New CDados
            oDados.mNomeProduto = oReader.GetValue(0).ToString
            oDados.UnidadesEncomendadas = oReader.GetValue(1)
            oList.Add(oDados)
          End While
        Catch ex As Exception
          MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        oConn.Close()
        Return oList
      End Function
    
    End Class
    

     

    Public Class Menu
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oDados As New CDados()
        oDados.charttt()
    
        Dim yValue
        Dim XNames
    
        yValue = oDados.UnidadesEncomendadas
        XNames = oDados.NomeProduto
    
        Chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie
        Chart1.Titles.Add("Título")
        Chart1.Legends.Add("Default").Title = "Legenda"
    
        Chart1.ChartAreas(0).Area3DStyle.Enable3D = True
        Chart1.ChartAreas(0).Area3DStyle.Inclination = 60
        Chart1.ChartAreas(0).Area3DStyle.Rotation = 30
        Chart1.ChartAreas(0).Area3DStyle.Perspective = 10
        Chart1.ChartAreas(0).Area3DStyle.LightStyle = LightStyle.Simplistic
        Chart1.Palette = ChartColorPalette.Pastel
    
        Chart1.Series(0).Points.DataBindXY(XNames, yValue)
      End Sub
    
    End Class

    Sei que é aqui que devo estar a falhar

    oDados.charttt()
    
    Dim yValue
    
    Dim XNames
    
    yValue = oDados.UnidadesEncomendadas
    
    XNames = oDados.NomeProduto
    
     
    

    Quando executo obtenho este erro nesta linha de código.

    Chart1.Series(0).Points.DataBindXY(XNames, yValue)
    
    

    Não é possível associar o objecto de tipo 'System.Double' ao tipo 'System.Collections.IEnumerable'.

    quinta-feira, 22 de julho de 2010 11:19
  • Prezado,

    Novidades quanto a essa sua dúvida?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 6 de agosto de 2010 19:03
    Moderador