百思不得其解(往高手救我) ( 积分: 50 )

  • 主题发起人 主题发起人 sushicheng
  • 开始时间 开始时间
S

sushicheng

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么在ClientDataSet.applyUpdates(0)的时候出现"Record not found or by another use"
这个问题有时候出现,有时候要不出现。不知道为什么?
在提交时我做给我Clientdataset添加了多条数据。要删除了多条数据。
表结构中有自增字段。按照大侠们的意见设置UpdataMode,也没用。
请高手大哥们指教。
由于水平底,所以积分底。望大哥们帮我。等有分了定补上。
 
Ado的问题,6年前有人问同样的问题,赫赫:)
当有字段为空时,使用ApplyUpdate不能提交,也就是说不能自动处理空字段。
提交前对空字段手工赋一次null,再提交就可以了:
fieldbyname('xxx').Value := null;
 
Ado的问题,6年前有人问同样的问题,赫赫:)
当有字段为空时,使用ApplyUpdate不能提交,也就是说不能自动处理空字段。
提交前对空字段手工赋一次null,再提交就可以了:
fieldbyname('xxx').Value := null;
 
DBX中有这个问题吗
 
转一段给LZ参考一下:
provider更改了流水号后,默认情况下无法把发生修改的字段刷新到客户端.实际上Midas的设计的时候已经考虑到这一点,在DataSetProvider的Option属
性中有一个resolvetodataset的属性,表示服务器对记录的更新将返回给客户端并反映到客户端数据集中。不过Borload似乎是遗漏了一个步骤,还必须在
provider的AfterUpdateRecord事件中添加如下代码,把ado中修改的数据更新到Delta中.
if (updatekind=ukinsert) then
begin
deltads.FieldByName('id').ReadOnly:=false;
deltads.FieldByName('id').NewValue:=qry1ID.Value;
end;
如果使用自增长字段,比如注意数据更新控件能否刷新字段值的问题,测试中发现,ado更新数据后可以自动刷新自增长字段数据,dbexpress则不行,如果用
provider产生sql语句更新数据则更无法刷新数据,所以resolvetodataset必须是true.另外如果字段有Default值,而insert时没有指定该字段数值时需要注
意,ado和dbexpress插入数据后都无法刷新default数据,所以更新时肯定会触发"record change by another user"错误,解决方法是不用数据库的default值,
或客户端添加数据时自动赋值.
 

Similar threads

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