回答1:===============================================================
问题:clientdataset“Record not found or changed by another user”
unable to find record no key specified

原因:
Clientdataset提交数据时服务器端比对提交数据Delta中的原始数据,如果比对数据不符则报告上述错误,一般发生在插入操作后更新,对于单表发生错误原因如下:
1 数据库有自增长字段.测试发现ADO可以在插入数据后自动刷新自增长字段值,在afterupdaterecord事件中加入下面语句可以在更新后同步刷新clientdataset
  if (updatekind=ukinsert) then begin
    deltads.FieldByName('id').ReadOnly:=false;
    deltads.FieldByName('id').NewValue:=qry1ID.Value;
  end;
resolvetodataset必须为true才行.详细说明见流水号产生一文.DbExpress测试发现无法刷新自增长字段,所以建议在数据库中不要随意使用自增长字段,很多人使用自增长字段只是为了做关键字,从数据库设计的原理上看,这样的做法是对簇索引的极大浪费.
2 数据库字段有Default值,但是ADO和DBexpress更新数据后都无法刷新default值,所以解决方法是不用数据库的default值,或客户端添加数据时自动赋值.
3 关键字中有浮点数,日期类(Delphi处理为浮点数)字段,测试发现在Access上面如果使用这些字段,会因为Delphi自身的误差导致无法按照关键字检索到数据,解决方法是用序号或者流水号作为关键字.
4 params造成的数据"消失".很多系统一打开窗口不是查询表所有的数据,而是默认查询当天或者指定查询条件的数据,一般在数据集中设定好Param来配合查询,这时问题就出现了,比如我查询的是当天的业务数据,可以我录入的时候日期是昨天的,在C/S架构中,数据保存后依然在数据集中存在,ado不会因为刷新而使新添加的数据消失.但在midas架构中则有所不同,Clientdataset提交数据后,数据正常插入,Clientdataset中数据也不会因为不满足查询条件而自动消失.但马上提交修改时,privoder接收到修改数据,会自动去关连的ado中查询数据是否存在,此时会出现查询不到数据的情况,报告题目中的错误,我猜测是服务器端没有为客户端保存任何数据和连接,Insert成功后,ado数据集马上被关闭了,下次更新数据时,再根据param打开ado查询,此时就会发生上述错误了.
我的解决方法是Clientdataset.afterapplyupdate中判断更新的数据集是否复核查询条件,如果不满足,则自动扩展查询条件,自动查询一次,这样就不会出现上述错误.
另外,在子母表中,我还没有找到什么方法可以刷新自增长字段和Default字段的方法,因为子表是整个数据集作为一个字段传输的,如果谁有方法和刷新子表字段请通知我一声. 
回答2:===============================================================

record not found or changed by another user  解决方法
 我在使用三层结构时,有一张表没有主键,用ClientDataset+DatasetProvider+SQLQuery修改数据时,反复提示“record not found or changed
by another user”,把ClientDataset的Indexname赋值后,再把DatasetProvider的UpdateMode设为upWhereChanged后,OK
如果使用的表有主键,需设置ClientDataset 的Indexname后,把DatasetProvider的UpdateMode设为upWhereKeyOnly,才能正确更新
数据。
  后来发现前面的认为是错的,需要①把SQLQuery和ClientDataset的主键字段的ProviderFlags设为pfInKey,②把SQLQuery和
ClientDataset的主键字段的KeyFields字段设为主键字段,经反复测试,新增、修改都能成功保存并更新

问题-"Record not found or changed by another user"的更多相关文章

  1. 比特币_Bitcoin 简介

    2008-11   Satoshi Nakamoto  Bitcoin: A Peer-to-Peer Electronic Cash System http://p2pbucks.com/?p=99 ...

  2. RFC-RTSP

    Network Working Group H. Schulzrinne Request for Comments: 2326 Columbia U. Category: Standards Trac ...

  3. Roo中的@Version

    首页 关于 Roo中的@Version 发表回复 问题提出 当我们为entity添加@RooJpaActiveRecord注解时,Roo为我们自动生成了一个名为Entity_Roo_Jpa_Entit ...

  4. 常用sql commands以及mysql问题解决日志

    mysql workbench常用命令快捷键 ctrl+T ->创建新的sql query tab ctrl+shift+enter->执行当前的sql命令 https://dev.mys ...

  5. Bitcoin: A Peer-to-Peer Electronic Cash System

    Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto October 31, 2008 Abstract A purely p ...

  6. Ext grid单元格编辑时获取获取Ext.grid.column.Column

    item2.width = 80; //item2.flex = 1; item2.align = 'center'; item2.menuDisabled = true; //禁止显示列头部右侧菜单 ...

  7. mysql数据库变更监控(canal)

    背景: 1. 一些项目的基础功能会有Audit Trace, 以记录系统用户所做过的所有记录. 2. 实时备份数据,比如mysql主从复制,一个用于面向应用,一个用于对应用数据库的实时备份. 3. 实 ...

  8. RTSP Spectification

    Refer: https://www.ietf.org/rfc/rfc2326.txt Network Working Group H. SchulzrinneRequest for Comments ...

  9. If one session has a shared or exclusive lock on record R in an index, another session cannot insert

    If one session has a shared or exclusive lock on record R in an index, another session cannot insert ...

随机推荐

  1. MXNet在64位Win7下的编译安装

    注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 我笔记本配置比较低,想装个轻量级的MXNet试试,装完之后报错,不是有效的应用程序,找不到 ...

  2. [转载]初学C#之list

    C# List<T>用法 所属命名空间:System.Collections.Generic public class List<T> : IList<T>, IC ...

  3. python image模块

    Image 模块 Image 模块提供了同名的类用来表示PIL的图像.Image模块还提供了许多工厂(factory)函数,包块从文件加载图像的函数,以及创建新图像的函数.    例子  下面的脚本加 ...

  4. Es索引优化

    https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html https://www.elastic.co/gui ...

  5. IBInspectable的使用

    IBInspectable的使用 创建一个分类 定义属性 把此分类的头文件引入到pch里面  此时查看属性面板  就有了可以供我们勾选的选项 在.m中实现一下set和get方法

  6. PieTTY

    PieTTY 用 pietty 連上主機時 鍵盤右方數字鍵 (keypad) 失效的問題 用 pietty 連上主機時 鍵盤右方數字鍵 (keypad) 失效的問題 應該滿多人用 pietty 連上程 ...

  7. WPF 3D 小小小小引擎 - ·WPF 3D变换应用

    原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用 WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开 ...

  8. Android-加载透明PNG图片变黑的问题

    png和jpg作为两种最常用的图片格式,首先我们要知道他们的区别: 1.从一般图片的外观上来说,他们是无法直接判断的 2.从文件大小上来说,同样一张图png肯定比jpg的大 3.通过查资料咱们可以发现 ...

  9. hdu4722Good Numbers(dp)

    链接 这题规律其实挺明显的 打表找规律估计都可以 正规点就是DP 算出第N位所包含的good number的数量 如果给出的数是N+1位 就枚举各位上比原来小的数 加上下一位的dp值 一个i写成g了 ...

  10. C#面向对象编程实例-猜拳游戏

    1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Comput ...