以下这段代码为何编译通过,运行不过?
出现 ParamByName 'p3' can not find
请高手指教!  with adoquery1 do
   begin
   close;
   sql.clear;
   sql.add('update mydatabase set');
   sql.add('Trans_id=:p1,Trans_date=:p2');
   sql.add('where');
   sql.Add('trans_id is null and trans_date is null and');
   sql.Add('Prod_date');
   sql.add('like ''%''+p3+''%''');
   Parameters.ParamByName('p1').value := tempDate;
   Parameters.ParamByName('p2').Value :=datetostr(date);
   Parameters.ParamByName('p3').Value :=tempdate;
   execSQL;
   end;

解决方案 »

  1.   

    楼上的,我用了你的方法还是没有用。
    ParamByName 'p3'not found
      

  2.   

    sql.add('like ''%''+':p3'+''%''');
    不好意思:)
      

  3.   

    不对,你是要把p3做为字符串里的一个变量对吧?
    那用参数是不可能实现的
    因为Delphi会认为它整个是个字符串,不会把它看成变量的
    你只有直接写在语句里
    那个p3的值是怎么取的?
      

  4.   

    如果你的TempDate是Date类型的
    sql.add('like ''%'+DateToStr(TempDate)+'%''');
    然后把
    Parameters.ParamByName('p3').Value :=tempdate;
    去掉。   
      

  5.   

    sql.add('like ''%''+':p3'+''%''');
      

  6.   

    这次终于通过了。
    感谢heixiu1980(heixiu1980),我又学到一招。散分。