begin
close;
sql.Clear;
sql.Add('select * from 库存物料表 where 物料编号=:no');
Parameters.ParamByName('no').Value:=trim(editsno.Text);
open;
if recordcount>0 then
begin
sl:=fieldbyname('数量').Asinteger+strtoint(editnumber.text);
close;
sql.Clear;
sql.Add('update 库存物料表 set 数量=:sl, where 物料编号=:no');
Parameters.ParamByName('no').Value:=trim(editsno.Text);
Parameters.ParamByName('sl').Value:=sl;
execsql;
end
else
begin
with adoquery1 do
begin
close;
sql.Clear;
str:='insert into 库存物料表(物料编号,物料名称,物料类型,理论价格,数量,备注用途,放置地点,管理员编号)';
str:=str+'values(:no,:name,:style,:price,:sl,:use,:place,:mno)';
sql.Add(str);
Parameters.ParseSQL(SQL.Text, True);
Parameters.ParamByName('no').Value:=trim(editsno.Text);
Parameters.ParamByName('name').Value:=trim(editname.Text);
Parameters.ParamByName('style').Value:=trim(editstyle.Text);
Parameters.ParamByName('price').Value:=trim(editprice.Text);
Parameters.ParamByName('sl').Value:=trim(editnumber.Text);
Parameters.ParamByName('use').Value:=trim(edituse.Text);
Parameters.ParamByName('place').Value:=trim(editplace.Text);
Parameters.ParamByName('mno').Value:=trim(editmno.Text);
ExecSQL;
initialize; //重设各个EDIT的值
application.MessageBox('您已成功添加该信息!','提示信息',mb_ok or mb_ICONINFORMATION);
end;
end;
出现问题,运行不了,说 “Data type mismatch in criteria expression” ,自己把 str:=str+'values(:no,:name,:style,:price,:sl,:use,:place,:mno)'的:sl改为#sl#,出现Parameter sl not found,请教高手怎么解决?急!!!!!!!!1
7 个解决方案
#1
Data type mismatch in criteria expression
这句是说你的数据类型不匹配。如果是数值类型显式转换一下(如StrToFloat(EditPrice.text),看结果如何。
第二个你前面定义的参数是"SL",改成“#SL#”,因为你后面参数赋值时,“SL”找不到了。
这句是说你的数据类型不匹配。如果是数值类型显式转换一下(如StrToFloat(EditPrice.text),看结果如何。
第二个你前面定义的参数是"SL",改成“#SL#”,因为你后面参数赋值时,“SL”找不到了。
#2
数据转换也没用,能说明下具体怎么改吗?我现在是在做一个系统的入库单,提问的代码就是入库进去之后,
给物料表中相应的物料加上入库的数量
给物料表中相应的物料加上入库的数量
#3
补充一下我在最前面已经定了数字整型了var
AdoQuery1:TAdoQuery;
sl:integer;
str:string;
begin
AdoQuery1:TAdoQuery;
sl:integer;
str:string;
begin
#4
先单步执行,看那条语句出错。
#5
错误一直在initialize;
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression
#6
你把这两句注释掉,看会不会错。如果不出错了,说明Initialize不能用在这个地方。
#7
注释掉后还是一样,数据类型不匹配
#1
Data type mismatch in criteria expression
这句是说你的数据类型不匹配。如果是数值类型显式转换一下(如StrToFloat(EditPrice.text),看结果如何。
第二个你前面定义的参数是"SL",改成“#SL#”,因为你后面参数赋值时,“SL”找不到了。
这句是说你的数据类型不匹配。如果是数值类型显式转换一下(如StrToFloat(EditPrice.text),看结果如何。
第二个你前面定义的参数是"SL",改成“#SL#”,因为你后面参数赋值时,“SL”找不到了。
#2
数据转换也没用,能说明下具体怎么改吗?我现在是在做一个系统的入库单,提问的代码就是入库进去之后,
给物料表中相应的物料加上入库的数量
给物料表中相应的物料加上入库的数量
#3
补充一下我在最前面已经定了数字整型了var
AdoQuery1:TAdoQuery;
sl:integer;
str:string;
begin
AdoQuery1:TAdoQuery;
sl:integer;
str:string;
begin
#4
先单步执行,看那条语句出错。
#5
错误一直在initialize;
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression
#6
你把这两句注释掉,看会不会错。如果不出错了,说明Initialize不能用在这个地方。
#7
注释掉后还是一样,数据类型不匹配