窗体在打开时Adoquery执行下面的语句
Sql:=‘select 商品表.商品名称,商品表.商品编码,商品表.商品类别编码 ,类别表.类别名称 from 商品表 LEFT OUTER JOIN 类别表 ON 商品表.商品类别编码=类别表.类别编码 ’;做连接查询,正常当选中Adoquery中第一条数据进行删除后Delete,类别表中的相应类别编码也一起被删除了,如何只删除商品表里的数据,而类别表的数据不变??

解决方案 »

  1.   

    "当选中Adoquery中第一条数据进行删除后Delete,类别表中的相应类别编码也一起被删除了,如何只删除商品表里的数据,而类别表的数据不变??"用SQL语句去删除,一般的对于多表连接的操作都是用sql语句去操作的,因为当多表连接查询中有group,sum,max,min等这些语句时往往直接用adoquery.delete会失败。
      

  2.   

    估计你删除的sql有错误,要不然不会这样
      

  3.   

    用过连接后删除不要用adoquery1.delete 用语句去执行。如adocommand 
      

  4.   

    你用Adoquery这个查询时,在原来语句上多加个商品ID字段。窗体上再放一个adoquery。写个删除sql语句。
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add("delete from 商品表名 where 商品ID='"+Adoquery.fieldbyname("商品ID").asstring+"'");
      execsql;
    end;
    然后刷新以下数据库,用原来SQL语句重新查询显示一下就行了。
      

  5.   


    六楼的可以通常是外加adoquery来完成即var adoq : tadoquery; 动态建了,完成后就free掉