Объявить скалярную переменную c # - PullRequest
0 голосов
/ 18 мая 2018

Когда я выполняю свой код, у меня появляется эта ошибка:

Должна быть объявлена ​​скалярная переменная "@qte".

        Connection newconnection = new Connection();
        newconnection.Connection_Today();

        SqlCommand comm = new SqlCommand();
        comm.Connection = Connection.conn;

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

        SqlParameter param = new SqlParameter("qte", SqlDbType.Int);
        SqlParameter param1 = new SqlParameter("remise", SqlDbType.Int);

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

        comm.ExecuteNonQuery();

Когда я пытаюсь comm.Parameters.AddWithValue("@qte", DL_Qte) У меня есть ошибка

Имя 'DL_Qte' не существует в текущем контексте

Мои переменные @qte и @remise имеют значения полей вмоя база данных, и они используются для расчета суммы.

Как я могу объявить скалярные переменные без выполнения процедур?

Ответы [ 3 ]

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

Если, как вы подразумеваете в своем вопросе, вы хотите использовать значения полей DL_Qte & DL_Remise01REM_Valeur, а не обновлять их - вы можете использовать их напрямую, если они находятся в той же строке, которую вы обновляете:

comm.CommandText = @"UPDATE F_DOCLIGNE SET DO_DateLivr = @date, DL_PrixUnitaire = @pu, 
        DL_MontantHT = (@pu - ((DL_Remise01REM_Valeur * @pu) / 100)) * DL_Qte 
        where AR_Ref = @code";
0 голосов
/ 18 мая 2018

Вы создали экземпляр параметра "@qte" (переменная "param") с помощью

SqlParameter param = new SqlParameter("qte", SqlDbType.Int);

, но не добавили этот "param" с помощью comm.Parameters.Add, поэтому вот такпараметр отсутствует.

, поэтому вы должны сделать:

comm.Parameters.Add(param);
0 голосов
/ 18 мая 2018

Если, например, @qte - это значение, которое уже получено из базы данных, оно не является переменной.Вы используете переменные для отправки значений из вашего кода в БД.В вашем случае (если я правильно понял) вам нужно переписать оператор обновления:

UPDATE tablename SET column = (select 1) where otherecolum = @var

Где, конечно, вы должны предоставить реализацию 'select 1' для запроса правильного значения.

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