TClientDataset ApplyUpdates后如何获取自动编号字段的值 ( 积分: 200 )

  • 主题发起人 主题发起人 zangyang
  • 开始时间 开始时间
Z

zangyang

Unregistered / Unconfirmed
GUEST, unregistred user!
TClientDataset ApplyUpdates后如何获取自动编号字段的值
 
TClientDataset ApplyUpdates后如何获取自动编号字段的值
 
请看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=800605
 
wangminqi,仁兄,先谢谢你。
帖子我看过了,并没有实际解决问题,DeltaDS中修改过以后不能回传。
你按他的方法实现过吗?有具体的例子吗?能否给我一份
 
你可以到这里看看,上面是一些朋友改写的ClientDataSet跟DataProvider控件。
他们好像已经解决了你的问题(看到更新2的么?)。不过,还不是最终发布版本,你可以通过CVS获得代码,如果你不能获得的话,留下你的邮箱,我发一份给你。
http://sourceforge.net/projects/midess
WHAT'S NEW
1) A new property PrimaryKey that cut offs dependency on Fields[0]. In prior version Fields[0] was assumed to be the primary key. All field types are now supported (not just TIntegerField types).
2) Properties AutoIncrementStep and AutoIncrementSeed that have similar meaning with the one's used in ADO. NET have been added.
3) ForeignKeys property is now a collection property and methods have been added that provide run time manipulation of referential constraints.
4) Added support for SQL servers using AutoInc columns (a new event added called OnGetLastInsertedValue)
3) Better reconciliation handling (fixed some bugs related to that)
5) No need to handle OnGetConnFldIdx event (this eventdo
esn't exist any more). This is now managed automatically
6) Better clone support (fixed some relevant bugs)
7) Updated help file with more comments, topics and examples
8) 2 sample applications as showcases of KT Data Component features
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1359517
有帮助不
 
ClientDataSet.Refresh
 
我也觉得是提交后立即刷新比较好。预取数或预置数时在多用户环境下可以会出问题的。
比如说:A用户在添加记录时查询了@IDENTITY 或其他的自定义函数得到了最大值,并作为了当前记录的值。但此时由于记录并未提交,所以上述状态并未改变。如果此时紧接着B用户要添加记录,那么他们将得到相同的键值。最终导致在两人提交数据错出错。
当然,也可以说,查询使用后立即刷新状态值,但是如果用户最终又取消了数据提交呢?是不是号码实际上又没被使用?
所以,从“性价比”上说,还是提交后立即刷新比较好。
 
kkkchenA,先谢了,我已下载并安装,不过我还有问题。你用过这个控件嘛,
我想我要的是
4) Added support for SQL servers using AutoInc columns (a new event added called OnGetLastInsertedValue)
可是 OnGetLastInsertedValue 在那个vcl中呢?
 
Borland官方的说明
http://cc.borland.com/Item.aspx?id=23068
下载那个东西看看,有OnGetLastInsertedValue
 
to chenybin,我已下载并安装,但OnGetLastInsertedValue 是provider的事件,在中间层,如何让这个值返回到客户端呢?
 
帮忙找资料而已,不怎么懂的,听课[:(][:(][:(]
 
看了一下KT控件包的代码,哎,没搞清楚他在服务署把数据更新完毕以后,如何把数据返回到客户端的。还是用一些简单的方法吧,更新以后立刻刷新是比较容易实现的方式。
 
kkkchenA,sourceforge上提供的控件和cc.borland.com上提供的控件不是一个控件,但两个都不好用,或者是我们不会使用。
更新以后立刻刷新是比较容易实现的方式,
但比如我添加一条记录,我即想知他的id,又想定位在这条记录,刷新后如何知我刚添的是哪条记录呢?
 
chenybin,客气了。
仁兄可是本轮排名的大富翁啊!
能光临我的帖子,是我的荣幸!
能留个联系方式吗?
 
ClientDataSet.Refresh 就行了
 
立即刷新会导致所有记录的回传,并不好
 
select max(id)……
不行吗?
 
是自动增量值吗?调用存储过程的返回值@@identty
 
通过ClientDataSet.RecNo就可以了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部