Mysql 如何基于列表框进行升序分块

Mysql 如何基于列表框进行升序分块,mysql,vb.net,listbox,Mysql,Vb.net,Listbox,我有一个列表框,这些项目被加载到列表框1中 PRODUCTS METERS productA 100 productB 70 productC 20 productD 5 我想做的是,当用户按下“回车”键时,程序应该根据米的升序进行减法 Dim x As Integer Dim ans As Decimal x = ListBox1.Items.Count Dim da As New SqlDataAdapter

我有一个列表框,这些项目被加载到列表框1中

PRODUCTS     METERS
productA     100
productB      70
productC      20
productD       5
我想做的是,当用户按下“回车”键时,程序应该根据米的升序进行减法

  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,如上所示,但问题是这段代码 例如,文本框上的用户输入为175m。代码将175除以4=43.75m 每个乘积减去答案。为了说明我的观点,产品C和产品D最终为负,例如产品C(20m-43.75m=23.75m)

是否有任何代码或sql查询可用于使此代码按升序相减? eg用户输入175m

productA    100-100
productB    70-70
productC    20-5
productD     5

使产品D不会被触碰

答案就在你面前。。。一些伪代码

  • 获取用户输入(userInput)
  • 如果ProductA_quantity>userInput,则从ProductA end中减去userInput
  • 否则,如果userInput>ProductA,则从userInput中减去ProductA
  • 对其余产品继续相同的顺序,直到userInput=0

    • 也许你最好换一种方式来做。你做的不是减法,而是加法

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

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

      我不明白这里的逻辑是什么,为什么ProductA和ProductB要减去当前值,但其他值不同?你能给出你想要得到的输出吗?主要的逻辑是我们生产175m的最终产品,所以当你输入175m时,这175m是由3种产品生产的,分别是a,B,C,100米,然后是70米,最后是5米。其他的是不同的,因为最终产品已经完成,产品A,B将有0米,而C将有15米,D不变。让我来研究一下如何用vb解释这个问题。这个逻辑不太正确,我不认为,你需要一直减去productA,直到余数小于productA,然后用同样的方式减去productB(我认为)@Matt agree。。。虽然我认为我的逻辑只适用于更多的分支和条件,但你的逻辑更易于编码。事实上,你可以使用Mod来代替减法,得到即时的乘积。然后,如果有任何余数,则使用该值作为下一个产品的Mod。