我用adoconnect+adoquery连接到数据库,通过adoquery在两个表中查询到数据,用dbgrid显示并修改数据,在adoquery.post时,发生以下错误:
  project ztswmis1.exe raised exception class eoleexeption with message 
"缺少更新或刷新的键列信息。",process stopped,use step or run to continue.
这大概是更新数据库时找不到列,但我查询是正常的。我一向给100分的,谢谢大家。

解决方案 »

  1.   

    没有主键,我以前不是连sql,是连db的,,,就是出现这个错误信息,,设一个主键就好了,,,
                        CSDN结贴联盟-版权所有
      

  2.   

    你是不是新增记录操作,post后有一个键值是以空值返回的,所以数据库出错
      

  3.   

    最好不要在dbgrid中修改数据,出错的几率太高了,我宁愿重做一个界面
      

  4.   

    adoquery.edit()
    ....
    adoquery.post()
      

  5.   

    ado可以更新多表,但是要有主健
      

  6.   

    我的两个表是主从表,主表有主键sales_orderid,从表也有主键detail_id,从表的sales_orderid是主表的外键,我用adoquery.sql.add(select 1.1,1.3,1.5,2.3,2.5 from 1,2 where 1.sales.orderid=2.salesorderid),然后用dbgrid编辑数据,这样做出现以上问题?大家帮帮忙,仔细分析一下。我决定不象以前那样每人都给分了,我将给答到点上的高分。
      

  7.   

    在Select中加上你的主表及从表的主键,这样ado才可定位要更新的记录
    ┏━★━━━━◆━━━━━━★━┓ 
    ♂  |◢任风吹雨淋,荣辱起落◣|  ♂     
    ┃  |◥我 自 无 语 笑 苍 天◤|  ┃        
    ┗━☆━━━━◇━━━━━━☆━┛
      

  8.   

    你用两个ADOQYERY就行了,给分
      

  9.   

    分开用两个Adoquery,进行保存就可以了
      

  10.   

    我加上了两个表的主键,如下:
    adoquery.sql.add(select  1.sales.orderid,1.3,1.5,2.detailid,2.3,2.5  from  1,2  where  1.sales.orderid=2.salesorderid)
    可是,问题依然?
      谁能帮我?有什么法子可以给某个人的分数超过100分呢?我真想把我的1700多分都给了帮我解决这个问题的人!