在dbgrid 中修改和添加纪录时,当你离开某一行(即一个记录时,系统会调用post
方法自动保存,有时候会出现rows 不能定位的错误。谁可以解释一下发生这种情况的原因,如何根据错误来进行保护。

解决方案 »

  1.   

    因为在新增一条记录后,后台数据库已经写入了某些默认值(如:Getdate()),而前台客户端数据集并没有默认值,于是出现著名的ADO错误,即前后台数据不一致。解决办法有二:一是用代码写默认值;二是保存后再查询一次或者将游标设为服务器端。前者不影响性能,后者对性能有影响,阁下自行取舍。
      

  2.   

    是无法保存的错误吗?
    可以在数据集组件的相关事件中(beforepost等)进入约束处理!
      

  3.   

    gzlcd(),高手,我按你的方法把sqlserver 中数量和价格默认值去掉(原来为0)错误不再出现,谢谢。