0

我有一个图表,显示从 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
4

1 回答 1

0

阿玛格德。在玩转系列设置后,我发现系列中每个成员的值“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
于 2013-05-28T09:36:06.820 回答