【问题标题】:Update inventory when sale is made vb.net销售时更新库存 vb.net
【发布时间】:2023-02-01 23:56:22
【问题描述】:

我有一个 SalesForm,用户可以在其中添加他们的销售额。在我的inventory 表中,我有轮胎总数、库存数量和销售数量。我知道我有重复的字段(总轮胎和库存数量),但只有库存数量将用于更新,总轮胎将用于参考检查他们有多少已售罄以及哪些正在快速售罄.

我想要做的是在我点击 SalesForm 上的保存以添加新销售后,库存表也应该更新。库存数量和销售数量应加​​上销售表格中的销售数量并保存到库存中。

但是计算不起作用。更新后我看到相同的信息。

这是更新代码:

 Public Sub updatestock()
    MysqlConn = New MySqlConnection
    MysqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=golden_star"
    Dim a As Integer
    '  Dim total, onstock, quantity As String
    Dim READER As MySqlDataReader
    Try
        MysqlConn.Open()
        Dim Query As String
        '  Dim Sda As MySqlDataAdapter
        a = Val(txtStock.Text) - Val(ComboBox3.Text)
        'total = txtStock.Text
        'quantity = ComboBox3.Text
        'onstock = total - quantity
        Query = "update inventory set quantity_onstock = '" & a & "' where brand = '" & ComboName.Text & "' and size = '" & ComboSize.Text & "' "
        Command = New MySqlCommand(Query, MysqlConn)
        MessageBox.Show("Stock Updated Successfully")
        READER = Command.ExecuteReader


    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MysqlConn.Dispose()
    End Try
End Sub

截图前端:

屏幕截图数据库,因为它保存相同的数字,所以不进行计算:

然后我在点击保存后将方法名称updatestock()粘贴到按钮点击上,但它不起作用。有人可以用更新声明纠正我吗?

【问题讨论】:

  • 神圣的 SQL 注入漏洞,蝙蝠侠!
  • 另外:那些图像不起作用,你有没有看到消息框?
  • @JoelCoehoorn 是的,我确实看到了股票更新成功以及销售成功添加的消息框,但它没有更新,只是在字段上添加相同的数字而不是减去
  • @JoelCoehoorn 我应该在更新语句中添加计算部分吗?
  • 这取决于表单的工作方式和值是什么,但您可能需要像quantity_onstock = quantity_onstock - @Qty这样的东西

标签: mysql vb.net


【解决方案1】:

这里有一个很多构建查询代码的更好方法:

Public Sub UpdateStock(newQty As Integer, brand As String, size As String)
    Dim SQL As String = "UPDATE Inventory SET quantity_onstock = @Qty WHERE brand = @Brand AND size = @Size"

    Using cn  As New MySqlConnection("server=localhost;userid=root;password=root;database=golden_star"), _
          cmd As New MySqlCommand(SQL, cn)

        cmd.Parameters.AddWithValue("@Qty", newQty)
        cmd.Parameters.AddWithValue("@Brand", brand)
        cmd.Parameters.AddWithValue("@Size", size)

        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub

请注意 Using 块、查询参数、函数参数而不是表单控件,以及缺少错误处理或消息传递。该方法与运行查询和仅运行查询有关。您应该对所有查询采用这些更改。另请注意使用 ExecuteNonQuery() 而不是 ExecuteReader()。

这意味着您还需要更改调用该函数的代码。它将需要处理消息和错误,并提供参数参数。

这是否能解决您的问题很难说。

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2023-03-22
    • 2022-01-11
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多