<初学> Delphi.5.X.ADO.MTS.COM+高级程序设计篇 例子实现问题(100分)

  • 主题发起人 主题发起人 wangyv
  • 开始时间 开始时间
W

wangyv

Unregistered / Unconfirmed
GUEST, unregistred user!
使用平台 windows server 2003 + MS SQL Server 2000 + Delphi 6/7 (都调试过)
数据库: MS SQL Server 2000 示例数据库 pubs
支持事务 MTS 数据模块: (书中有三个我只建了一个)
adoconnection1: 连接数据库pubs
adoquery1: 连接authors表
datasetprovider1
建立方法updatedatas(vdatas: OleVariant;
imaxerrors: Integer;
var ierrorcounts: Integer);
用来执行datasetprovider1.applyupdate;
支持事务 MTS 数据查询模块: (获取authors表中数据功能)
dcomconnection1:连接prjauthors.coMTSauthors
clientdataset1:从datasetprovider1取得author表的数据
建立方法getauthors(var vdatas: OleVariant);
需要事务 MTS 数据更新模块: (更新authors表中数据功能)
dcomconnection1:连接prjauthors.coMTSauthors
建立方法updateauthors(vdatas: OleVariant;
imaxerrors: Integer;
var ierrorcounts: Integer);
调用 MTS 数据模块的updatedatas方法更新数据
根客户端:
取得数据:
qCoor := CocoMTSquery.CreateRemote('192.168.11.2');
qCoor.Getauthors(vdatas);
ClientDataSet1.Data := vDatas;
更新数据:(调用MTS 数据更新模块updateauthors方法)
qCoor := CocoMTSupdate.CreateRemote('192.168.11.2');
qCoor.updateauthors(clientdataset1.Delta,-1,num);
//*****************************************************
更新失败显示“远程过程调用失败”
但当我直接调用 MTS 数据模块updatedatas方法时能成功调用,
根据李维书上讲的通过这样的方法是为了提供事务控制,提供数据安全性
(同时按书上讲的修改了comobj和provider两个vcl单元)
是操作系统问题?还是我的程序问题?敬请高手指点!!
 
当更新数据出错的时候,强行reset程序,当第二次运行,请求数据时程序失去响应,
不知是不是因为第一次事务处理没有结束导致的 MTS 数据模块队列,
但是书上说之所以这样分层是为了提供无状态MTS对象,为何容错能力这般差呢?
 
经过调试,发现是传递到 MTS 数据模块的 vdatas: OleVariant发生错误,
但在 MTS 数据更新模块中的vdatas还是好的,
但为什么经过 MTS 数据更新模块updateauthors传递到 MTS 数据模块后数据会变坏呢?是我的程序有问题?
高手请指教!
 
升级一下你的ADODB看看,可能问题就出现在这里.
 

Similar threads

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