adoquery的查询语句为
select aa.bh,aa.mc,aa.dw,aa.ggxh,(select sum(cc.sl) from JW_库存详细 cc where aa.bh=cc.wz) as kcsl,aa.kf  from JP_物资 aa where aa.jm like :searchbh or aa.bh like :searchbh or aa.mc like :searchbhdelphi中:
qrykc.Active := False;
qrykc.Parameters.ParamByName('searchbh').Value := '%' + edtwz.Text + '%';
qrykc.Active := True; 
会出错提示:
Project JXC.exe raised exception class EOleException with message '不正常地定义参数对象。提供了不一致或不完整的信息。'. Process stopped. Use Step or Run to continue.
如果这样就没问题:
adoquery的查询语句:
select aa.bh,aa.mc,aa.dw,aa.ggxh,(select sum(cc.sl) from JW_库存详细 cc where aa.bh=cc.wz) as kcsl,aa.kf  from JP_物资 aa where aa.jm like :searchbh or aa.bh like :searchbh1 or aa.mc like :searchbh2
delphi中:
qrykc.Active := False;
qrykc.Parameters.ParamByName('searchbh').Value := '%' + edtwz.Text + '%';
qrykc.Parameters.ParamByName('searchbh1').Value := '%' + edtwz.Text + '%';
qrykc.Parameters.ParamByName('searchbh2').Value := '%' + edtwz.Text + '%';
qrykc.Active := True;只能这样吗?我传递的参数值都相同啊
感觉好笨啊,应该有好的方法吧

解决方案 »

  1.   

    var
      s:string;
    begin
      s:='11';
      self.ADOQuery1.Close;
      self.ADOQuery1.SQL.Clear;
      self.ADOQuery1.SQL.Add( 'select * from 表2 where bb like :cc or dd like :cc' );
      self.ADOQuery1.Parameters.ParamByName( 'cc' ).Value:='%'+s+'%';
      self.ADOQuery1.Open;
    end;
      

  2.   

    to hongqi162(失踪的月亮) 
    我这么做为什么会报错?我是直接在adoquery的sql属性里写的sql语句
    难道动态添加就不会出错?
      

  3.   

    delphi中:
    qrykc.Active := False;
    qrykc.Parameters.ParamByName('searchbh').Value := format('''%%%s%%''',[edtwz.Text]);
    qrykc.Active := True; 
      

  4.   

    问题没有解决!
    我想知道这样为什么会出错,是我的语法写的有问题吗?
    为什么回答的都这么简单,能不能用文字描述一下
    --------------------------------------------------------------
    adoquery的查询语句为
    select aa.bh,aa.mc,aa.dw,aa.ggxh,(select sum(cc.sl) from JW_库存详细 cc where aa.bh=cc.wz) as kcsl,aa.kf from JP_物资 aa where aa.jm like :searchbh or aa.bh like :searchbh or aa.mc like :searchbhdelphi中:
    qrykc.Active := False;
    qrykc.Parameters.ParamByName('searchbh').Value := '%' + edtwz.Text + '%';
    qrykc.Active := True;
    会出错提示:
    Project JXC.exe raised exception class EOleException with message '不正常地定义参数对象。提供了不一致或不完整的信息。'. Process stopped. Use Step or Run to continue.
      

  5.   

    把adoquery的paramcheck属性关掉试试看