各位好!
我用adoquery编模糊查询时,检索事件总出这个错:参数'xm'没有默认值
请问,这个错误怎么解决啊?我总查不出来
涉及代码为:
var
xm,sqlstr:string;
begin
xm:=Trim(xm_ledit.Text);
//无名称输入,检索所有数据
if length(xm)<1 then
begin
sqlstr:='Select cno as 课程编号,cname as 课程名称,sort as 课程类别,content as 描述 from c_info';
adoQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open;
end
//有名称输入,模糊查询
else
begin
adoQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from c_info');
adoquery1.SQL.Add(' where xm like ''%'+xm+'%''');
ADOQuery1.Open; //单步运行到这蹦出错的
end;
end;
没有输入的时候,可以显示所有字段,只要输入字段,比如课程号:1,就出现那个错了;而且有一个奇怪的问题,就是:
我课程信息表里的“描述”content字段,字段类型是备注,本来是有记录的,可是检索出来,里面没有记录,只标注着(memo),这怎么才能显示里面的信息呀??这两个问题请大家指点!谢谢!
我用adoquery编模糊查询时,检索事件总出这个错:参数'xm'没有默认值
请问,这个错误怎么解决啊?我总查不出来
涉及代码为:
var
xm,sqlstr:string;
begin
xm:=Trim(xm_ledit.Text);
//无名称输入,检索所有数据
if length(xm)<1 then
begin
sqlstr:='Select cno as 课程编号,cname as 课程名称,sort as 课程类别,content as 描述 from c_info';
adoQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open;
end
//有名称输入,模糊查询
else
begin
adoQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from c_info');
adoquery1.SQL.Add(' where xm like ''%'+xm+'%''');
ADOQuery1.Open; //单步运行到这蹦出错的
end;
end;
没有输入的时候,可以显示所有字段,只要输入字段,比如课程号:1,就出现那个错了;而且有一个奇怪的问题,就是:
我课程信息表里的“描述”content字段,字段类型是备注,本来是有记录的,可是检索出来,里面没有记录,只标注着(memo),这怎么才能显示里面的信息呀??这两个问题请大家指点!谢谢!
浣犳兂瑕佺敤XM鐨勫€硷細
adoquery1.SQL.Add(' where :xm like ''%'+xm+'%''');
adoquery1.Parameters.ParamByName('XM').Value := XM;
adoquery1.Parameters.ParamByName('XM').Value := XM;
这里,你不应该输入 ':1'前面带有引号的字符串
不然
adoquery1.SQL.Add(' where xm like ''%'+xm+'%''');
这一句后传出来的是where xm like '%:1%'
ADOQuery如果发现里面有 :开头的,就会把他当成参数问问,为什么要输入 :1呢?
可是我改成:adoquery1.SQL.Add(' where :xm like ''%'+xm+'%''');
adoquery1.Parameters.ParamByName('XM').Value := XM;
还是不对呀?应该是输入课程号1就应该检索出1所对应的所有信息
可是与没有输入的情况一样,检索出所有的字段,没有实现模糊查询!!这是怎么回事?谢谢!
改成adoquery1.SQL.Add(' where :xm like'+ ''''+'%'+xm+'%'''');试试应该就可以了。
与没有输入的情况一样,检索出所有的字段,没有实现模糊查询........呀,抓狂了快!大家能告诉我这是为什么呀?