create procedure p_cxorder
@s nVarchar(3000)
as
declare @SQLText nvarchar(4000)
set @SQLText='select Cpname as 公司名称,ClientID as 客户代号,Stonekind as 石种,Number as 单号,Rankname as 品名,Standard as 规格,convert(varchar(10),Siglecount1) as 单价,Amount1 as 数量,convert(varchar(10),Total1) as 本单小计,Signdate as 定单日期,Falldate as 交货日期,Re as 备注
from inorder where ' +  @s + ' union  select Cpname+''合计'','''','''','''','''','''','''','''',convert(varchar(10),sum(Total1)),'''','''',''''
from inorder where ' +  @s + 'Group by Cpname' + '  union select ''总计'','''','''','''','''','''','''','''',convert(varchar(10),sum(Total1)),'''','''',''''
exec(@SQLText)
这个是我创建的要用来进行查询的``````
在DELPHI中我是如下调用的但出现了如题的异常:
              with fdata.p_cxorderproc do
              begin
                close;
                s := '' + s10 + ' like ''' + s11 + '''';
                parameters.ParamByName('@s').Value := s;
                open;
              end;
其中S10字段名我跟踪了没问题,但问题出在S11上面了```S10的获值情况:
procedure TFctorder.ComboBox2Change(Sender: TObject);
begin
  case combobox2.ItemIndex of
    0: s10 := 'ClientID';
    1: s10 := 'Cpname';
  end;
end;            //S10的获取S11的获值情况:
s11 := '%' + trim(edit1.Text) + '%';
当我从EDIT1中输入g的时候s11='%g%'
但当我从EDIT1中输入"安"(这个引号我没输入)的时候s11的值却是
s11='%安  //就这样后面少了个引号不知道为什么,请高手门赐教``````急啊``~~~可以加小弟的QQ:254734866指教```在线等待```

解决方案 »

  1.   

    当我把s串后面再加个引号输入汉字的时候就不会出错但是输入字母的时候却会出错
    s='' + s10 + ' like ''' + s11 + '''''';对比上面的多了个引号
    但情况与上面的刚好相反
      

  2.   

    你的问题还真从来没遇过,哈哈
    我这样写是没问题,输入'安',显示:'%安%'
    s11 := '''%'+Trim(Edit1.Text)+'%''';
      

  3.   

    我的答案~~~~ 不知道!还是不知道!! SORRY!最后顶一下!祝楼主好运~~~
      

  4.   

    TO:Kevin_Lmx(繁华阅尽) 
    我试了你的说法一样的错误```
      

  5.   

    更怪的是````
    如果我根据其中的某个字段有查询到结果的话
    再输入如上的“安”字就不会少了那个引号~~~~
    郁闷中``
    CSDN怎么人越来越少了啊````
      

  6.   

    T-SQL语句,希望不要使用'''来代表引号,这样太恶心了!还是使用+#39+这样好!既清晰又明白是怎么回事!
      

  7.   

    s11是String类型,长度绝对不是问题````~