C# 从一个表添加并更新另一个表

C# 从一个表添加并更新另一个表,c#,asp.net,C#,Asp.net,它正在添加到库存表中,但当我单击它时,它不会更新另一个表中的字段。是否可以添加和更新2个表 这是在listview按钮外单击的添加按钮 protected void btnAdd_Click(object sender, EventArgs e) { bool existingSupply = IsExisting(); foreach (ListViewItem item in lvPODetails.Items) { TextBox quantity = (T

它正在添加到库存表中,但当我单击它时,它不会更新另一个表中的字段。是否可以添加和更新2个表

这是在listview按钮外单击的添加按钮

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 ProductID=@ProductID";

        } 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 POStatus=@POStatus WHERE PONo=@PONo";
        cmd.Parameters.AddWithValue("@POStatus", status);
        cmd.Parameters.AddWithValue("@PONo", txtPONo.Text);
        cmd.ExecuteNonQuery();
        con.Close();

    }
    Response.Redirect("Default.aspx");         
} 
protectedvoidbtnadd\u单击(对象发送者,事件参数e){
bool existingSupply=IsExisting();
foreach(lvPODetails.Items中的ListViewItem项){
TextBox数量=(TextBox)item.FindControl(“txtQuantity”);
Label ltr=(Label)item.FindControl(“lblProduct”);
TextBox odr=(TextBox)item.FindControl(“txtOrdered”);
字符串名称=ltr.Text;
int delivered=转换为.ToInt32(quantity.Text);
int ordered=Convert.ToInt32(odr.Text);
字符串状态=string.Empty;
如果(已交付>=已订购){
status=“Complete”;
}
如果(交付<订购){
status=“部分完成”;
}
con.Open();
SqlCommand cmd=新的SqlCommand();
cmd.Connection=con;
如果(现有电源){
cmd.CommandText=“更新库存集数量=数量+@数量,其中ProductID=@ProductID”;
}否则{
cmd.CommandText=“插入库存值(@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”,已交付);
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=“更新采购订单集POStatus=@POStatus,其中PONo=@PONo”;
cmd.Parameters.AddWithValue(“@POStatus”,状态);
cmd.Parameters.AddWithValue(“@PONo”,txtPONo.Text);
cmd.ExecuteNonQuery();
con.Close();
}
重定向(“Default.aspx”);
} 
我在这段代码中犯了什么错误?

像这样试试

        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 POStatus=@POStatus WHERE PONo=@PONo";
cmd.Parameters.AddWithValue("@POStatus", status);
cmd.Parameters.AddWithValue("@PONo", txtPONo.Text);
cmd.ExecuteNonQuery();

我建议您使用存储过程,但如果您想坚持使用内联查询,那么就用这个替换您的代码

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 ProductID=@ProductID";

        }

        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 POStatus=@POStatus WHERE PONo=@PONo", con);

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

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

    }
    Response.Redirect("Default.aspx");         
} 
protectedvoidbtnadd\u单击(对象发送者,事件参数e)
{
bool existingSupply=IsExisting();
foreach(lvPODetails.Items中的ListViewItem项)
{
TextBox数量=(TextBox)item.FindControl(“txtQuantity”);
Label ltr=(Label)item.FindControl(“lblProduct”);
TextBox odr=(TextBox)item.FindControl(“txtOrdered”);
字符串名称=ltr.Text;
int delivered=转换为.ToInt32(quantity.Text);
int ordered=Convert.ToInt32(odr.Text);
字符串状态=string.Empty;
如果(已交付>=已订购)
{
status=“Complete”;
}
如果(交付<订购)
{
status=“部分完成”;
}
con.Open();
SqlCommand cmd=新的SqlCommand();
cmd.Connection=con;
如果(现有电源)
{
cmd.CommandText=“更新库存集数量=数量+@数量,其中ProductID=@ProductID”;
}
其他的
{
cmd.CommandText=“插入库存值(@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”,已交付);
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=新SqlCommand(“更新采购订单集POStatus=@POStatus,其中PONo=@PONo”,con);
cmd1.Parameters.AddWithValue(“@POStatus”,状态);
cmd1.Parameters.AddWithValue(“@PONo”,txtPONo.Text);
cmd1.ExecuteOnQuery();
con.Close();
}
重定向(“Default.aspx”);
} 

您调试了代码吗?我建议使用存储过程,在事务就绪的情况下在存储过程中执行所有这些操作。