与关系vb.net的计数表

时间:2019-03-21 12:06:28

标签: mysql sql vb.net ado.net

我有2个数据库表,分别是办公室和状态。状态包括有缺陷的零件,丢失的零件和丢失的零件。我想发生的事情是,每当我选择一个办公室时,该办公室的有缺陷,遗漏的零件和丢失的物品都会被计数并显示在文本框或标签中。

屏幕截图:

APPLICATION

DATABASE

sqlconnection.Open() 
Dim cmd As New MySqlCommand("Select Count(*) from cpfrtsdata where office = '" & ComboBox1.Text & "' ", sqlconnection) 
Dim i As Integer = cmd.ExecuteScalar() 
cmd = Nothing 
sqlconnection.Close() 
Label3.Text = i 

2 个答案:

答案 0 :(得分:1)

Select Count(*) from cpfrtsdata where office = 'Carpentry Shop'将返回办公室数等于Carpentry Shop的记录数。为了获得每个status的总数,您将需要多次发出SQL事务,如下所示:

Select Count(*) from cpfrtsdata where office = 'Carpentry Shop' and status = 'Defective'
Select Count(*) from cpfrtsdata where office = 'Carpentry Shop' and status = 'Lost'

,依此类推。或者,您也可以修改SQL以在一次事务中检索全部内容:

Select 
    sum(case status when 'Defective' then 1 else 0 end) as TotalDefective,
    sum(case status when 'Lost' then 1 else 0 end) as TotalLost,
    sum(case status when 'Missing Parts' then 1 else 0 end) as TotalMissingParts
from cpfrtsdata
where office = 'Carpentry Shop'
group by office

由于此查询返回一个表,因此您需要使用MySqlDataAdaptercmd.ExecuteReader

答案 1 :(得分:0)

我要检查的第一件事是验证您是否从组合框中获得了价值。单步调试器并验证期望值。然后检查以确保您从查询中获取了一个值。为控件提供比ComboBox1和Label3更好的名称,使用默认名称使用错误的控件太容易了。

然后我将从使用text属性切换到SelectedItem,以从控件中获取值。

MS Docs关于组合框说:

  

您可以使用这些属性来管理当前选中的项目   列表中的Text属性,以指定显示在   编辑字段中,使用SelectedIndex属性获取或设置当前   项和SelectedItem属性,以获取或设置对   对象。

Dim officeString As String = ComboBox1.SelectedItem.ToString()

此外,您需要在查询中使用参数来防止SQL注入攻击