`

Clientdataset.ApplyUpdates 的问题求助

阅读更多

 

转自:http://www.skinplusplus.com/bbs/archiver/tid-115515.html

 

覆雨翻云 发表于 2010-5-29 14:14

Clientdataset.ApplyUpdates 的问题求助

我调用Clientdataset.ApplyUpdates,出现record   not   found   or   changed   by   another   user。
       具体操作如下:先Clientdataset.insert;Clientdataset.ApplyUpdates
       但当我再Clientdataset.edit,Clientdataset.ApplyUpdates时就出错了。

tianya.cn 发表于 2010-5-29 14:14

我使用Sql   Server   数据库更新多条记录   没有问题;
  
但是使用   Oracle   就不能同时更新多条记录就报
“record   not   found   or   changed   by   another   user。

这样的错误。
真奇怪,难道   ClientDataSet不能很好的支持Oracle   ?

pbuilder 发表于 2010-5-29 14:14

我使用Sql   Server   数据库更新多条记录   没有问题;
  
但是使用   Oracle   就不能同时更新多条记录就报
“record   not   found   or   changed   by   another   user。

这样的错误。
真奇怪,难道   ClientDataSet不能很好的支持Oracle   ?

su7en 发表于 2010-5-29 14:14

你好,我用sql   server的,但我先Clientdataset.edit,然后写更新的数据自己段,最后Clientdataset.ApplyUpdates,结果也出错了,不过,我在别的窗口实现同样的功能没有出错,不知道为什么这个就是出错了,但有时候又可以更新的,但现在就是不能更新的!
数据库的数据库没有变化!!
请高手指教,我的QQ:89399727
msn:yangshanyin@msn.com

tianya.cn 发表于 2010-5-29 14:14

不要有自增字段      任何字段不要有默认值

追无极 发表于 2010-5-29 14:14

自增字段对数据更新有什么影响的哦?
请高手说清楚点哦!!

tianya.cn 发表于 2010-5-29 14:14

如果一条记录的ID是自增字段,那么客户端不知道它下一个数值应该是几,只有提交到服务器才知道,你APPEND后再POST,客户端认为ID=NULL,服务端收到请求把记录APPEND到数据库,数据库给ID正确的值,比如是1,客户端这时EDIT并POST,这

wentianxiang 发表于 2010-5-29 14:14

不小心提交了-_-
  
  
续上
  
这时它会提交两条数据,一条是修改前的,一条是修改后的,服务端收到请求更新,会先对比修改前的与数据库中的是否一致,这样为了防止多用户操作时出现问题,但现在客户端提交的数据中修改前的ID为NULL,数据库中实际为1,就会出错了

pbuilder 发表于 2010-5-29 14:14

这个问题可以看一下UpdateMode的属性设置说明。
一般时候多为表中含有时间类型的字段   通过Delphi程序获得的时间后面有毫秒部分,而这样存到
数据库中后,再通过cds取出来的时候数据就把毫秒的那部分取消了。当UpdateMode的属性设置为upWhereAll   就会报错了。

成吉思汉 发表于 2010-5-29 14:14

非常感谢MoveFirst
我也遇到过这样的问题,一值都不敢用SQL语句更新,就是因为这个问题
现在解决了,总算见到阳光了

分享到:
评论

相关推荐

    程序运行时,提示“Invalid parameter”错误

    Delphi 10.3 ,程序运行到DataModule2.ClientDataSet1.ApplyUpdates(0);语句时,提示“Invalid parameter”错误

    搜索和过滤ClientDataSet.flv

    搜索和过滤ClientDataSet.flv

    ClientDataSet数据更新,Delta解析,视图更新

    将ClientDataset的Delta数据打包成JSon字符串 可以将这个JSon字符串传递到服务端, 进行解码,生成更新的SQL语句. 主键更新. 建议主键使用GUID,这样更新数度快, SELECT可以多个表,但是要更新的字段不要AS成其他名字. ...

    Delphi7调C#Webservice用返回ClientDataSet XML格式数据

    本篇文章将详细探讨如何在Delphi 7环境中调用C#编写的Web服务,并处理返回的ClientDataSet XML格式数据。Delphi 7是一款经典的面向对象编程工具,而C# Web服务则是一种基于.NET Framework的分布式应用程序,两者之间...

    Delphi 从内存中修改数据源码示例

    ClientDataSet.FieldByName('Name').AsString := '张三'; ClientDataSet.FieldByName('Age').AsInteger := 30; ClientDataSet.Post; // 修改数据 ClientDataSet.FindKey([1]); // 查找 ID 为 1 的记录 if not ...

    深度解析ClientDataSet

    【深度解析ClientDataSet】 ClientDataSet(简称CDS)是Delphi数据库编程中的一种重要组件,它是从TDataSet派生出来的,常用于构建多层架构的客户端应用。与TTable和TQuery不同,CDS并不直接依赖BDE(Borland ...

    ClientDataSet的过滤问题

    ### ClientDataSet过滤问题详解 #### 一、概述 在Delphi开发环境中,`ClientDataSet`是一种常用的数据处理组件,主要用于客户端的数据操作与管理。当涉及到数据筛选时,开发者经常会遇到各种各样的问题,其中一个...

    Delphi json转Cds

    ClientDataSet.FieldByName(Pair.Name).AsInteger := TJSONNumber(Pair.JsonValue).AsInt; end; ClientDataSet.Post; ``` 4. **关联UI控件**:如果你的应用需要显示这些数据,可以将CDS连接到DataFrame(如...

    白皮书:Delphi2009中新的DataSnap

    ClientDataset.ProviderName := 'DataSetProviderEmployee'; ClientDataset.Open; // 读取数据 while not ClientDataset.Eof do begin ShowMessage(ClientDataset.FieldByName('Name').AsString); ...

    ClientDataSet动态建表的简单例子

    在IT领域,ClientDataSet(CDS)是一种在 Delphi 和 C++Builder 等RAD Studio环境中广泛使用的组件,用于处理离线数据。它允许开发者在应用程序中存储、编辑和过滤数据,而无需直接连接到数据库服务器。在这个...

    Delphi下ClientDataSet使用例子

    摘要:Delphi源码,控件组件,ClientDataSet Delphi环境下的ClientDataSet使用例子。ClientDataSet是Delphi三层开发常用控件。通过此例子帮助那些初学者学会ClientDataSet的使用,简单易懂。演示打开本地文件、保存到...

    delphi DBGrid排序的两种方法(自己代码中,测试成功的)

    if Pos('DESC', ClientDataSet.Sort) > 0 then begin ClientDataSet.Sort := Column.FieldName + 'ASC'; end else begin ClientDataSet.Sort := Column.FieldName + 'DESC'; end; end else begin for i := 0 ...

    ClientDataSet_经典

    ### Delphi中ClientDataSet的应用详解 #### 一、概述 `ClientDataSet`是Delphi中一个重要的数据库组件,主要用于客户端应用程序。它从`TDataSet`类派生而来,具有多种特性,使其非常适合于多层架构的开发场景。与`...

    Delphi通过WebService访问数据库

    ClientDataSet1.XMLData := ls_Service.Buf_GetADONetToCDSXml('Northwind',ls_Table,'select * from '+ls_Table); end; 2.更新数据 procedure TForm1.Button2Click(Sender: TObject); var ls_Table: string; ls_...

    delphi添加修改删除

    在进行数据操作时,应考虑可能出现的错误,如网络问题、权限问题或数据冲突等。通过设置组件的OnError事件,可以捕获并处理这些异常。 7. 界面交互 TDBGrid组件通常用于显示数据,用户可以直接在网格中编辑记录。...

    dbexpress与元数据的Delphi结合实例

    ClientDataSet.SQLConnection := SQLConnection1; // 使用已设置好的SQLConnection ClientDataSet.TableName := 'YourTableName'; // 设置表名 ClientDataSet.Open; // 打开并加载元数据 end; ``` 一旦元数据...

    json_TO_clientdataset_JSONUtil包.rar

    json_TO_clientdataset_JSONUtil包.rar 整理了一下 JSON 轉CLIENTDATASET 功能 相關單元文件, 從網絡下載的工具類: SUPEROBJECT.PAS, myUnicode.pas , uJSONDB.pas, uDeltaToSQL.pas, superxmlparser.pas 測試...

    json_TO_clientdataset_JSON

    json_TO_clientdataset_JSONUtil包.rar 整理了一下 JSON 轉CLIENTDATASET 功能 相關單元文件, 從網絡下載的工具類: SUPEROBJECT.PAS, myUnicode.pas , uJSONDB.pas, uDeltaToSQL.pas, superxmlparser.pas 測試用例...

    ClientDataSet的使用

    在探讨“ClientDataSet的使用”这一主题时,我们首先需要理解ClientDataSet在Delphi或C++Builder等RAD Studio开发环境中扮演的角色。ClientDataSet是VCL(Visual Component Library)框架中的一个重要组成部分,主要...

    Delphi批量更新SQL数据库内容..rar

    ClientDataSet1.ApplyUpdates(0); ``` 5. **代码fans.net**:根据压缩包内的文件名,codefans.net可能是源代码托管平台或论坛,里面可能包含了使用Delphi进行批量更新SQL数据库的具体代码示例、教程或者讨论。 综...

Global site tag (gtag.js) - Google Analytics