我有一个列表框,这些项目已加载到列表框1
PRODUCTS METERS
productA 100
productB 70
productC 20
productD 5
我想要做的是当用户按下“ENTER”时,程序应该根据仪表按升序减去。
Dim x As Integer
Dim ans As Decimal
x = ListBox1.Items.Count
Dim da As New SqlDataAdapter
Dim strcnn As New SqlConnection
Dim cmd As New SqlCommand
Try
strcnn.ConnectionString = ClsFuncs.connstring("connectionstring1")
strcnn.Open()
cmd.Connection = strcnn
ans = TextBox10.Text / x
cmd.Connection = strcnn
cmd.CommandText = "update " & tbl & " set quantity =quantity-" & ans & " where flg2=5 and quantity >0"
cmd.ExecuteNonQuery()
MsgBox("Subtracted mass on each products", MsgBoxStyle.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
strcnn.Close()
End Try
到目前为止,我已设法使用如上所示的listbox.items.count,但问题是此代码划分 例如,文本框上的用户输入为175米,代码除以175乘以4 = 43.75m 并在每个产品上减去答案。达到我的观点产品C和产品D最终为负,例如产品C(20m-43.75m = 23.75m)
我可以使用任何代码或SQL查询来使此代码按升序减去吗? 例如用户输入175m
productA 100-100
productB 70-70
productC 20-5
productD 5
这样产品D不会被触及?
答案 0 :(得分:0)
你面前有答案...一些psudocode
答案 1 :(得分:0)
也许你反过来做得更好。你做了一个补充,而不是减去。
select a.name, (select sum(b.meters) from products b where b.meters >= a.meters) from products a
通过添加结果,您可以轻松找到所需的产品。对于175,您可以获得所有返回总和小于175的产品。(如果总和不是175,您可能还需要添加下一个产品。)