Usuário com melhor resposta
XValueMember YValueMember

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_DespNO 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.
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
-
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
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
-
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: 77Rastreamento 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) +670Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.0.30319.17626
-
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
-
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