ClientDataSet.ApplyUpdates问题!???(100分)

  • 主题发起人 主题发起人 pgjeffrey
  • 开始时间 开始时间
P

pgjeffrey

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构,数据库时Oracle
Server: TDataSetProvider+TQuery;
Client: TSocketConnection+TClientDataSet
在客户端执行ClientDataSet.ApplyUpdates(-1)或ClientDataSet.ApplyUpdates(0)都不能将数据提交到数据库。并且,服务端TDataSetProiderd的BeforeApplyUpdates事件和AfterApplyUpdates事件都时执行了的!!!但是数据就是不能入库!!!?
 
没人知道??自己UP一下!!!
 
高手们,不要潜水好不好!!!小弟很急呀!!!帮帮忙啦!!
 
这个应该不是ClientDataSet的问题, 你看是不是设置有事务,你没有提交事务,理论上讲你触发了服务端TDataSetProiderd的BeforeApplyUpdates事件和AfterApplyUpdates事件,应该修改的数据已到服务端,所以问题应该在服务端
 
给一个解决方法好吗??
 
首先,你暂时不用再关心客户端了。马上开始跟踪服务端。
Server端的TDataSetProvider的ResolveToDataSet属性决定了更新到数据库的方式,按默认方式=False,数据库操作应该是由服务端TDataSetProvider自己生成的sql语句来完成,你应该从TCustomResolver.InternalUpdateRecord开始跟踪服务器生成的sql语句并继续跟踪其是如何被执行的,这是通过跟踪Delphi底层的代码来帮助查找你的程序中的数据操作问题。看你的程序跟踪能力了,哈哈!祝你好运!
 
有可能是更新失败,在客户端或服务器端的更新错误事件写上测试代码试一下
 
可以在ONReconcileError中显示一下错误看看。
如果你用的ORACLE通常是由于你的SQL语句中表名应该大写。
 
你的sql语句里是否有左连接的字段或不能修改的数据,如count(*) as A等。
另外,在Query里面的字段的update属性是否设置了不能更新
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
后退
顶部