在多层体系下如何判断Delta的操作数据 ( 积分: 100 )

  • 主题发起人 主题发起人 huhongru
  • 开始时间 开始时间
H

huhongru

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!我在做三层体系的管理系统时,所有的业务逻辑都在中间层,客户端只是调用的中间层的接口,在客户端一个SQL语句都不用写的;而且在客户端也不用调用ApplyUpdate的方法,客户端只传给我一个ClientDataSet.Detal;因为这不调用ApplyUpdate的方法,所在我根本不能在DataSetProvider的onBeforeUpdate事件中得到谁是删除的数据,谁是新增的数据,谁是更新的数据!我说了这么多,其实只是问一个:如何区别Detal是新增,删除,修改的数据!
 
大家好!我在做三层体系的管理系统时,所有的业务逻辑都在中间层,客户端只是调用的中间层的接口,在客户端一个SQL语句都不用写的;而且在客户端也不用调用ApplyUpdate的方法,客户端只传给我一个ClientDataSet.Detal;因为这不调用ApplyUpdate的方法,所在我根本不能在DataSetProvider的onBeforeUpdate事件中得到谁是删除的数据,谁是新增的数据,谁是更新的数据!我说了这么多,其实只是问一个:如何区别Detal是新增,删除,修改的数据!
 
我这里有个源码
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3055055
 
一般你可以自己建个TCustomDataSet或TClientDataSet
再cds1.data:=delta
判断业务
然后cds1连到数据更新层就行了
 
To nulk:我们项目组长希望用sql语言去做,不允用cds去做,请大家帮啊呀
 
to huhongru
beforeUpdateRecord事件里面有个xxxx: TCustomClientDataSet的参数,名字忘了
这样很多业务都要在客户端解决了,呵呵
 
忘了说xxxx.UpdateStatus=usInsert, usmodify, usdelete
 
To nulk:
先谢谢你的回答,如果客户端不用ApplyUpDate方法,它是不会触发csd.beforeUpdateRecord的事件!客户端只传一个Delta,所有的业务都由我在中间层写,写一定用SQL语句!请问你有什么好的办法啊!
如何你觉得分不过的话,我会再加的
 
不用ApplyUpDate方法,也就是不用AS_ApplyUpdate接口
那么一定是用了自定义的接口方法了吧, 能告诉我你们自定义的接口方法和参数吗?
 
To z_cd :简单而言,就是用判断前台传来的Detal是删除,新增,修改,用一个for 的语句进行遍历而已
 
cds.Data := Delta 之后,
既然用遍历cds的记录,判断cds每条记录的UpdateState不行吗?
 
我在想这样的效果是不是好,这样的遍历我已有解决,我想还有没有其它好的办法!
 
其实,你去看一下Delphi的Provider中的源码,你会发现,它自己就是这样做的,最简单的方法往往就是最好的。
 
后退
顶部