-1

私は問題に直面しました

{
   double a = Convert.ToDouble(textBox1.Text);
   double b = Convert.ToDouble(textBox8.Text);
   textBox8.Text = (a + b).ToString();
   textBox1.Text = "";
   double c = Convert.ToDouble(textBox2.Text);
   double d = Convert.ToDouble(textBox9.Text);
   textBox9.Text = (c + d).ToString();
   textBox2.Text = "";
}


//cmd = new OleDbCommand("update Table1 set balance='" + textBox8 + "','" + textBox9.Text + "','" + textBox10.Text + "','" + textBox11.Text + "','" + textBox12.Text + "','" + textBox13.Text + "','" + textBox14.Text + "', where ID=" + textBox15.Text, con);
  cmd = new OleDbCommand("UPDATE Table1 SET OUT = ? " + " WHERE ID = ?", con);
  cmd.Parameters.AddWithValue("OUT", textBox8.Text);
  cmd.Parameters.AddWithValue("OUT", textBox9.Text);
  cmd.Parameters.AddWithValue("ID", textBox15.Text);

  con.Open();

  cmd.ExecuteNonQuery();

  con.Close();
  loaddata();
}

私は 2 を持っていますtextbox。1 つはバランス、もう 1 つは IN です

Balance はデータベースからの loaddata であり、IN はユーザーが値をキー入力できるようになっているため、

IN + Balance = Balance、これはデータベースに更新されます。

更新機能は完全に動作します。しかし、最初に値を追加してから更新を実行するにはどうすればよいですか? アドバイスします。

4

1 に答える 1

2

あなたはこれをやっているから

textBox8.Text = (a + b).ToString();
textBox9.Text = (c + d).ToString();

つまり、合計はtextBox8.Textandで表されますtextBox9.Text

それからあなたはこれをやっています

cmd.Parameters.AddWithValue("OUT", textBox8.Text); 
cmd.Parameters.AddWithValue("OUT", textBox9.Text); 

クエリは次のとおりです。

UPDATE Table1 SET OUT = textbox8.Text  WHERE ID = x
UPDATE Table1 SET OUT = textbox9.Text  WHERE ID = x

そのため、実行すると、 x の行cmd.ExecuteNonQuery()の列が 2 回更新されます。OUTIDTable1

最初に、その値が Text に設定されtextbox8、次に の値に更新されtextbox9ます。

私は、これはあなたが望むものではないと思います。

異なるID(つまり、異なる行)に対して、ループで実行したい場合があります。

 UPDATE Table1 SET OUT = textbox8.Text WHERE ID = x1
 UPDATE Table1 SET OUT = textbox9.Text WHERE ID = x2

また

IDは同じだが列が異なる

UPDATE Table1 SET OUT = textbox8.Text, AnotherColumn=textbox9.Text  WHERE ID = x
于 2013-03-26T07:50:03.180 に答える