我有一个图表,显示从 sql 表中选择的一些数据。在 x 轴上显示日期。我曾经发现过一个令人讨厌的错误。该程序有一个客户列表,如果我点击一个客户,我会得到一些关于客户的数据。如果我单击的第一个客户没有任何行,则 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