L
looyo
Unregistered / Unconfirmed
GUEST, unregistred user!
我采用了Delphi 5.X ADOMTSCOM高级程序设计篇 中第九章说述的架构想建立一个三层系统 。
软件环境 delphi 7 update1.1 数据库 oracle 10.2.0.1
操作系统 XP SP2
客户端:放置 clientdataset1 ,datasource1 dbgrid1
查询协调对象(dbquerycoor,支持事务):
放置一个clientdataset2,dcomconnect2
添加 getRoles(var vDataslevariant);
客户端用来获取数据
这个函数返回 clientdataset2.data
更新协调对象(dbupdatecoor,需要事务):
放置dcomconnect3
添加 procedure updateroles(vdataslevariant) 用于更新数据
[red]MTS对象(dbmts) [/red]
放置一个 ADOConnectionacon4 ADOQuery4 DataSetProvider4
数据库链接采用 oracle provider for ole db作为驱动。
adoquery1 中只有一句简单的sql语句 select * from role
添加 procedure updateDatas(vDatas: OleVariant;
iMaxErrors: Integer;
var iErrorCount: Integer);
safecall;
updateroles 原本想通过 dcomconnect3.AppServer来执行 ApplyUpdate,但是事实上无法调用。后来只能直接通过createremote来 直接执行 dbmts的AS_ApplyUpdates。
但是通过 dbmts 的 DataSetProvider4 的 onupdateerror 得到错误信息[blue]新事务不能登记到指定的事务处理器中[/blue]。更新不成功!
如果 更新协调对象dbupdatecoor需要事务 变成不支持事务,则能更新成功 !
软件环境 delphi 7 update1.1 数据库 oracle 10.2.0.1
操作系统 XP SP2
客户端:放置 clientdataset1 ,datasource1 dbgrid1
查询协调对象(dbquerycoor,支持事务):
放置一个clientdataset2,dcomconnect2
添加 getRoles(var vDataslevariant);
客户端用来获取数据
这个函数返回 clientdataset2.data
更新协调对象(dbupdatecoor,需要事务):
放置dcomconnect3
添加 procedure updateroles(vdataslevariant) 用于更新数据
[red]MTS对象(dbmts) [/red]
放置一个 ADOConnectionacon4 ADOQuery4 DataSetProvider4
数据库链接采用 oracle provider for ole db作为驱动。
adoquery1 中只有一句简单的sql语句 select * from role
添加 procedure updateDatas(vDatas: OleVariant;
iMaxErrors: Integer;
var iErrorCount: Integer);
safecall;
updateroles 原本想通过 dcomconnect3.AppServer来执行 ApplyUpdate,但是事实上无法调用。后来只能直接通过createremote来 直接执行 dbmts的AS_ApplyUpdates。
但是通过 dbmts 的 DataSetProvider4 的 onupdateerror 得到错误信息[blue]新事务不能登记到指定的事务处理器中[/blue]。更新不成功!
如果 更新协调对象dbupdatecoor需要事务 变成不支持事务,则能更新成功 !