vijay_bale Ответов: 1

Когда я обновляю базу данных SQL с помощью C#, добавляется одна новая запись.


if I edited one value of one field and click on button for update one new record is adding not updating current record. Where I did wrong.If I touched value of that field only this is happining. Here is My code for updating 
.

SqlCommand cmd = new SqlCommand("update tempsales set [date]=@label2,[customername]=@label3,[billno]=@label4,[itemname]=@label5,[qty]=@label6,[price]=@label7,[tax]=@label8,[itemtot]=@label16 where [sno]=@label18", con);
                cmd.Parameters.Add("@label2", dateTimePicker1.Value);
                cmd.Parameters.Add("@label3", txtcust.Text);
                cmd.Parameters.Add("@label4", txtbno.Text);
                cmd.Parameters.Add("@label5", txtName.Text);
                cmd.Parameters.Add("@label6", txtQty.Text);
                cmd.Parameters.Add("@label7", txtPrice.Text);
                cmd.Parameters.Add("@label8", txtTax.Text);
                cmd.Parameters.Add("@label16", txtTotal.Text);//I wrote Add function on leave Event
                cmd.Parameters.Add("@label18", txtslno.Text);
                cmd.ExecuteNonQuery();


Что я уже пробовал:

Для этого поля оставьте только одну функцию для вставки.Есть ли вообще возможность отключить эту функцию во время обновления?

1 Ответов

Рейтинг:
10

OriginalGriff

Если вы написали функцию в событии Leave текстового поля и эта функция автоматически выполняет операцию вставки, то эта функция будет вызываться каждый раз, когда пользователь переключается с этого текстового поля на любой другой элемент управления, способный принимать ввод.

Мы не можем "отменить" это, когда код, который вы показываете в своем вопросе, выполняется - операция вставки уже была выполнена в БД и строка вставлена.
Предположим, вы хотите отключить автоматическую вставку - полностью удалить обработчик событий Leave - и вручную проверить, нужна ли вставка или обновление, когда пользователь говорит "Я закончил" и вызывается приведенный выше код.