关于一个简单的多层应用的问题(20分)

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

seraphcj

Unregistered / Unconfirmed
GUEST, unregistred user!
server端
table-provide
client端
dcomconnection-clientdataset1
我已经在 clientdataset1 里面准备好了数据,我想把这些数据insert入数据表table所对应的表里,但是,只要有一条插入失败,就回滚(全部取消此次插入)。
我是否还要在server端加database控件,应该怎么用呢?
 
不用,只要在调用ClientDataset.ApplyUpdates的时候,传的参数是0就可以了,调用形式如下:
ClientDataset.ApplyUpdates(0);
另外需要作错误处理,这就属于常规的工作了。
 
你肯定是一个劲的在添加数据,没有调用ApplyUpDatas所以才会这样的
 
Midas中象你这样使用是没有事务的概念的,就是说你的要求办不到。
必须自己写代码来实现。
 
如果需要忽略更新错误,那么调用ApplyUpdates(-1)就可以了。每次更新失败会在ClientDataset触发一个OnReconcileError事件,可以在这里通知用户。
 
to:szf 果真没有事物的概念?老天。。。我是SAP abap的程序员,我们做的程序都是可以支持 commit rollback 的,如果插入失败了的话,我想回滚是不可能的?
 
真的没有事务!我也觉得挺麻烦的,可能这就是Borland的中间件不火的原因吧。
反正我觉得它确实很简陋。不过你可以自己写接口方法。
1、用类型库编辑器生成一个TranAction接口,定义一个参数=0表示begin tran =1表示commit,类推
2、再生成一个EditData接口,用于更新数据,具体自己推敲吧。
调用时,不能再用ClientDataSet的CommandText了,只能用远程对象的这些方法来实现

附:
很多程序员使用Midas时把应用服务器当做一个传输器了,都把Sql写在客户端用ClientDataSet来做,
一点都没有封闭业务逻辑,真是@#$%@^$%&$!!
 
后退
顶部