Query 的动态参数查询出错: Query :Parameter 'BatchNO'Not Found(100分)

  • 主题发起人 主题发起人 dorry
  • 开始时间 开始时间
D

dorry

Unregistered / Unconfirmed
GUEST, unregistred user!
动态参数插入语句 如下

Sqlstr:='Insert into SQunload(BatchNO,PartNO,RingType,SQOutdate,SQoutTime) Values(:BatchNO, :PartNO, :RingType, :SQOutdate, :SQoutTime)';

DM.FQuery.Close;
DM.FQuery.SQL.Clear;
DM.FQuery.SQL.text:=Sqlstr;
DM.FQuery.Params.ParamByName('BatchNO').AsInteger:=100;
//此处报错 :"FQuery :Parameter 'BatchNO'Not Found"
DM.FQuery.Params.ParamByName('PartNO').AsInteger:=1000;
DM.FQuery.Params.ParamByName('RingType').AsString:='qqq';
DM.FQuery.Params.ParamByName('SQOutdate').AsDate:=date;
DM.FQuery.Params.ParamByName('SQoutTime').AsTime:=Time;
DM.FQuery.ExecSQL;
反复核对 数据库表字段等没有问题.
不知何故,请高手解答.
 
貌似你的FQuery被自己覆盖了,跟踪一下 FQuery.sql.text.
 
DM.FQuery.Params.ParamByName('BatchNO').Value:=100;
DM.FQuery.Params.ParamByName('PartNO').Value:=1000;
DM.FQuery.Params.ParamByName('RingType').Value:='qqq';
DM.FQuery.Params.ParamByName('SQOutdate').Value:=date;
DM.FQuery.Params.ParamByName('SQoutTime').Value:=Time;
 
FQuery.sql.text.我仔细跟踪没有问题呀.
 
N0 N0 ? O 跟 零 ??
 
我觉得是不是你定义参数和调用参数 不一致啊, 按理说 Close 且Clear 不会有其他原因引起这个问题,肯定是SQL有问题. 而且是参数问题.
 
类似情况我也碰到过,在保证代码,参数类型都没错的情况下,还是出问题。后来把QUERY删除,重新放置一下就好了。看到有高手说好像是D版的问题。
 
终于找到答案:
Object inspector
Fquery.SQ:='select BatchNO,PartNO,RingType,SQOutdate,SQoutTime from SQunload'
把需要查询的字段名列出.
注意:如果换成 'Select * From SQunload' 后将出现如上问题.
或者在查询之前执行此语句.
select ID,BatchNO,PartNO,RingType,SQOutdate,SQoutTime RecipeNO from SQunload

谢谢各位.
分数我已经给各位了!Dorry.
 
多人接受答案了。
 
后退
顶部