在ado中有如下查询
select b.*,a.* from b,a where b.bid=a.id
在dbgrid中能正确显示结果但是一但修改dbgrid中的数据就会出错:
出错提示为:'缺少更新或刷新的键列信息'请问:如何才能正确修改dbgrid中的数据就会出错?

解决方案 »

  1.   

    不能,因为你用的ADOQuery组件的修改条件之一是:SQL语句简单。
    现在你的SQL语句是一个关联查询语句这不是一个简单SQL语句,你想想如果你修改要其中某个字段的值后ADOQuery知道要更新哪个表吗?
      

  2.   

    我记得在书中说daoquery可以实现多表的修改呀!为什么呢?关注!!!!!!!
      

  3.   

    要用 Inner Join 才行,不过好像也只能修改不能添加
    select a.*,b.* from a Inner Join b On b.ID =a.bid
    大约是这样你试试
      

  4.   

    我尝试了呀,能够修改呀
    你是不是把dbgrid设置为readonly了呀
    能成功的
    只是你需要post下
    没问题
      

  5.   

    可能跟版本有关系吧,你是delphi的哪个版本?
      

  6.   

    谢谢这么多的朋友帮忙!!!!我最初的设想是用ADOQUERY来组合查询出两个表的特定内容,因为有对应关系,所以不好“老老实实的一个表一表的追加记录”另外用select a.*,b.* from a Inner Join b On b.ID =a.bid 也不能实现 当然DBGRID也没READONLY还请大家多帮忙!!!!
      

  7.   

    用 select a.*,b.* from a Inner Join b On b.ID =a.bid 
    也不行?
    你修改时有什么错误提示?
    也许是你程序的问题, 不是SQL的问题目