说实话,query是个不错的东东,但有些地方小弟搞不太明白。
1、adoquery中的sql为:
select a.f1,a.f2,b.f1,b.f2,b.f3 from a,b where a.f1=b.f1;
连接上dbgrid,dbnavegater,一切OK。
但当小弟点下delete删除某行时,(只想删除b表中的记录)...my god...两个表中的相应行都被delete了。
高手们,可不可以只删除指定表的值啊...2、现在小弟只敢用lookup字段来完成相应的功能,也就是从一个表中select,一个表来lookup。但...lookup字段却不能过滤和排序...
高手们,lookup字段如何实现排序和过滤呢?

解决方案 »

  1.   

    adoquery是自动关联表的,如果你的查询语句是复杂多表查询那么手动删除
      

  2.   

    是的,我就是如楼上所说那样实现的。另外使用了delete from...where ...
    但这样做的话不便于写出与后台无关的通用程序,而且写法上比较复杂。删除后,先close再open,如果用了filter和sort则要重新加上filter和sort条件。如果用refresh...天知道为什么还没有close再open快。
    所以我想若真是没有办法指定删除某个表中的值,那我宁愿去实现lookup字段的排序和过滤.但好象这个难度也很高。虽然clientdataset好象有这个功能,不过在两层应用中用它来写比较夸张。
      

  3.   

    挺好解决阿!
    如果是关联删除的话,在MIS中是很常用的,你最好写存储过程或者触发器解决这个问题,
    减少程序的复杂性.能够实现连动删除.
      

  4.   

    D6中有一个BDEClientDataSet,专门用于两层结构的,而且拥有ClientDataSet的强大用处
      

  5.   

    to dichun(融雪):就是不要它联带删除,它把我不想删的表中行也一并dele...
      

  6.   

    你可以用兩個Query,一個用來顯示數據,另一個用來刪除數據!
      

  7.   

    to henry2003(阿波):怎么个做法?
    是不是用两个query,其中一个是多表关联的,用于显示;一个只是从一个表中选值,两个表根据某关键字相互定位,删除时删除只从一个表中取值的那个dbgrid?
    若是象那样,还是需要和使用了delete from...where ...差不多,还是需要refresh。而且对系统资源要求高一些。
    不过这个方法编程上要简便一些。thanks.
    还有没有其它的方法?
      

  8.   

    呵呵。ado自已有个属性可以解决:)