我的三层结构中客户端的ClientDataSet的数据怎么不能更新到后台数据库中(100分)

  • 主题发起人 主题发起人 Martin-Zou
  • 开始时间 开始时间
M

Martin-Zou

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟写了一个三层程序,但不知道怎的客户端的ClientDataSet的数据进行删除和修改的
操作怎么不能更新到后台数据库中,但插入操作又可以啊,我调试了服务端,它显示的错误
是说“这个记录己给别人修改了”,但我这个程序只有我在测试,怎么可以又人修改呢,
真的被它搞得....,所以请各位老兄多多指教!!谢谢!
 
把数据控件删了再新建一个。
 
当我修改或删除当前记录执行ClientDataSet1.ApplyUpdates(0)操作时,服务端返回的
错误信息为"Record not found or changed by another user",不知道是什么原因?
 
检查一下数据库有没有主键,没有则加一个自增字段作为主键吧。
 
请检查的你的数据的字段有没有默认值或日期型的字段,如果有默认值请把默认值取失或
更新的时侯要赋值,如果有日期型的请注意日期的长短类型是否与Delphi日期型控件类型
相彼配.
 
我的连插入都不能更新呀,谁可以写一下那一小断代码
 
估计你的数据库可能有自动更新字段。如timestamp等。(oracle还有别的问题),日期型数据的长度问题等。
检查中间层的数据更新模式,改为OnlyKey或Changed,不要为All。
 
ApplyUpdates 提交
 
你将 服务器短的 TDataSet.Fields[XXX].ProviderFlags设一下
是主键的 InKey,InWhere=True 要更改的 InUpdate=True
TProvider.UpdateMode你也设一下应没问题了
 
自增字段有没有?有的话~~~不要出现在select字段列表中,最好没有
建议不在数据库端设默认值,日期时间型字段也可能出现问题
 
你是不是query控件的requestlive没有设为true
我的问题就是这样解决了
 
都是无状态惹的祸啊,把你表建立索引几ok了。
 
后退
顶部