Рассчитать проценты в ошибке обновления оператора умножения - PullRequest
0 голосов
/ 14 мая 2018

Я хочу изменить сумму HT в соответствии со скидкой в ​​моей базе данных.

Но у меня проблема с вычислением чистой цены после скидки.

У меня есть эта ошибка

Тип данных операнда nvarchar недопустим для оператора умножения

Вот мой код:

comm.CommandText = "UPDATE F_DOCLIGNE SET DL_DateBC = @date, 
DL_Remise01REM_Valeur = @remise, DL_PrixUnitaire = @pu, DL_MontantHT = 
(@remise * @pu) / 100 where AR_Ref = @code";

comm.Parameters.AddWithValue("@date", textBox_livr.Text);
comm.Parameters.AddWithValue("@pu", textBox_prix.Text);
comm.Parameters.AddWithValue("@code", textBox_art.Text);
comm.Parameters.AddWithValue("@remise", textBox_rem.Text);

DL_Remise01REM_Valeur = @remise is the discount 
DL_MontantHT = (@remise * @pu) / 100 is my price calculate with the discount

1 Ответ

0 голосов
/ 14 мая 2018

Как написали Гордон и Стюарт в комментариях, проблема в том, что вы используете AddWithValue.

При использовании AddWithValue компилятор должен вывести тип данных параметра из значения (и метаданных, если они существуют).
Если вы используете встроенный sql, у вас нет метаданных, поэтому тип параметра определяется правилами сопоставления .Net для SQL Server - и строки сопоставляются nvarchar.

Поэтому вместо AddWithValue используйте Add:

comm.Parameters.Add("@date", SqlDbType.Date).Value = textBox_livr.Text;
comm.Parameters.Add("@pu", SqlDbType.Int).Value = textBox_prix.Text;
comm.Parameters.Add("@code", SqlDbType.Int).Value = textBox_art.Text;
comm.Parameters.Add("@remise", SqlDbType.Int).Value = textBox_rem.Text;

Обратите внимание, что я использовал SqlDbType.Date и SqlDbType.Int по умолчанию, так как я не знаю фактические типы данных, которые вы используете в своей таблице - так же, как компилятор c #, который я не могу прочитать в вашей базе данных так что я должен угадать.

Для получения дополнительной информации прочитайте статью Джоэла Кехорна Можем ли мы уже прекратить использование AddWithValue ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...