我有一个图表,显示从sql表中选择的一些数据。在x轴上显示日期。 我怎么会发现一个有点讨厌的bug。 该程序有一个客户列表,如果我点击一个客户,我会得到一些客户的数据。如果我点击的第一个客户没有任何行,则x轴上的日期会变得混乱(例如,41394,5而不是2013-05-05)。 如果我重新启动程序并选择有行的客户,那么它可以完美运行,然后我可以选择没有数据的客户,然后再次选择具有数据的客户,该日期是正确的。
编辑:更清楚;如果我首先选择一个0行的客户,那么即使我后来选择了一个> 0行的客户,它也会搞乱。但是,如果我首先选择> 0行的客户,我可以稍后选择0行的客户,获得一个空白图表,如果我然后切换到有行的客户,我会得到正常的日期。
创建数据集的代码如下所示:
'Test function for diagram results, returns DATASET
Public Function GetDiagramData(ByVal OrgNr As String) As DataSet
Dim Con As SqlCeConnection = DbConn()
Con.Open()
Dim Com As New SqlCeCommand("SELECT Value1, Value2, Value3, Created AS Date FROM Information WHERE OrgNr = @orgnr ORDER BY Created DESC", Con)
Com.Parameters.AddWithValue("@orgnr", OrgNr)
Dim da As New SqlCeDataAdapter(Com)
Dim ds As New DataSet
da.Fill(ds, "Diagrams")
Con.Close()
Com = Nothing
Return ds
End Function
这是填充图表的代码:
Private Sub LoadDataForDiagrams()
'TESTING
Form1.Chart1.Series("Value1").YValueMembers = "Value1"
Form1.Chart1.Series("Value1").XValueMember = "Date"
Form1.Chart1.Series("Value1").BorderWidth = 4
Form1.Chart1.Series("Value2").YValueMembers = "Value2"
Form1.Chart1.Series("Value2").XValueMember = "Date"
Form1.Chart1.Series("Value2").BorderWidth = 4
Form1.Chart1.Series("Value3").YValueMembers = "Value3"
Form1.Chart1.Series("Value3").XValueMember = "Date"
Form1.Chart1.Series("Value3").BorderWidth = 3
Dim SQL As New SQLCompact
Dim Binding As DataSet = SQL.GetDiagramData(Form1.LBL_Client_ORG.Text)
Form1.Chart1.DataSource = Binding.Tables("Diagrams")
SQL = Nothing
End Sub
答案 0 :(得分:0)
Amagerd。在系列设置中玩游戏后,我发现系列中每个成员的值为“XValueType”。它默认为“自动”,当我将其更改为日期时,它的工作非常完美。这就是(非常简单)的灵魂。在这里以图形方式设置它们或将这些行添加到上面的代码中(代码的第2部分):
Form1.Chart1.Series("Value1").YValueMembers = "Value1"
Form1.Chart1.Series("Value1").XValueMember = "Date"
Form1.Chart1.Series("Value1").BorderWidth = 4
Form1.Chart1.Series("Value1").XValueType = vbDate
Form1.Chart1.Series("Value2").YValueMembers = "Value2"
Form1.Chart1.Series("Value2").XValueMember = "Date"
Form1.Chart1.Series("Value2").BorderWidth = 4
Form1.Chart1.Series("Value2").XValueType = vbDate
Form1.Chart1.Series("Value3").YValueMembers = "Value3"
Form1.Chart1.Series("Value3").XValueMember = "Date"
Form1.Chart1.Series("Value3").BorderWidth = 3
Form1.Chart1.Series("Value3").XValueType = vbDate