2015-10-01 2 views
0

Это добавление к таблице инвентаризации, но по мере того, как я нажимаю на нее, она не обновляет поле в другой таблице. Можно ли добавить и обновить 2 таблицы.Добавление из одной таблицы и обновление другой таблицы

Это кнопка добавить щелкните за пределами кнопки списке следует

protected void btnAdd_Click(object sender, EventArgs e) { 
    bool existingSupply = IsExisting(); 
    foreach (ListViewItem item in lvPODetails.Items) { 
     TextBox quantity = (TextBox)item.FindControl("txtQuantity"); 
     Label ltr = (Label)item.FindControl("lblProduct"); 
     TextBox odr = (TextBox)item.FindControl("txtOrdered"); 

     string name = ltr.Text; 
     int delivered = Convert.ToInt32(quantity.Text); 
     int ordered = Convert.ToInt32(odr.Text); 
     string status = String.Empty; 

     if (delivered >= ordered) { 
      status = "Complete"; 
     } 

     if (delivered < ordered) { 
      status = "Partially Completed"; 
     } 

     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     if (existingSupply) { 
      cmd.CommandText = "UPDATE Inventory SET Quantity=quantity + @Quantity WHERE [email protected]"; 

     } else { 
      cmd.CommandText = "INSERT INTO Inventory VALUES (@ProductID, @ProdCatID, @SupplierName, " + 
       "@Quantity, @CriticalLevel, @Price, @Status, @DateAdded, @DateModified)"; 

     } 

     cmd.Parameters.AddWithValue("@ProductID", name); 
     cmd.Parameters.AddWithValue("@ProdCatID", DBNull.Value); 
     cmd.Parameters.AddWithValue("@SupplierName", txtSupplier.Text); 
     cmd.Parameters.AddWithValue("@Quantity", delivered); 
     cmd.Parameters.AddWithValue("@CriticalLevel", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Price", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Status", DBNull.Value); 
     cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now); 
     cmd.Parameters.AddWithValue("@DateModified", DateTime.Now); 
     cmd.CommandText = "UPDATE PurchaseOrder SET [email protected] WHERE [email protected]"; 
     cmd.Parameters.AddWithValue("@POStatus", status); 
     cmd.Parameters.AddWithValue("@PONo", txtPONo.Text); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 
    Response.Redirect("Default.aspx");   
} 

Что может быть моя ошибка в этом коде?

+0

Вы отлаживали код? – Michael

+0

Я бы предложил использовать хранимую процедуру и выполнить все эти операции в рамках транзакции. – prashant

ответ

1

попробовать, как этот

 cmd.Parameters.AddWithValue("@ProductID", name); 
     cmd.Parameters.AddWithValue("@ProdCatID", DBNull.Value); 
     cmd.Parameters.AddWithValue("@SupplierName", txtSupplier.Text); 
     cmd.Parameters.AddWithValue("@Quantity", delivered); 
     cmd.Parameters.AddWithValue("@CriticalLevel", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Price", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Status", DBNull.Value); 
     cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now); 
     cmd.Parameters.AddWithValue("@DateModified", DateTime.Now); 
cmd.ExecuteNonQuery(); 

cmd = new SqlCommand(); 
cmd.Connection = con; 



cmd.CommandText = "UPDATE PurchaseOrder SET [email protected] WHERE [email protected]"; 
cmd.Parameters.AddWithValue("@POStatus", status); 
cmd.Parameters.AddWithValue("@PONo", txtPONo.Text); 
cmd.ExecuteNonQuery(); 
+0

Спасибо за ответ, он отлично работает – gamered123

+0

@ gamered123 приветствуется –

1

Я хотел бы предложить вам использовать хранимую процедуру, но если вы хотите придерживаться ти встроенных запросов замените код этим.

protected void btnAdd_Click(object sender, EventArgs e) 
{ 
    bool existingSupply = IsExisting(); 
    foreach (ListViewItem item in lvPODetails.Items) 
    { 
     TextBox quantity = (TextBox)item.FindControl("txtQuantity"); 
     Label ltr = (Label)item.FindControl("lblProduct"); 
     TextBox odr = (TextBox)item.FindControl("txtOrdered"); 

     string name = ltr.Text; 
     int delivered = Convert.ToInt32(quantity.Text); 
     int ordered = Convert.ToInt32(odr.Text); 
     string status = String.Empty; 


     if (delivered >= ordered) 
     { 
      status = "Complete"; 

     } 




     if (delivered < ordered) 
     { 
      status = "Partially Completed"; 

     } 

     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     if (existingSupply) 
     { 
      cmd.CommandText = "UPDATE Inventory SET Quantity=quantity + @Quantity WHERE [email protected]"; 

     } 

     else 
     { 
      cmd.CommandText = "INSERT INTO Inventory VALUES (@ProductID, @ProdCatID, @SupplierName, " + 
       "@Quantity, @CriticalLevel, @Price, @Status, @DateAdded, @DateModified)"; 

     } 

     cmd.Parameters.AddWithValue("@ProductID", name); 
     cmd.Parameters.AddWithValue("@ProdCatID", DBNull.Value); 
     cmd.Parameters.AddWithValue("@SupplierName", txtSupplier.Text); 
     cmd.Parameters.AddWithValue("@Quantity", delivered); 
     cmd.Parameters.AddWithValue("@CriticalLevel", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Price", DBNull.Value); 
     cmd.Parameters.AddWithValue("@Status", DBNull.Value); 
     cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now); 
     cmd.Parameters.AddWithValue("@DateModified", DateTime.Now); 
     cmd.ExecuteNonQuery(); 
     SqlCommand cmd1 = new SqlCommand("UPDATE PurchaseOrder SET [email protected] WHERE [email protected]", con); 

     cmd1.Parameters.AddWithValue("@POStatus", status); 
     cmd1.Parameters.AddWithValue("@PONo", txtPONo.Text); 

     cmd1.ExecuteNonQuery(); 
     con.Close(); 

    } 
    Response.Redirect("Default.aspx");   
} 
+2

remove 'con.Close();' before 'SqlCommand cmd1 =' –

Смежные вопросы