为什么会产生 query1:“parameter 'value' not found”的错误?(200分)

  • 主题发起人 主题发起人 amyfun
  • 开始时间 开始时间
A

amyfun

Unregistered / Unconfirmed
GUEST, unregistred user!
query1已经赋予了:select * from 表名 where 字段名 like:value or 字段名2 like :value

对于查询也赋予了:
begin
with module1.DataModule1.Query1 do
begin
close;
parambyname('value').asstring:='%'+edit1.Text+'%';
prepare;
open;
end;
end;
查询已经产生,而且单独运行一切顺利,问题出在:
当点击了其他查询框体后,再去模糊查询,就会产生这样的问题—— query1:“parameter 'value' not found”

这是为什么呢?还请大家帮助一下。
 
Parameters.ParamByName().asstring:='xx';
 
重新生成query1.sql.text
 
>>select * from 表名 where 字段名 like:value or 字段名2 like :value
select * from 表名 where 字段名 like :value or 字段名2 like :value
 
with module1.DataModule1.Query1 do
begin
close;
Sql.clear;
Sql.Add('select * from 表名 where 字段名 like:value or 字段名2 like :value');
parambyname('value').asstring:='%'+edit1.Text+'%';
prepare;
open;
end;
end;
每次都重发SQL语句,应该可解结。
 
谢谢大家,我正在调试,成功了后马上通知你们。
 
没有引号阿,你的sql语句肯定会出错了
 

with module1.DataModule1.Query1 do
begin
close;
sql.clear;
sql.add('select * from 表名 where 字段名 like:value or 字段名2 like :value
')
parambyname('value').asstring:='%'+edit1.Text+'%';
open;
end;
end;
 
可能你调用其他窗体时把QUERY1的SQL语句清空了。
还有你自己可以调式一下,在QUERY1 OPEN之前写上SHOWMESSAGE(query1.sql.text);
看看SQL语句是否正确。
 
同意李清红,可能你在进行别的查询时不小心把sql语句改变了。
 
再次谢谢大家的帮助与参与,李清红老师的解决方案已经处理了我的问题,感谢李老师!
 
后退
顶部