嵌入式sql语句参数赋值问题
close;
sql.Clear;
sql.Add('update GoodsStore set RestNum = RestNum + :InputNum ,TotalNum = TotalNum + :InputNum where GoodsId = :GoodsId ');
Parameters.ParamByName('InputNum').Value := ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').NewValue - ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').OldValue;
Parameters.ParamByName('GoodsId').Value := ModifyDBGrid.DataSource.DataSet.FieldByName('GoodsId').OldValue;
ExecSQL;
sql语句如上,为什么用了同名参数时,比如:set RestNum = RestNum + :InputNum ,TotalNum = TotalNum + :InputNum,则执行的时候出现运行错误提示,不能将null赋值给totalnum,难道只有在RestNum = RestNum + :InputNum 这个语句时,inputnum才是赋值了的,第二个TotalNum = TotalNum + :InputNum语句中的inputnum的值为null?? 为什么是这样的呢?实现这个参数赋值的机制是什么呢?
问题点数:0、回复次数:4Top
1 楼karach(卡车)回复于 2003-11-02 11:52:50 得分 0
眼花,下午在来看,先去吃饭Top
2 楼angle097113(深思不解)回复于 2003-11-02 12:15:01 得分 0
一个语句中不能出现重复的参数的名称的!Top
3 楼jingbianfc(『静⊙变』)回复于 2003-11-02 15:17:58 得分 0
不能有同名参数,我遇到过的,改名就OK了
sql.Clear;
sql.Add('update GoodsStore set RestNum = RestNum + :InputNum1 ,TotalNum = TotalNum + :InputNum2 where GoodsId = :GoodsId ');
Parameters.ParamByName('InputNum1').Value := ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').NewValue - ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').OldValue;
Parameters.ParamByName('InputNum2').Value := ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').NewValue - ModifyDBGrid.DataSource.DataSet.FieldByName('InputNum').OldValue;
Parameters.ParamByName('GoodsId').Value := ModifyDBGrid.DataSource.DataSet.FieldByName('GoodsId').OldValue;
ExecSQL;Top
4 楼mnlisa()回复于 2003-11-02 15:24:51 得分 0
我知道怎么解决这个问题,
但是我想知道的是为什么不能用同名参数,,,
以及adoquery进行传递的机制是什么,Top




