Parameter not found Data type mismatch in criteria expression

时间:2022-10-13 16:29:44
with adoquery1 do
               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”找不到了。

#2


数据转换也没用,能说明下具体怎么改吗?我现在是在做一个系统的入库单,提问的代码就是入库进去之后,
给物料表中相应的物料加上入库的数量

#3


补充一下我在最前面已经定了数字整型了var
  AdoQuery1:TAdoQuery;
  sl:integer;
  str:string;
begin

#4


引用 3 楼 ydh1989 的回复:
补充一下我在最前面已经定了数字整型了var
  AdoQuery1:TAdoQuery;
  sl:integer;
  str:string;
begin

先单步执行,看那条语句出错。

#5


错误一直在initialize;                 
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression

#6


引用 5 楼 ydh1989 的回复:
错误一直在initialize;  
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression

你把这两句注释掉,看会不会错。如果不出错了,说明Initialize不能用在这个地方。

#7


注释掉后还是一样,数据类型不匹配

#1


Data type mismatch in criteria expression
这句是说你的数据类型不匹配。如果是数值类型显式转换一下(如StrToFloat(EditPrice.text),看结果如何。
第二个你前面定义的参数是"SL",改成“#SL#”,因为你后面参数赋值时,“SL”找不到了。

#2


数据转换也没用,能说明下具体怎么改吗?我现在是在做一个系统的入库单,提问的代码就是入库进去之后,
给物料表中相应的物料加上入库的数量

#3


补充一下我在最前面已经定了数字整型了var
  AdoQuery1:TAdoQuery;
  sl:integer;
  str:string;
begin

#4


引用 3 楼 ydh1989 的回复:
补充一下我在最前面已经定了数字整型了var
  AdoQuery1:TAdoQuery;
  sl:integer;
  str:string;
begin

先单步执行,看那条语句出错。

#5


错误一直在initialize;                 
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression

#6


引用 5 楼 ydh1989 的回复:
错误一直在initialize;  
application.MessageBox('ÄúÒѳɹ¦Ìí¼Ó¸ÃÐÅÏ¢£¡','ÌáʾÐÅÏ¢',mb_ok or mb_ICONINFORMATION);这两条上,我估计是放在哪个END后面的次序搞错了,试了好多次都失败,还是Data type mismatch in criteria expression

你把这两句注释掉,看会不会错。如果不出错了,说明Initialize不能用在这个地方。

#7


注释掉后还是一样,数据类型不匹配