一个delphi开发时遇到的问题

来源:百度知道 编辑:UC知道 时间:2024/04/20 21:36:56
在update时遇到一个列名无效的问题,代码如下:
price:=StrToCurrDef(editPrice.Text,0);
oldprice:=StrToCurrDef(ADOQuery1.FieldByName('mPrice').Text,0);

if price>oldprice then
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Text:='update j_Item_p set mPrice = price where cSubjectName='''+ADOQuery1.FieldByName('cSubjectName').Value+''' and cItemId='''+ADOQuery1.FieldByName('cItemId').Value+'''';
ADOQuery3.ExecSQL;
end;

我想实现的效果是当price货币型变量的值如果大于oldprice货币型变量的值时,系统自动把price的值赋给j_Item_p这张表里的mPrice这个字段的ADOQuery1的当前操作记录中。运行时报错说:price列名无效。(注意:是price而不是mPrice)
请教高手

这是你的语句错了。你的price 是外部的东西。如下:
ADOQuery3.SQL.Text:='update j_Item_p set mPrice =' +#39+ price +#39+' where cSubjectName='''+ADOQuery1.FieldByName('cSubjectName').Value+''' and cItemId='''+ADOQuery1.FieldByName('cItemId').Value+'''';

另外给点建议,''''尽量用#39代替,这样没那么容易弄错。