0

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

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

如何制作一个图表系列,其中只有一小部分数据库。也许用查询填充它很冷?一般来说,我对数据库很陌生,所以也许这很容易。

谢谢,卡斯巴尔

4

1 回答 1

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 变量。 请注意未经测试。

于 2012-04-15T03:18:21.950 回答