换成AdoQuery
用QUERY需要手动更新各数据表;

解决方案 »

  1.   

    cszhz(丑小鸭) 同志,你试过吗。呵呵。
    他查询后再去改query.requestlive :=TRUE后也没有用,不能修改DBGRID的东西的。
      

  2.   

    我的意见同cszhz(丑小鸭)!
      

  3.   

    query的多表更新很不好做最好用N个EDIT,自己手工写代码;
      

  4.   

    是啊,query的多表更新很不好控制
      

  5.   

    query.requestlive := true;
    DBGRID.readonly := false;
    还有,query.parames[].readonly := false;
    要声明的是,在分组查询,统计查询时,返回的值是不能修改的!
      

  6.   

    搜索一下以前的,有答案昨天都有人问。
    要用UPDATEQUERY控件。
      

  7.   

    你用以下这样做:
    首先要把query的属性
    requestlive:=true;
    cachedupdaate=:true;
    然后可以写:
    with query do
     begin
      database.starttransaction;
      try
      applyupdates;
      database.commit;
      except
      database.rollback;
      raise;
      end;
      commitupdates;
    end;
    end;
      

  8.   

    如果query中涉及到多个表,返回的结果就会是只读的,你用query1.edit就会报错。
    如果用了 order by 或group by 等子句,也会只读.
      

  9.   

    To;各位
    使用UPDATEQUERY控件就可以达到多表修改的要求了,在论坛搜索一下这个问题就知道了,我以前也做过很多这样的程序。如果不使用UPDATEQUERY控件,只使用QUERY的话最多只能修改单表查询的数据。
    query.requestlive :=TRUE 是改变只读属性,
    query.CancelUpdate :=TRUE是将修改的数据放在缓存中以便确定修改后一次POST进数据库。 
    这个问题可以结束了。