我想实现模糊查询if radiogroup1.ItemIndex=3 then
BEGIN
xscj.Close;
xscj.SQL.Clear;
xscj.SQL.add('SELECT T_XS.XSCODE,T_XS.XSNAME,T_XK.XKKCCODE,T_KC.KCNAME,T_XK.XKSCORE,T_XK.XKTERM,T_KC.KCCREDIT,T_KC.KCPERID');
xscj.SQL.add('FROM T_XS');
xscj.SQL.add('inner join T_XK');
xscj.SQL.add('on (T_XS.XSCODE=T_XK.XKXSCODE)');
xscj.SQL.add('inner join T_KC');
xscj.SQL.add('on (T_XK.XKKCCODE=T_KC.KCCODE)');
xscj.SQL.add('where T_xs.xscode lixe :NUMBER+%');
xscj.Parambyname('NUMBER').ASSTRING:=edit2.text;
xscj.prepare;
xscj.open;
END;这是代码 
重点是这个语句
我不知道用的对不对
提示错误是 number 没有定义xscj.SQL.add('where T_XK.XKcode lixe :NUMBER+%');

解决方案 »

  1.   

    好像这种模糊查询的不能用参数,因为模糊查询的内容必须是字符串
    也就是用单引号标记的,那样它就认为它只是个字符串,而不会作为参数处理,
    所以只能这么写:
    xscj.SQL.add('where T_XK.XKcode like '''+edit2.text+'%''');
    如果左边也要模糊查询,那就加一个%:
    xscj.SQL.add('where T_XK.XKcode like ''%'+edit2.text+'%''');另外:xscj.Parambyname('NUMBER').ASSTRING:=edit2.text;
    这句话就不要了
      

  2.   

    xscj.SQL.add('where T_XK.XKcode like :NUMBER');xscj.Parambyname('NUMBER').ASSTRING:='''' + edit2.text + '%''';
      

  3.   

    xscj.SQL.add('where T_XK.XKcode like :NUMBER+%');
      

  4.   

    xscj.SQL.add('where T_XK.XKcode like ''%'+edit2.text+'%''');
      

  5.   

    if radiogroup1.ItemIndex=3 then
    BEGIN
    xscj.Close;
    xscj.SQL.Clear;
    xscj.SQL.add('SELECT T_XS.XSCODE,T_XS.XSNAME,T_XK.XKKCCODE,T_KC.KCNAME,T_XK.XKSCORE,T_XK.XKTERM,T_KC.KCCREDIT,T_KC.KCPERID');
    xscj.SQL.add('FROM T_XS');
    xscj.SQL.add('inner join T_XK');
    xscj.SQL.add('on (T_XS.XSCODE=T_XK.XKXSCODE)');
    xscj.SQL.add('inner join T_KC');
    xscj.SQL.add('on (T_XK.XKKCCODE=T_KC.KCCODE)');
    xscj.SQL.add('where T_xs.xscode like '''+edit2.text+'%''');
    xscj.prepare;
    xscj.open;
    END;
      

  6.   

    if radiogroup1.ItemIndex=3 then
    BEGIN
    xscj.Close;
    xscj.SQL.Clear;
    xscj.SQL.add('SELECT T_XS.XSCODE,T_XS.XSNAME,T_XK.XKKCCODE,T_KC.KCNAME,T_XK.XKSCORE,T_XK.XKTERM,T_KC.KCCREDIT,T_KC.KCPERID');
    xscj.SQL.add('FROM T_XS');
    xscj.SQL.add('inner join T_XK');
    xscj.SQL.add('on (T_XS.XSCODE=T_XK.XKXSCODE)');
    xscj.SQL.add('inner join T_KC');
    xscj.SQL.add('on (T_XK.XKKCCODE=T_KC.KCCODE)');
    xscj.SQL.add('where T_xs.xscode like :NUMBER');
    xscj.Parambyname('NUMBER').ASSTRING:=trim(edit2.text)+'%';
    xscj.prepare;
    xscj.open;
    END;