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?? 为什么是这样的呢?实现这个参数赋值的机制是什么呢?
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;
但是我想知道的是为什么不能用同名参数,,,
以及adoquery进行传递的机制是什么,