2014-03-25 4 views
0

현재 4 시리즈가있는 차트 요소가 있습니다. 내 문제는 그들이 개별적으로 작업하는 동안 내가 1 시리즈 이상으로 설정하면 모든 데이터를 마지막으로 DataSet에 설정합니다 (So Series 1,2 & 3은 4와 동일한 위치 임).차트 분리 시리즈

누군가 내 부러진 코드를보고 문제가있는 부분을 알려주시겠습니까? 그리고 어쩌면 그것을 깔끔하게하는 데 도움이되는 몇 가지 지침 ... 이전에는 어떤 차트 형식으로도 작업 해본 적이 없습니다.

Using con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test\Response.mdb;") 


    Dim MyQuery As String = "SELECT qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood, Count(qry_Response_By_Date_1.Mood) AS CountOfMood FROM qry_Response_By_Date_1 GROUP BY qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood HAVING (((qry_Response_By_Date_1.Mood)='Happy'));" 
    Using cmd = New OleDbCommand(MyQuery, con) 
     Dim MyData As New OleDbDataAdapter(MyQuery, con) 
     Dim MyDataSet As New DataSet 
     con.Open() 
     MyData.Fill(MyDataSet, "Table") 
     ChrtMoodChanges.DataSource = MyDataSet.Tables("Table") 
     Dim Series1 As Series = ChrtMoodChanges.Series("Series1") 
     Series1.Name = "Happy" 
     ChrtMoodChanges.Series(Series1.Name).XValueMember = "Actual_Date" 
     ChrtMoodChanges.Series(Series1.Name).YValueMembers = "CountOfMood" 
    End Using 


    Dim MyQuery2 As String = "SELECT qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood, Count(qry_Response_By_Date_1.Mood) AS CountOfMood FROM qry_Response_By_Date_1 GROUP BY qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood HAVING (((qry_Response_By_Date_1.Mood)='Neutral'));" 
    Using cmd = New OleDbCommand(MyQuery2, con) 
     Dim MyData2 As New OleDbDataAdapter(MyQuery2, con) 
     Dim MyDataSet2 As New DataSet 
     MyData2.Fill(MyDataSet2, "Table") 
     ChrtMoodChanges.DataSource = MyDataSet2.Tables("Table") 
     Dim Series2 As Series = ChrtMoodChanges.Series("Series2") 
     Series2.Name = "Neutral" 
     ChrtMoodChanges.Series(Series2.Name).XValueMember = "Actual_Date" 
     ChrtMoodChanges.Series(Series2.Name).YValueMembers = "CountOfMood" 
    End Using 


    Dim MyQuery3 As String = "SELECT qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood, Count(qry_Response_By_Date_1.Mood) AS CountOfMood FROM qry_Response_By_Date_1 GROUP BY qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood HAVING (((qry_Response_By_Date_1.Mood)='Sad'));" 
    Using cmd = New OleDbCommand(MyQuery3, con) 
     Dim MyData3 As New OleDbDataAdapter(MyQuery3, con) 
     Dim MyDataSet3 As New DataSet 
     MyData3.Fill(MyDataSet3, "Table") 
     ChrtMoodChanges.DataSource = MyDataSet3.Tables("Table") 
     Dim Series3 As Series = ChrtMoodChanges.Series("Series3") 
     Series3.Name = "Sad" 
     ChrtMoodChanges.Series(Series3.Name).XValueMember = "Actual_Date" 
     ChrtMoodChanges.Series(Series3.Name).YValueMembers = "CountOfMood" 
    End Using 


    Dim MyQuery4 As String = "SELECT qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood, Count(qry_Response_By_Date_1.Mood) AS CountOfMood FROM qry_Response_By_Date_1 GROUP BY qry_Response_By_Date_1.Actual_Date, qry_Response_By_Date_1.Mood HAVING (((qry_Response_By_Date_1.Mood)='Angry'));" 
    Using cmd = New OleDbCommand(MyQuery4, con) 
     Dim MyData4 As New OleDbDataAdapter(MyQuery4, con) 
     Dim MyDataSet4 As New DataSet 
     MyData4.Fill(MyDataSet4, "Table") 
     ChrtMoodChanges.DataSource = MyDataSet4.Tables("Table") 
     Dim Series4 As Series = ChrtMoodChanges.Series("Series4") 
     Series4.Name = "Angry" 
     ChrtMoodChanges.Series(Series4.Name).XValueMember = "Actual_Date" 
     ChrtMoodChanges.Series(Series4.Name).YValueMembers = "CountOfMood" 
    End Using 
End Using 

P. SQL은 각각에 대해 올바른 데이터를 반환합니다. 단지 차트에 올바른 데이터를 저장하는 것이 내 문제입니다.

답변

2

ChrtMoodChanges.DataSource을 설정할 때마다 차트의 데이터 소스를 덮어 쓰는 것이므로 마지막 데이터 세트로 끝나는 이유가 여기에 있습니다. 데이터 테이블 난 당신이 다음 데이터 소스의 열에 각 시리즈를 참조 차트에 바인딩 시작하기 전에 당신이 당신의 datatables를 병합 제안

/코드를 정리에 제안 그래서

ChrtMoodChanges.Series(Series1.Name).XValueMember = "Actual_Date" 
ChrtMoodChanges.Series(Series1.Name).YValueMember = "CountOfMood_Col1" 
.... 
.... 
ChrtMoodChanges.Series(Series4.Name).XValueMember = "Actual_Date" 
ChrtMoodChanges.Series(Series4.Name).YValueMember = "CountOfMood_Col4" 

, 나는 것

  1. 아래는 4 datatables는
  2. 기본 키
  3. 각 C를 추가로 "Actual_Date"와 datatables 병합받을 수 있나요 예를 병합 새로운 시리즈

로 차트에 olumn :Merge columns of different types from datatables into one larger datatable

희망이

을하는 데 도움이