回答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. Python之倒序访问list

    我们还是用一个list按分数从高到低表示出班里的3个同学: >>> L = ['Adam', 'Lisa', 'Bart'] 这时,老师说,请分数最低的同学站出来. 要写代码完成这个 ...

  2. 原生 JavaScript 图片裁剪效果

    图片裁剪程序效果如下,可鼠标操作.   拖动左边小方框时在右侧实时显示对应的裁剪图片,同时左侧的拖动框里图片完全显示,拖动框外部图片模糊显示.8个控制点可以对显示区域大小进行控制. HTML 和 CS ...

  3. 图片生成操作属性导致WP内存溢出解决办法

    在开发的项目中,发现经常会出现异常 “内存溢出,不能再继续执行程序”,通过搜索一些国外的文章,发现原来是由于项目中的图片比较多,而生存操作设为了“内容”.通过设置图片的生成操作为“无”,复制操作为“如 ...

  4. Codeforces Round #329 div2

    Problem_A(593A): 题意: 给n个单词, 每个单词由小写字母组成, 且长度<=1000. 组成一篇文章的要求是: 所有单词所用字母 <= 2 即最多只能有两个不同的字母. 求 ...

  5. 简单的php表单

    表单的三种传递机制: $_GET:不安全,传递的参数会显示在url中. $_POST:相对安全,隐形传递. $_REQUEST:宽松的,包含所有 GET.POST.COOKIE 和 FILE 的数据. ...

  6. 织梦dede_archives文章主表详细介绍

    dede_archives文章主表,存放着各频道文章的主要信息,比如创建时间,所属栏目,所属频道,作者等详细的信息.     ID int(11) 自动编号typeid int(11) 所属主栏目编号 ...

  7. BZOJ 2442: [Usaco2011 Open]修剪草坪

    Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠.然而,FJ的草坪非常脏乱,因此,FJ只能够让他的 ...

  8. ZOJ 2110 Tempter of the Bone(DFS)

    点我看题目 题意 : 一个N×M的迷宫,D是门的位置,门会在第T秒开启,而开启时间小于1秒,问能否在T秒的时候到达门的位置,如果能输出YES,否则NO. 思路 :DFS一下就可以,不过要注意下一终止条 ...

  9. 插入排序InsertionSort

    /** * * @author Administrator * 功能:插入排序法 */ package com.test1; import java.util.Calendar; public cla ...

  10. 应付系统选项 Payables Options

    (N) AP > Setup > Options > Payables Options应付系统选项设置整个应付系统使用的控制项和默认值.我们可以在此窗口中设置默认值,从而简化供应商输 ...