Mysql 如何基于列表框进行升序分块
我有一个列表框,这些项目被加载到列表框1中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
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。