none
XValueMember YValueMember RRS feed

  • Pergunta

  • Algúem tem alguma sugestão?

    Tenho um Chart que estou utilizando o comando abaixo:

    SELECT PlanoConta, Format(Abs([debito]-[credito]),"Standard") AS ValorConta
    FROM Consulta_Finan_Rec_Desp

    NO Access tenho um retorno conforme o esperado na consulta, inclusive no Test Query do Visual Studio.

    O Problema é que ao configurar a Serie1 Data Members aparece no XValueMembers a opção PlanoConta e ValorConta, porém independente de qualquer campo escolhido o YValueMember fica sem opção de escolha aparecendo vazio. 

    quarta-feira, 14 de novembro de 2012 18:10

Respostas

  • Olá Wilson.

    Existem diversas formas de voce popular as séries do seu gráfico. Uma das formas, é atraves de DataBindCrossTable, conforme conversamos neste post

    Uma outra forma, é atraves de DataReader. Veja um exemplo simples:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    	' Resolve the address to the Access database
    	Dim fileNameString As String = Server.MapPath("~/seumdb.mdb")
    
    	' Initialize a connection string	
    	Dim myConnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString
    
    	' Define the database query	
    	Dim mySelectQuery As String = "SELECT PlanoConta, Format(Abs([debito]-[credito]),"Standard") AS ValorConta FROM Consulta_Finan_Rec_Desp;"
    
    	' Create a database connection object using the connection string	
    	Dim myConnection As New OleDbConnection(myConnectionString)
    
    	' Create a database command on the connection using query	
    	Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)
    
    	myConnection.Open()
    
    	' set chart data source - the data source must implement IEnumerable
    	Chart1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
    
    	' Set series members names for the X and Y values 
    	Chart1.Series("Series 1").XValueMember = "PlanoConta"
    	Chart1.Series("Series 1").YValueMembers = "ValorConta"
    
    	' Data bind to the selected data source
    	Chart1.DataBind()
    
    End Sub 'Page_Load

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta Wilson Boris sábado, 17 de novembro de 2012 10:40
    sexta-feira, 16 de novembro de 2012 12:33
  • Olá Wilson.

    Esse erro é porque o codigo está procurando por uma série no seu gráfico com o nome de Series 1. Basta trocar na linha 77 e 78, o nome da série para o mesmo nome que voce definiu. Se sua série é criada dinamicamente, altere para Chart2.Series(0).

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta Wilson Boris sábado, 17 de novembro de 2012 10:40
    sexta-feira, 16 de novembro de 2012 16:52

