例如: 
   select A.* FROM TABLE1 A,TABLE B WHERE A.ID=B.IDopen 后 我在DBGRID 里对数据进行编辑 出现 "TABLE IS READONLY " 我估计可能不仅仅是一个表里的数据.那么如何对多表查询后 直接在QUERY里对数据操作呢?(连接到DATAGRID)我吧RequestLive 的属性设置为TRUE 了
烦请各位给个解答!

解决方案 »

  1.   

    我只是对TABLE1进行更新, TABLE2 只是对它进行一个关联 是通过ID 连接 把 TABLE2 的姓名显示出来
    数据更新在TABLE1里
      

  2.   

    那就用这个查询:SELECT * FROM  A WHERE A.ID IN (SELECT B.ID FROM B)
      

  3.   

    1、首先,你这个更新方法是十分差劲的。
    2、可以用Query来进行多表更新,不管你是更新一个还是多个,你的Query关联了两个表,再来更新就 是多表更新,这一点你也还没有理解。
    3、更新方法:Query和updatesql联合起来用,可以达到目点,具体不多说,有点麻烦,而且效率极差。
    4、更好的更新方法:
       直接写SQL等.
      

  4.   

    我的意思是在DBGRID 里直接修改数据(通过QUERY 查询出来的)
      

  5.   

    建议用:SELECT * FROM  A WHERE ID IN (SELECT ID FROM B)
    这样就只是在表A中操作了。
      

  6.   

    Query中所得的结果其实是一个视图
    好象支持视图更新的数据库不多
      

  7.   

    SELECT * FROM  A WHERE ID IN (SELECT ID FROM B) 这个是不行的我试过了那看来是没办法了?
      

  8.   

    我觉得楼主还是把查询和更新分开。完全可以在查询出来之后再用SQL语句来更新,写update的方法不是更自由更方便吗?
      

  9.   

    SELECT * FROM  A WHERE ID IN (SELECT ID FROM B)
    没有问题呀,不是关联的查询就可以直接修改数据源。。
      

  10.   

    newcar(newcar)  出错:CAPABILITY NOT SUPPORTED
      

  11.   

    SELECT * FROM  A WHERE A.ID IN (SELECT B.ID FROM B)
      

  12.   

    shuker(我是一只小花猪)  也不行  都一样的错
      

  13.   

    先創建視圖view1: select A.* FROM TABLE1 A,TABLE B WHERE A.ID=B.ID,然後對視圖操作就不會有問題,query里就只要select * from View1,這時就可能在dbgrid里編輯和更新了
      

  14.   

    如果要關聯查詢,你隻用query就想更新數擾是不行的,除非你用ado數據庫訪問組件,用bde的話還得要另外一個組件搭配使用才可以更新數據,那個bde組件就是:TUpdateSQL,試試吧,一定能行的。