Member 13410460 Ответов: 1

Почему моя диаграмма показывает мне всю информацию в одной строке ?


Привет всем, я новичок в чартах в vb.net, у меня есть этот код и эти соединения для получения данных с SQL Server, вот код в vb.net
 
Private Sub LoadDataGrocery()

       Chart1.DataSource = GetData_Grocery()
       Chart1.DataSource = GetData_Vacation()
       Chart1.DataSource = GetData_Electronics()
       Chart1.DataSource = GetData_FixCosts()
       Chart1.DataSource = GetData_Clothes()
       Chart1.DataSource = GetData_Other()

       'Grocery
       Chart1.Series("Grocery").Points.Clear()
       Chart1.Series("Grocery").Color = Color.FromArgb(172, 126, 241)
       Chart1.Series("Grocery").XValueMember = "Year"
       Chart1.Series("Grocery").YValueMembers = "Total"
       'Vacation
       Chart1.Series("Vacation").Points.Clear()
       Chart1.Series("Vacation").Color = Color.FromArgb(100, 200, 255)
       Chart1.Series("Vacation").XValueMember = "Year"
       Chart1.Series("Vacation").YValueMembers = "Total"
       'Electronics
       Chart1.Series("Electronics").Points.Clear()
       Chart1.Series("Electronics").Color = Color.FromArgb(249, 118, 176)
       Chart1.Series("Electronics").XValueMember = "Year"
       Chart1.Series("Electronics").YValueMembers = "Total"
       'Clothes
       Chart1.Series("Clothes").Points.Clear()
       Chart1.Series("Clothes").Color = Color.FromArgb(253, 138, 114)
       Chart1.Series("Clothes").XValueMember = "Year"
       Chart1.Series("Clothes").YValueMembers = "Total"
       'FixCost
       Chart1.Series("Fix Costs").Points.Clear()
       Chart1.Series("Fix Costs").Color = Color.FromArgb(220, 20, 60)
       Chart1.Series("Fix Costs").XValueMember = "Year"
       Chart1.Series("Fix Costs").YValueMembers = "Total"
       'Other
       Chart1.Series("Other").Points.Clear()
       Chart1.Series("Other").Color = Color.FromArgb(24, 161, 251)
       Chart1.Series("Other").XValueMember = "Year"
       Chart1.Series("Other").YValueMembers = "Total"


   End Sub


и это та функция, с помощью которой я получаю данные :

Private Function GetData_Grocery() As DataTable

       Dim dtChartData As New DataTable()

       Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("db").ConnectionString)
           Using cmd As New SqlCommand("Chart_Grocery", conn) ' Total working hours in the month -- step3
               cmd.CommandType = CommandType.StoredProcedure

               conn.Open()

               cmd.Parameters.AddWithValue("@FromYear2", DateTimePickerfrom.Text) '--step3
               cmd.Parameters.AddWithValue("@toYear2", DateTimePickerto.Text) '--step3

               Dim reader As SqlDataReader = cmd.ExecuteReader()
               dtChartData.Load(reader)

           End Using
       End Using

       Return dtChartData

   End Function


И точно так же у меня есть для каждой диаграммы в моей базе данных
Chart_Grocery
Chart_Clothes
Chart_Electronics
Chart_Vacation
Chart_Other
Chart_FixCost

Что я уже пробовал:

И в моем SQL скрипте это то что я использовал для получения данных :



ALTER Procedure [dbo].[Chart_Clothes]
(
@FromYear2 NVARCHAR(50)
,@toYear2 NVARCHAR(50)
)
AS

 Begin

   Select SUM(Price) AS 'Total'
   ,CONVERT(char(7), date, 120)  as 'year'
   --Department = 'Grocery'
   From [dbo].[Expenses]
   Where Department = 'Clothes'
   Group BY  CONVERT(char(7), date, 120)  
   Having CONVERT(char(7), date, 120)   >= @FromYear2 And  CONVERT(char(7), date, 120)   <= @toYear2
   
   End



Для каждой диаграммы эта функция используется, кроме имени диаграммы выше и отдела,
Я не знаю, в чем проблема, почему он показывает мне данные только в одной строке.
Нет никакой ошибки, просто нет информации.

Спасибо

Andre Oosthuizen

Вам нужно уточнить свой вопрос, так как заголовок говорит, что все данные отображаются в одной строке(не уверен, что это означает), а затем в конце вы говорите, что он не показывает данные, очень запутанные.

Вы можете отредактировать свой вопрос, выбрав ссылку "улучшить вопрос" при наведении курсора мыши на свой пост.

Member 13410460

Спасибо за ваш ответ, я обновил вопрос.

1 Ответов

Рейтинг:
12

OriginalGriff

Потому что вы предоставили только один источник данных:

Chart1.DataSource = GetData_Grocery()
Chart1.DataSource = GetData_Vacation()
Chart1.DataSource = GetData_Electronics()
Chart1.DataSource = GetData_FixCosts()
Chart1.DataSource = GetData_Clothes()
Chart1.DataSource = GetData_Other()
Каждый раз, когда вы предоставляете другой набор данных, вы перезаписываете и отбрасываете предыдущий, оставляя на диаграмме только данные из GetData_Other.

Вам нужно будет "объединить" ваши данные, чтобы у вас был ряд по оси X с несколькими рядами по оси Y.
Это может помочь: Создание многосерийной линейной диаграммы (графика) в приложении Windows Forms с использованием C# и VB.Net[^]


Member 13410460

Спасибо за ваш ответ, я посмотрю.

Member 13410460

Спасибо за вашу информацию , основываясь на ссылке, я это выясню и исправлю.
Спасибо

OriginalGriff

Всегда пожалуйста!