Todas as Respostas

  • Olá Wilson.

    Existem diversas formas de voce popular as séries do seu gráfico. Uma das formas, é atraves de DataBindCrossTable, conforme conversamos neste post

    Uma outra forma, é atraves de DataReader. Veja um exemplo simples:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    	' Resolve the address to the Access database
    	Dim fileNameString As String = Server.MapPath("~/seumdb.mdb")
    
    	' Initialize a connection string	
    	Dim myConnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString
    
    	' Define the database query	
    	Dim mySelectQuery As String = "SELECT PlanoConta, Format(Abs([debito]-[credito]),"Standard") AS ValorConta FROM Consulta_Finan_Rec_Desp;"
    
    	' Create a database connection object using the connection string	
    	Dim myConnection As New OleDbConnection(myConnectionString)
    
    	' Create a database command on the connection using query	
    	Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)
    
    	myConnection.Open()
    
    	' set chart data source - the data source must implement IEnumerable
    	Chart1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
    
    	' Set series members names for the X and Y values 
    	Chart1.Series("Series 1").XValueMember = "PlanoConta"
    	Chart1.Series("Series 1").YValueMembers = "ValorConta"
    
    	' Data bind to the selected data source
    	Chart1.DataBind()
    
    End Sub 'Page_Load

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta Wilson Boris sábado, 17 de novembro de 2012 10:40
    sexta-feira, 16 de novembro de 2012 12:33
  • Washington, obrigado pelo retorno. Então eu substitui o " por ' no Standard, pois assim deixou de ficar grifado, porém deparei-me com "Erro de Servidor no Aplicativo '/'.". Fazendo um BreakPoint tenho uma mensagem em: Chart2.Series("Series 1").XValueMember = "PlanoConta" = "Não foi possível encontrar um elemento de gráfico com o nome 'Series 1' em 'SeriesCollection'."

     Private Sub cargaChart2()
            ' Resolve the address to the Access database
            Dim fileNameString As String = Server.MapPath("\App_Data/SIADS.mdb")

            ' Initialize a connection string 
            Dim myConnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString

            ' Define the database query 
            Dim mySelectQuery As String = "SELECT PlanoConta, Format(Abs([debito]-[credito]),'Standard') AS ValorConta FROM Consulta_Finan_Rec_Desp;"

            ' Create a database connection object using the connection string 
            Dim myConnection As New OleDbConnection(myConnectionString)

            ' Create a database command on the connection using query 
            Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)

            myConnection.Open()

            ' set chart data source - the data source must implement IEnumerable
            Chart2.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

            ' Set series members names for the X and Y values
            Chart2.Series("Series 1").XValueMember = "PlanoConta"
            Chart2.Series("Series 1").YValueMembers = "ValorConta"

            ' Data bind to the selected data source
            Chart2.DataBind()

        End Sub

    Erro de Servidor no Aplicativo '/'.

    Não foi possível encontrar um elemento de gráfico com o nome 'Series 1' em 'SeriesCollection'.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.ArgumentException: Não foi possível encontrar um elemento de gráfico com o nome 'Series 1' em 'SeriesCollection'.

    Erro de Origem:


    Linha 75:
    Linha 76:         ' Set series members names for the X and Y values
    Linha 77:         Chart2.Series("Series 1").XValueMember = "PlanoConta"
    Linha 78:         Chart2.Series("Series 1").YValueMembers = "ValorConta"
    Linha 79:


    Arquivo de Origem: C:\Users\Braun\documents\visual studio 2010\Projects\VIG\VIG\financ.aspx.vb    Linha: 77

    Rastreamento de Pilha:


    [ArgumentException: Não foi possível encontrar um elemento de gráfico com o nome 'Series 1' em 'SeriesCollection'.]
       System.Web.UI.DataVisualization.Charting.ChartNamedElementCollection`1.get_Item(String name) +1705475
       VIG.financ.cargaChart2() in C:\Users\Braun\documents\visual studio 2010\Projects\VIG\VIG\financ.aspx.vb:77
       VIG.financ.Page_Load(Object sender, EventArgs e) in C:\Users\Braun\documents\visual studio 2010\Projects\VIG\VIG\financ.aspx.vb:22
       System.Web.UI.Control.OnLoad(EventArgs e) +92
       System.Web.UI.Control.LoadRecursive() +54
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +670

    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.0.30319.17626

    sexta-feira, 16 de novembro de 2012 14:52
  • Olá Wilson.

    Esse erro é porque o codigo está procurando por uma série no seu gráfico com o nome de Series 1. Basta trocar na linha 77 e 78, o nome da série para o mesmo nome que voce definiu. Se sua série é criada dinamicamente, altere para Chart2.Series(0).

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta Wilson Boris sábado, 17 de novembro de 2012 10:40
    sexta-feira, 16 de novembro de 2012 16:52
  • Washington Luíz, voce é 100%!

    muito obrigado, tudo certinho, abaixo o código.

    Private Sub cargaChart2()
            ' Resolve the address to the Access database
            Dim fileNameString As String = Server.MapPath("\App_Data/SIADS.mdb")

            ' Initialize a connection string 
            Dim myConnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString

            ' Define the database query 
            Dim mySelectQuery As String = "SELECT PlanoConta, Format(Abs([debito]-[credito]),'Standard') AS ValorConta FROM Consulta_Finan_Rec_Desp;"

            ' Create a database connection object using the connection string 
            Dim myConnection As New OleDbConnection(myConnectionString)

            ' Create a database command on the connection using query 
            Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)

            myConnection.Open()

            ' set chart data source - the data source must implement IEnumerable
            Chart2.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

            ' Set series members names for the X and Y values
            Chart2.Series(0).XValueMember = "PlanoConta"
            Chart2.Series(0).YValueMembers = "ValorConta"

            ' Data bind to the selected data source
            Chart2.DataBind()

        End Sub

    sábado, 17 de novembro de 2012 10:40