如何在 vb.net CHART Y AXIS 中显示数据库中的总行数
Posted
技术标签:
【中文标题】如何在 vb.net CHART Y AXIS 中显示数据库中的总行数【英文标题】:How to display overall count of rows in a database in vb.net CHART Y AXIS 【发布时间】:2021-10-26 08:16:20 【问题描述】:编辑我从 Hel o Ween 的评论中尝试了 RecCount,它显示了这个异常 RecCount
这是我的代码,x 轴正常工作,但 y 轴显示此错误:Exception of Y axis
我试图使 x 轴在特定列中具有所有相同的值。 y 轴作为数据库中的总行数
Dim READER As OleDbDataReader
Try
Dim query As String
query = "SELECT ID, purok FROM Household"
cmd = New OleDbCommand(query, con)
READER = cmd.ExecuteReader
Dim dT As New DataTable
dT.Load(READER)
Dim counter As String
counter = dT.Rows.Count.ToString
'Dim countrow = Convert.ToInt16(cmd.ExecuteScalar)
'Label3.Text = countrow
Chart1.Series("Purok").XValueMember = "Purok"
Chart1.Series("Purok").YValueMembers = counter
Chart1.DataSource = dT
Chart1.DataBind()
con.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
【问题讨论】:
我认为您需要将数据源的列 ID 之一提供给 YValueMember 而不是 Counter 图表Id和Purok似乎不太有用。我认为他们正在从您的数据源中询问列名。你需要重新考虑这一点。手动绘制图形的模拟以查看您的数据如何适应。您的数据访问代码远非最佳实践。查看一些教程。 如果您需要行数,请修改您的 SQL 语句,例如"SELECT ID, purok, COUNT(*) As RecCount FROM Household"
。如果@Mary 是正确的并且.YValueMembers
需要一个(数据库)列名,则将其分配为“RecCount”。
【参考方案1】:
感谢 Hel O'Ween 的评论和此线程:"You tried to execute a query that does not include the specified aggregate function" 现在已修复。我只是在 FROM 语句之后调整并添加了 GROUP BY。
Heres the result chart
Dim READER As OleDbDataReader
Try
Dim query As String
query = "SELECT purok, COUNT(*) As RecCount FROM Household GROUP BY purok"
cmd = New OleDbCommand(query, con)
READER = cmd.ExecuteReader
Dim dT As New DataTable
dT.Load(READER)
Chart1.Series("Purok").XValueMember = "purok"
Chart1.Series("Purok").YValueMembers = "RecCount"
Chart1.DataSource = dT
Chart1.DataBind()
con.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
【讨论】:
以上是关于如何在 vb.net CHART Y AXIS 中显示数据库中的总行数的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA Chart 刻度 Axis.DisplayUnit
Excel VBA Chart 刻度 Axis.DisplayUnit