猿问

声明标量变量 c#

当我执行我的代码时出现此错误:


必须声明标量变量“@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 具有我数据库中字段的值,它们用于计算数量。


如何在不执行过程的情况下声明标量变量?


qq_笑_17
浏览 247回答 3
3回答

慕姐4208626

如果,正如您在问题中暗示的那样,您想使用 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";

湖上湖

例如,如果@qte 是一个已经来自数据库的值,则它不是一个变量。您使用变量将值从代码发送到数据库。在您的情况下(如果我理解正确的话)您需要重写更新语句:UPDATE tablename SET column = (select 1) where otherecolum = @var在offcourse的情况下,您必须提供“select 1”实现来查询正确的值。
随时随地看视频慕课网APP
我要回答