为了账号安全,请及时绑定邮箱和手机立即绑定

声明标量变量 c#

声明标量变量 c#

C#
qq_笑_17 2021-06-19 18:00:14
当我执行我的代码时出现此错误:必须声明标量变量“@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 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-06-20
?
湖上湖

TA贡献2003条经验 获得超2个赞

例如,如果@qte 是一个已经来自数据库的值,则它不是一个变量。您使用变量将值从代码发送到数据库。在您的情况下(如果我理解正确的话)您需要重写更新语句:

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

在offcourse的情况下,您必须提供“select 1”实现来查询正确的值。


查看完整回答
反对 回复 2021-06-20
  • 3 回答
  • 0 关注
  • 246 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信