a 表是编码库,有bm,mc,xg,dj这些列
b表是个库存表,有bm,kcsl,kcje这些列select b.bm,a.mc,a.xg,a.dj,b.kcsl,b.kcje
from a,b where a.bm = b.bm这时delete 时,a 表中的数据也被删除了,delete 时,a表中的数据我不想被删除掉,
我也不想另建一Query控件,单独写删除。怎么办?

解决方案 »

  1.   

    query1.close;
    query1.sql.clear;
    query1.sql.add('delete from b where ...........');
    query1.open;
      

  2.   

    你是怎么delete的?
    如果按照关键字来的话就可以
    if query1.active thenquery1.close;
    query1.sql.clear;
    query1.sql.add('delete from b where ...........');
    query1.excusql;
      

  3.   

    if query1.active then query1.close;
    query1.sql.clear;
    query1.sql.add('delete from b where ...........');
    query1.excusql;
    试一试
      

  4.   

    这同一个query操作并不同好的办法,因为你刚查出的资料,同一query的话得关闭query才能删除,不建议这样做。附同一query查询并删除的语句:
    with query1 do
    begin
      close;
      sql.clear;
      sql.add('select b.bm,a.mc,a.xg,a.dj,b.kcsl,b.kcje
         from a,b where a.bm = b.bm');
      open;
      close;
      sql.clear;
      sql.add(delete b where ....);
      execSQL;
      close;
    end;
      

  5.   

    我是想在这个query 上有什么设置,delete 时只删除一个表的数据,
    我不想另外写delete 语句。
      

  6.   

    不明白你的意思,除非a表和b表有主外键约束,delete b表时时才可删除a表相关数据,
    否则delete b时当然只删除b表的数据