【问题标题】:How to create a .net chart object with a series based on a data subset?如何使用基于数据子集的系列创建 .net 图表对象?
【发布时间】:2023-04-02 16:10:01
【问题描述】:

我正在 VS2010 中开发一个 Visual Basic 应用程序。它接收串行端口数据,将其写入访问数据库,然后绘制数据图表。数据每分钟只有一次,所以这不像我在构建示波器。现在,图表正在使用表格适配器从数据库中读取,并且绘制得很好,只要我保持数据库中的记录数量较少。

问题: 如果我向数据库中添加了太多记录,图表会通过它显示一个红色的“X”。我玩过改变轴,但这仍然是一个问题。我真的不需要绘制整个数据库。最近的 20 条记录就足够了。

如何制作一个仅包含一小部分数据库子集的图表系列。也许它冷被一个查询填充?总的来说,我对数据库很陌生,所以也许这很容易。

谢谢, 卡斯巴

【问题讨论】:

    标签: vb.net winforms visual-studio-2010 ms-access-2010


    【解决方案1】:

    您每分钟只需要返回最近的 20 条记录,因此例如使用计时器控件并在其滴答事件中获取插入数据库的最后 20 条记录。

    在 Microsoft Access 中,创建一个查询以确认您应该在 .Net 应用程序中返回的结果。这是在 MS Access 中运行的 SQL 查询:

    SELECT TOP 20 * FROM tblData ORDER BY DateCreated
    

    SELECT TOP 20 * FROM tblData ORDER BY tblID DESC
    

    现在在您的 .net 应用程序中,您需要使用以下命名空间:

    Imports System.Data.OleDb
    

    然后从 Access 数据库中读取最后 20 个值:

    Private Xvalues as New List(Of Integer)
    Private Yvalues as New List(Of Integer)
    
    Private Sub GetData()
    
    Dim con As OleDbConnection
    Dim sql As String 
    str = "Provider=Microsoft.Jet.oledb.4.0;Data Source=C:\yourAccessDB.mdb;"
    con = New OleDbConnection(str)       
    sql = "SELECT TOP 20 * FROM tblData ORDER BY DateCreated"
    Dim cmd As OleDbCommand  
    Dim r As OleDbDataReader  
    Try  
       con.Open() 
       cmd = New OleDbCommand(sql, con)  
       r = cmd.ExecuteReader() 
       While dr.Read() 
         XValues.Add(Convert.ToInt32(r("chartX")))
         YValues.Add(Convert.ToInt32(r("chartY")))
       End While   
       r.Close()      
       con.Close()    
    Catch ex As OleDbException 
         MsgBox(ex.Message, MsgBoxStyle.Critical, “Oledb Error”)   
    Catch ex As Exception   
         MsgBox(ex.Message, MsgBoxStyle.Critical, “General Error”)
    End Try   
    End Sub
    

    然后挂钩上面的 GetData() 方法和要在 Timers Tick 事件中调用的图表函数。我想您还需要删除/归档旧记录并清除 X 和 Yvalue 变量。 请注意未经测试。

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多