为什么用又close;close后为什么又clear,等
 
with adoqWordMode do
  begin
    if active then
      close;
    sql.Clear;
    sql.Add('delete from T_WordMode where (ModeName=''+SelectTest+'') and (Dept=''+strDept+'')');
    execsql;
  end;

解决方案 »

  1.   

    close;先关掉 Clear;清空sql语句 
     Add添加语句 execsql;执行语句也就同时打开了
      

  2.   

    close关闭的是数据集,而clear是对SQL对象的的string清空,以防止和后来ADD的SQL语句连接。
    不是一个对象。
      

  3.   

    对,只有在close活动的数据集后才能clear原来的sql语句,然后再add新的sql语句,再exec。若不这样,则不会成功;不clear,若原来的sql不为空则执行的不是add语句而是两者的结合体一运行就会是错误,在active状态时此操作不能成功,所以先close再clear,天使之翼说的很贴切。