首先,如下的语句在Access中直接执行时,是正常的。
   如:Delete * from temp where Bank not like '*汇*'。删除了指定的记录   但通过delphi中传入Access后执行,就出现了奇怪的现象,上面的Delete语句直接将整张表删除,完全忽略了where条件。
   Delphi语句如下:
   tem:= 'Delete * from temp where Bank not like '+'*汇*'+'';
   ExecSql(tem);procedure ExecSql(SqlStr: string);
begin
  aqy_temp.Close;
  aqy_temp.SQL.Text := SqlStr;
  aqy_temp.ExecSQL;
end;注:aqy_temp只是一个普通的Query控件。
为神马?为神马啊?  

解决方案 »

  1.   

    Delete * from temp where Bank not like '%汇%'
      

  2.   

    TO qwqw8000,yongerman:
    两位兄弟似乎没在Access中用过模糊查询。
    Access中有效的关键字是*,不是%。
    我以前也没用过Access,熟悉Access中模糊查询的兄弟请不吝赐教。
    分不够再加。
      

  3.   

    如果
    Access中有效的关键字是*,不是%。
    是不是那语句其它地方也不一样
      

  4.   


    tem:= 'Delete * from temp where Bank not like '+'''*汇*''';
      

  5.   

    如何用ACCESS数据库查询数据用 *(该数据库关键字是 *)如果是在SQL里面写,也就是所谓的代码传递SQL语句的时候用 % (程序用%)
      

  6.   

    但通过delphi中传入Access后执行,就出现了奇怪的现象,上面的Delete语句直接将整张表删除,完全忽略了where条件。
      Delphi语句如下:
      tem:= 'Delete * from temp where Bank not like '+'*汇*'+'';
    把*该成%
      

  7.   


      tem:= 'Delete * from temp where Bank not like ' + quotedstr('*汇*');
      ExecSql(tem);
      

  8.   


    SauntErSos:谢谢你。问题解决了。你说到了关键点,不过还是不明白为神马Access非要这么搞?
    qwqw8000,yongerman: 你们说的也对。呵呵
      

  9.   

    对于access,如果在access本身中,用*,如果用ado就要换成 %