with  chaxunQuery do
        begin
            Close;
            sql.clear;
            sql.add('select Kc.库存编号,Spxxb.商品名称,Kc.商品编号,');
            sql.add('Kc.入库登记单号,Kc.进价,Kc.数量,Kc.入库日期,');
            sql.add('Kc.操作员编号  ');
            sql.add(' from kc,spxxb ');
            sql.add('  where  Kc.商品编号=Spxxb.商品编号');
            sql.add('  and  Spxxb.商品名称 like :spmcstring'); 
            parambyname('spmcstring').asstring := '%' + UpperCase(Trim(Edit9.Text)) + '%';
            Open;
        end;           1、KC为库存表,Spxxb为商品信息表
           2、SQL语句的目的:当用户输入一个商品名称中包含的某个字符时可以实现模糊查询
           3、Spxxb含有商品名称、商品编号等字段
           4、KC含有库存编号、商品编号、入库登记单号、进价、数量等字段
           5、此语句在SQL Explorer下测试可行,在Delphi编译可行,但是运行就出现错误。
           请各位帮帮我,在此,先谢谢大家!

解决方案 »

  1.   

    like :没用过..
    你考虑这样试下..sql.add(' and Spxxb.商品名称 LIKE ''%'+UpperCase(Trim(Edit9.Text))+'%''');
      

  2.   

    有没有试过
    parambyname('spmcstring').asstring := QuotedStr('%' + UpperCase(Trim(Edit9.Text)) + '%');
      

  3.   

    '  and  Spxxb.商品名称 like :spmcstring'
    没见过这样写参数的。
      

  4.   

    sql.add('  and  Spxxb.商品名称 like :spmcstring'); 要改為以下這樣: 
    sql.add('  and  Spxxb.商品名称 like'+''''+ spmcstring+'''');
      

  5.   

    sql.add(' and Spxxb.商品名称 LIKE ''%'+UpperCase(Trim(Edit9.Text))+'%''');
    这样写吧,
      

  6.   

    parambyname('spmcstring').asstring := '%' + UpperCase(Trim(Edit9.Text)) + '%';
    我认为,上面这句是给SQL参数的。可是在这个SQL中参数还没创建啊。
    在上面这句前加一句创建参数的语句。CreateParam
    不知对不对!
      

  7.   

    parambyname('spmcstring').asstring := '%' + UpperCase(Trim(Edit9.Text)) + '%';改为 parambyname('spmcstring').asstring := '''%' + UpperCase(Trim(Edit9.Text)) + '%''';
    sql 中 like '%xxx%' 你参数里面忘了加前后两个单引号了。
      

  8.   

    with  chaxunQuery do
            begin
                Close;
                sql.clear;
                sql.add('select Kc.库存编号,Spxxb.商品名称,Kc.商品编号,');
                sql.add('Kc.入库登记单号,Kc.进价,Kc.数量,Kc.入库日期,');
                sql.add('Kc.操作员编号  ');
                sql.add(' from kc,spxxb ');
                sql.add('  where  Kc.商品编号=Spxxb.商品编号');
                sql.add(Format('  and  Spxxb.商品名称 like %s', [QuotedStr('%' + UpperCase(Trim(Edit9.Text)) + '%')]));
                Open;
            end;
      

  9.   

    谢谢大家,问题已经解决,原来是Query配置出错。接分。