如何根据列表框按升序减去

时间:2014-01-28 10:56:25

标签: mysql vb.net listbox

我有一个列表框,这些项目已加载到列表框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不会被触及?

2 个答案:

答案 0 :(得分:0)

你面前有答案...一些psudocode

  • 获取用户输入(userInput)
  • 如果ProductA_quantity> userInput然后从productA end中减去userInput
  • 如果userInput> ProductA从userInput
  • 中减去ProductA
  • 继续使用剩余产品的相同序列,直到userInput = 0

答案 1 :(得分:0)

也许你反过来做得更好。你做了一个补充,而不是减去。

select a.name, (select sum(b.meters) from products b where b.meters >= a.meters) from products a

通过添加结果,您可以轻松找到所需的产品。对于175,您可以获得所有返回总和小于175的产品。(如果总和不是175,您可能还需要添加下一个产品。)