【问题标题】:How to display the count value on label?如何在标签上显示计数值?
【发布时间】:2018-06-25 20:38:51
【问题描述】:

我在 datagridview 中有一个显示车辆列表及其类型的监控。我要统计每种车辆的数量。

示例:datagridview 中有 8 辆轿车和 5 辆摩托车,我希望它显示在标签中。

这是我的代码:

Dim table As New DataTable()

Dim command As New MySqlCommand("select count(ctype) from tblreport where ctype='SUV'", conn)

command.Parameters.Add("count(ctype)", MySqlDbType.VarChar).Value = Label6.Text

Dim adapter As New MySqlDataAdapter(command)

adapter.Fill(table)

DataGridView2.DataSource = table

【问题讨论】:

  • 您不需要填充数据表来获取标量值 (SELECT COUNT())。而且那个参数不会对你有多大好处,因为 SQL 没有参数。将文本放到标签上与从标签中获取 something 的方式正好相反。请阅读How to Ask 并采取tour
  • 如何显示值 (SELECT COUNT())?
  • 首先,您需要从数据库中获取值,但我不确定代码是否会这样做。您应该对您尝试使用的 DB Provider 对象进行一些研究。阅读How to Ask 并获取tour

标签: mysql vb.net count display


【解决方案1】:

使用与填充 DataGridView 相同的 DataTable。只需将您的 select 语句更改为 Select * from tableName。我使用了 2 的索引,但更改为您表中的任何内容。列索引从零开始。

        Dim totalSedans As Integer = 0
        Dim totalMotorcycles As Integer = 0
        Dim totalConvertable As Integer = 0
        For Each row As DataRow In table.Rows
            Select Case row(2).ToString
                Case "Sedan"
                    totalSedans += 1
                Case "Motorcycle"
                    totalMotorcycles += 1
                Case "Convertable"
                    totalConvertable += 1
                Case Else
                    Debug.Print("Something doesn't match categories")
            End Select
        Next
        lblConvertable.Text = totalConvertable.ToString
        lblMotorcycles.Text = totalMotorcycles.ToString
        lblSedan.Text = totalSedans.ToString

【讨论】:

    【解决方案2】:

    分配数据源后,只需添加以下内容:

     Label1.Text=datagridview1.rows.count
    

    Text 是许多控件的属性,如标签、按钮等。此属性可用于在控件上显示文本覆盖。 Datagridview 有行,对吗?所以,正如你所说,你想显示 datagridview 包含的行数。所以你需要做的就是使用Datagridview1.rows.count,我认为这个不需要任何解释。

    不管怎样,让我们​​更进一步。

    你也说过

    datagridview 中有 8 辆轿车和 5 辆摩托车,我希望它显示在标签中。

    默认情况下,没有应用程序可以了解有多少记录匹配 Sedans 和 Motorcycles 。但是如上所述,vb 能够计算 datagridview 的行(默认情况下/通过简单的代码)。所以试着想一想,如果 datagridview 在任何单元格中只有包含 Sedans 或 Motorcycles 的行,vb.net 可能很容易算了。。对吧??

    所以,如果你问我,我们如何只获得包含 Sedans 或 Motors 的行,那么我想你,谷歌如何只显示结果你在寻找而不是展示它所拥有的一切??答案很简单,Google 会准确显示您 搜索 的内容。当涉及到数据库时,我们称之为过滤/排序/甚至搜索。所以,你需要做的就是过滤你的数据库。有几种方法,如果我开始解释,会花费很多时间。但是,检查这些:

    •http://csharp.net-informations.com/datagridview/csharp-datagridview-filter.htm

    •Filtering DataGridView without changing datasource

    现在,让我们更深入。如果您浏览上面的链接,您将能够在任何单元格中仅显示包含 Sedans 左右的行。如果您想要全部怎么办行但只希望标签显示轿车的数量(行数)左右?

    在这种情况下,您可以使用Datatable。

    Learn more about Datatable here

    您可以轻松地使用数据表来计算仅包含您正在寻找的 QUERY 的行数。为此,您可以编写如下代码:

     Dim cmd as new MySqlCommand("Select * from [tablename](columnname)(@value)",con)
    
     cmd.parametres.addwithvalue("@value","Sedan")
     Dim table as new DataTable
     Dim adap as new MySqlDataAdapter
     adap.fill(table)
    
     If table.rows.count <=0 then
    
       Else
    
      LAbel1.text=table.rows.count
    

    让我从dim table 解释一下。这里我声明一个数据表。但在此之前我使用cmd.parametres.addwithvalue 过滤数据集。然后,我使用DataAdapter 并仅用th 填充DataTable e 行包含 SEDAN。现在,关注If table.Rows.Count &lt;=0 Then ...这表明是否没有包含查询的行(小于或等于0)。然后我使用Else 语句,这意味着数据表是否包含与查询匹配的行.在else语句中,我将Datatable的行数添加为Label中的字符串/文本..

    我希望这已经足够了,这个解释也将帮助你。

    【讨论】:

    • raylan 这里有很多很好的思考材料。 OP 对 cmd.parameters.Add 的使用比 .AddWithValue 更安全一些。见blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…
    • 您的命令没有在任何地方使用?适配器应该知道它的命令吗?
    猜你喜欢
    • 2016-01-15
    • 2022-01-22
    • 2019-02-13
    • 2021-06-11
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2012-08-24
    • 2014-11-14
    相关资源
    最近更新 更多