写了个form上边全用dbedit,dbcombobox等query.open后各个内容修改正常但是通过post提交后提示“缺少更新或刷新的键列信息”设么意思??大虾们请指教!!怎么解决??

解决方案 »

  1.   

    TADOQuery的Post最终是转化为SQL更新的。如果你显示的数据是关联查询出来,这样会同时更新几个表的,这时需要确定你是否要同时更新几个表,而且不能存在主键重复的情况。如果你显示的数据是单表数据的话,肯定是发生了关键字冲突,造成有重复的记录。
      

  2.   

    最好的办法是把数据保存到本地内存中,然后在Query/TClientDataSet的BeforePost的事件再写SQL进行更新,这样话就可以避免出现问题。
      

  3.   

    产生这个问题的情况有很多种,总之就是提交SQL语句的时候出错的。看看数据有没有重复。
      

  4.   

    多谢了!
    不错我是对多个表进行了查询!!关于关键字重复是不是指 SQL中SELECT 后面有重复名称的字段??Bear_hx(寒萧) 兄:能不能写个例子参考一下??不明白!!!新手中!。
      

  5.   

    Query是不能直接更新的!
    你可以在BeforePost事件中处理:
    var
    ls_sql:string;
    ls_sql:='update set field1=... where KeyField=''''';
    tempQuery.sql.clear;
    tempQuery.sql.add(ls_sql);
    tempQuery.Execute;
    abort;
    query.ref...
      

  6.   

    兄弟www.2ccc.com上有很多很好的例子。