【发布时间】:2016-09-22 09:43:08
【问题描述】:
我正在使用存储过程来更新库存项目数量。所有的代码看起来都很好,但不知道为什么它不工作它应该工作。我实际上想更新项目中称为 masterDetials 的库存表中购买项目 (Pur_Quantity) 的值,但数量没有得到更新,它只是将当前值放在上一个值旁边,即假设上一个项目库存是52 我新购买了 8 个数量,所以项目数量应该是 60,但它显示给我的是 528 而不是 60。 谁能告诉我为什么会这样以及如何解决? 我知道这是一个简单的问题,但我对编程很陌生,如果看起来很愚蠢,我很抱歉。 这是我的存储过程:
ALTER PROCEDURE [dbo].[usp_UpdatePurchaseStockQuantity]
(@S_No int,
@Bill_No int,
@Pur_Date datetime,
@Ven_Name NVARCHAR (50),
@ItemName NVARCHAR (150),
@Quantity NVARCHAR (50),
@Unit_Price NVARCHAR (50),
@Total_Price NVARCHAR (50),
@Sub_Total NVARCHAR (50),
@Discount NVARCHAR (50),
@Grand_Total NVARCHAR (50),
@Paid NVARCHAR (50),
@Balance NVARCHAR (50),
@Remarks NVARCHAR (250),
@Pur_Quantity NVARCHAR (50)
)
AS
BEGIN
INSERT Into Purchase_Cart(S_No, Bill_no, Pur_Date, Ven_Name, ItemName, Quantity, Total_Price, Unit_Price, Discount, Sub_Total, Grand_Total, Paid, Balance, Remarks)
VALUES (@S_No, @Bill_No, @Pur_Date, @Ven_Name, @ItemName, @Quantity, @Total_Price, @Unit_Price, @Discount, @Sub_Total, @Grand_Total, @Paid, @Balance, @Remarks)
UPDATE MasterDetails
SET Pur_Quantity = (Pur_Quantity + @Quantity)
WHERE ItemName = @ItemName
END
这是vb代码:
conn.Open()
For x As Integer = 0 To CartDataGridView.Rows.Count - 1
Dim SNo As Integer = CartDataGridView.Rows(x).Cells(0).Value
Dim ItemName As String = CartDataGridView.Rows(x).Cells(1).Value
Dim Qunatity As String = CartDataGridView.Rows(x).Cells(2).Value
Dim UnitPrice As String = CartDataGridView.Rows(x).Cells(3).Value
Dim TotalPrice As String = CartDataGridView.Rows(x).Cells(4).Value
Dim cmd As New SqlCommand("usp_MDAndPurchaseCartAddNewRecord", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@S_No", SNo)
cmd.Parameters.AddWithValue("@Bill_No", BillNoTextBox.Text)
cmd.Parameters.AddWithValue("@Pur_Date", DateTimePicker1.Value.Date)
cmd.Parameters.AddWithValue("@Ven_Name", VendorNameComboBox.Text)
cmd.Parameters.AddWithValue("@ItemName", ItemName)
cmd.Parameters.AddWithValue("@Quantity", Qunatity)
cmd.Parameters.AddWithValue("@Unit_Price", UnitPrice)
cmd.Parameters.AddWithValue("@Total_Price", TotalPrice)
cmd.Parameters.AddWithValue("@Sub_Total", TotalPriceTextBox.Text)
cmd.Parameters.AddWithValue("@Discount", DiscountTextBox.Text)
cmd.Parameters.AddWithValue("@Grand_Total", GrandTotalTextBox.Text)
cmd.Parameters.AddWithValue("@Paid", PaidTextBox.Text)
cmd.Parameters.AddWithValue("@Balance", BalanceTextBox.Text)
cmd.Parameters.AddWithValue("@Remarks", RemarksTextBox.Text)
cmd.Parameters.AddWithValue("@Pur_Quantity", Qunatity)
cmd.ExecuteNonQuery()
cmd.Dispose()
【问题讨论】:
-
您的列需要具有适当的数据类型。您正在使用字符串作为数量。当您添加 2 个字符串时,它们只会连接起来,这就是您所看到的。很多这些参数类型应该改变。
-
是的,我明白你的意思,这实际上是原因。修好了干杯
标签: sql sql-server vb.net