H
hlsl
Unregistered / Unconfirmed
GUEST, unregistred user!
目前遇到这样一个问题:
简单来说,这是个更新数据的问题。请看:
数据库SQL SERVER中的一个表 A,其中有一个自动加1的字段ID,也就是int的标识字段。我对这个表添加记录后,post-ApplyUpdate,之后记录提交正确,但是这个ID字段是空的——数据没有更新回来。由于这个字段是作为主键,那么再继续添加记录的时候,由于都是空的,所以CLIENT认为“主键冲突”。
我对这个问题是这样考虑的,标识字段的数据只有真正写到数据库中的时候,才会为这个字段产生一个值。我在CLIENT提交数据的时候,这个字段是不可编辑的(只读)。提交到了应用服务器(中间层、远程数据模板)那里的时候,这个字段还是空的。当应用服务器中对应的TADOTable真正提交到SQL SERVER的时候,这个字段才被SQL SERVER赋值。
由于以上的原因,CLIENT提交数据后,这个字段的值是空的——虽然数据库中实际的字段上是已经有值了的,但是并没有更新回来。
我尝试把应用服务器的Provider的option里面设置了AutoRefresh,在客户端ApplyUpdate后调用Refresh,都没有作用(如果调用RefreshRecord会提示其他用户修改了该字段)。目前,我只采用了一个临时变通的办法,就是ApplyUpdate后把ClientDataSet Close 后然后再 Open。这样就会更新了——这表示应用服务器那里的数据是正确的,只是没有及时的更新回到客户端。
推而广之,如果是数据库触发器的修改了数据,也不能及时的更新到客户端。
请问:如何正确的更新这种数据?我不知道该用哪些设置或者调用什么函数。特别是,如果这个字段没有任何特别的特征(比如索引、主键之类的)。
谢谢。
简单来说,这是个更新数据的问题。请看:
数据库SQL SERVER中的一个表 A,其中有一个自动加1的字段ID,也就是int的标识字段。我对这个表添加记录后,post-ApplyUpdate,之后记录提交正确,但是这个ID字段是空的——数据没有更新回来。由于这个字段是作为主键,那么再继续添加记录的时候,由于都是空的,所以CLIENT认为“主键冲突”。
我对这个问题是这样考虑的,标识字段的数据只有真正写到数据库中的时候,才会为这个字段产生一个值。我在CLIENT提交数据的时候,这个字段是不可编辑的(只读)。提交到了应用服务器(中间层、远程数据模板)那里的时候,这个字段还是空的。当应用服务器中对应的TADOTable真正提交到SQL SERVER的时候,这个字段才被SQL SERVER赋值。
由于以上的原因,CLIENT提交数据后,这个字段的值是空的——虽然数据库中实际的字段上是已经有值了的,但是并没有更新回来。
我尝试把应用服务器的Provider的option里面设置了AutoRefresh,在客户端ApplyUpdate后调用Refresh,都没有作用(如果调用RefreshRecord会提示其他用户修改了该字段)。目前,我只采用了一个临时变通的办法,就是ApplyUpdate后把ClientDataSet Close 后然后再 Open。这样就会更新了——这表示应用服务器那里的数据是正确的,只是没有及时的更新回到客户端。
推而广之,如果是数据库触发器的修改了数据,也不能及时的更新到客户端。
请问:如何正确的更新这种数据?我不知道该用哪些设置或者调用什么函数。特别是,如果这个字段没有任何特别的特征(比如索引、主键之类的)。
谢谢。