The code which I have is below, can you please inform me where the issue might be so we can drop the price by warehouse ID with 7%?
private void button4_Click(object sender, EventArgs e) { try { myConnection = new SqlConnection(frm.cs); myCommand = new SqlCommand("update Inventory set Price=@Price where WarehouseCode=6", myConnection); myConnection.Open(); myCommand.Parameters.AddWithValue("@Price", "@Price * 0.7"); myCommand.ExecuteNonQuery(); myConnection.Close(); MessageBox.Show("Update successfully!"); DisplayData(); if (myConnection.State == ConnectionState.Open) { myConnection.Dispose(); } }
Advertisement
Answer
As you are not assigning any value to @Price
in the C# code while your Warehouse Id
and the Discount rate
are subject to be assigned by the end-user, I recommend your code be like this:
private void button4_Click(object sender, EventArgs e) { try { var discountRate = 0.07; //could be Convert.ToDouble(textBox1.Text) or something else var warehouseId = 6; //again, could be Convert.ToInt32(textBox2.Text) or something else myConnection = new SqlConnection(frm.cs); myCommand = new SqlCommand("update Inventory set Price=Price*(1-@DiscountRate) " + "where WarehouseCode=@WarehouseId", myConnection); myConnection.Open(); myCommand.Parameters.AddWithValue("@DiscountRate", discountRate); myCommand.Parameters.AddWithValue("@WarehouseId", warehouseId); myCommand.ExecuteNonQuery(); myConnection.Close(); MessageBox.Show("Update successfully!"); DisplayData(); if (myConnection.State == ConnectionState.Open) { myConnection.Dispose(); } } catch { } }
I would also recommend you think again about your query as it will update all products price with the same value, you may consider passing parameter @ProductId
and your query be
update Inventory set Price=Price*(1-@DiscountRate) where WarehouseCode=@WarehouseId and ProductCode=@ProductId
sure that was for example.