为什么修改在的数据不能提交!!!!!!!!!急呀(200分)

  • 主题发起人 主题发起人 first
  • 开始时间 开始时间
F

first

Unregistered / Unconfirmed
GUEST, unregistred user!
在客户端新加的记录可以保存,可修改的记录向远程服务器提交时报"不能找到记录 或已被他人修改的错误"???
"急呀
 
"不能找到记录 或已被他人修改的错误"
不是已经告诉你了吗?
 
可记录 是存在的呀
 
是不是打开方式的问题?现象是把要添加的数据库里面的记录全部清空,然后再添加,往往是可以添加
一条记录,再就不允许添加和修改了。
 
不会把,那如何修改记录
我传的是Delte包
 
提交到服务器要用applyupdates(0);
 
估计是定位错误造成的,建议改用 UPDATE TABLENAME SET ... 方式
 
你的程序是不是有自增长的字段
如果有的话你增加一条记录后它赋予那个字段的值往往和你想的不一样是从1开始的自增
而如果你的更新是默认以所有字段作为更新条件的话显然会出现上面的提示
建议你跟踪一下查寻分析器产生的SQL更新语句它会帮你找出错误的要源
 
是不是你设计数据表的时侯,某个字段的类型长度与你实际赋的值的长度不相同呀?
日期型字段容易出这样的问题
 
如果有timestamp字段,且DataSetProvider更新方式设为“all”,也会出现这种问题。
检查一下是否有自动更新或生成的字段,然后设置DataSetProvider的更新方式,估计能解决问题。
 
是不是没有没有修改权限
或者表被锁了?
 
别急别急,不就是不能定位啦!是Borland或MS的错的。
你把Datasetprovider的UpdateMode从upWhereAll改为upWhereChanged
,upWhereKeyOnly试试看。
 
可能是自增字段或字段的默认值的问题,
具体可以在TClientDataSet.OnReconcileError事件中查看E.Message内容
 
可能是:
1、数据库中有自增量字段:发生的情况是,当你在客户端增加一条记录,提交后,
马上修改,这时不能提交(解决:提交后,Close,open);
2、有默认值(同上);
3、日期(Datetime)字段:Sql Server中是精确到日期的小数点后3位,
而在Delphi中只有2位,这时有的记录可能会由于四舍五入导致该字段的值不一致,修改
提交的时候就报错(解决:如果对时间要求不高,可设计为SmallDatetime;或者将
Datasetprovider的UpdateMode从upWhereAll改为upWhereChanged,upWhereKeyOnly;
亲身经历!!!
good luck
 
hehehehe maolu28!
 
好象听起来不错
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
896
DelphiTeacher的专栏
D
D
回复
0
查看
863
DelphiTeacher的专栏
D
后退
顶部