您的位置:首页 > 数据库

写sql语句时不要使用重复参数

2008-11-03 17:47 267 查看
在写程序时,会员累计消费需要+消费额,会员余额需要-消费额,我就用了同一个参数代替消费'额,结果碰了一鼻子灰.让我头疼了几乎一下午,最后还是项目经理指点迷津才得以解决.

原来的错误代码:

with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息

begin

close;

sql.Clear;

sql.Add('UPDATE hy SET hy_xfje = hy_xfje+:xfje, hy_xfcs = hy_xfcs+1, hy_je = hy_je-:xfje, hy_jf = hy_jf+:jf, hy_jfsyje = hy_jfsyje+:jfys ');

sql.Add('WHERE (((hy_id)=:hy_id));');

Parameters.ParamByName('xfje').Value := xfje;

Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);

Parameters.ParamByName('jfys').Value := jfys;

Parameters.ParamByName('hy_id').Value := hy_id;

end;

后来的正确代码:

with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息

begin

close;

sql.Clear;

sql.Add('UPDATE hy SET hy_xfje = hy_xfje+:xfje, hy_xfcs = hy_xfcs+1, hy_je = hy_je-:xfje1, hy_jf = hy_jf+:jf, hy_jfsyje = hy_jfsyje+:jfys ');

sql.Add('WHERE (((hy_id)=:hy_id));');

Parameters.ParamByName('xfje').Value := xfje;

Parameters.ParamByName('xfje1').Value := xfje;

Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);

Parameters.ParamByName('jfys').Value := jfys;

Parameters.ParamByName('hy_id').Value := hy_id;

end;

没改之前程序编译 运行没有任何错误弹出,就是hy-je这个字段执行后为空. 把第二处的xfje改为xfje1,并给xfje1赋值后执行成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: