delphi6中的midas支持事务处理么?(15分)

L

lafaer

Unregistered / Unconfirmed
GUEST, unregistred user!
还有就是midas做的三层系统稳定性如何。

速度如何呢?

还有在三层系统中,应用服务器是用adodataset连接的。
并且是连接多个表的。
为什么客户端更新数据时delta 能穿到应用程序服务器
但为什么不能更新呢?
如果不支持多表连接的更新,
应该给出错误的。
delphi6究竟支持不支持三层的连接多个表格的数据更新呢?

 
Lid=862254: 三层中事务处理问题(请大家救救我。。。两天了都没解决好)
分类:数据库-C/S型 qiubole (2002-1-16 15:11:00)
在服务器有两个adoquery,两个datasetprovider
在客户端有两个clientdateset

要求两个clientdataset要么同时提交要么同时回滚;
方案1:在服务器端声明两个方法,一个BeginTrans,一个CommitTrans;

在客户端的保存中进行调用
dcomconnection1.AppServer.begintrans;
DetailDataSet.Post;
DetailDataSet.ApplyUpdates(0);
MasterDataSet.Post;
MasterDataSet.ApplyUpdates(0);
dcomconnection1.AppServer.committran;
不能解决问题;和没调用事务处理一样:(

方案2:在服务端声明一方法;用来处理更新
procedure TTSaleServer.Apply1(Param1, Param2: OleVariant);
var
errorcount:integer;
begin
errorcount:=0;
try
adoconnection1.BeginTrans;
sa_mainquprovider.ApplyUpdates(param1,-1,errorcount);
if errorcount>0 then
raise eadoerror.Create('error');
sa_qutprovider.ApplyUpdates(param2,-1,errorcount);
if errorcount>0 then
raise eadoerror.Create('error');
adoconnection1.CommitTrans;
except
adoconnection1.RollbackTrans;
end;
end;
在客户端调用,也不能解决问题,更新的数据竟然变成插入了:(
请问各位大虾,怎样解决呀?
我看了以前的贴子,没有满意的答案,不要怪我懒,实在是找不到

lovelotus (2002-1-16 15:29:00)
why

qiya (2002-1-16 16:07:00)
up

寻找 (2002-1-16 16:22:00)
什么是三层事务?

qiubole (2002-1-16 22:11:00)
问题已经解决
采用方案1

var
ErrorCount:integer;
begin
ErrorCount:=0;
dcomconnection1.AppServer.begintrans;
DetailDataSet.Post;
inc(ErrorCount+DetailDataSet.ApplyUpdates(0));
MasterDataSet.Post;
inc(ErrorCount+MasterDataSet.ApplyUpdates(0));
if ErrorCount>0 then
dcomconnection1.AppServer.RollBack
else
dcomconnection1.AppServer.committran;

谢谢各位捧场
--------------------------
另: lid=1031990 也是相关讨论。
//学习。关注此题。
 
请问一下,应用程序端的不需要任何处理吧.

只要用你最后的修改的方案1就可以了.
 
我试了,它怎么报错说不支持事务处理呢?

你的连接数据库是adoconnection么?

还有一个问题问你:
当服务器端使用adodataset用select连接服务器端的两个表的时候,
在客户端更改的数据为什么不能写入数据库呢?
delta是传到应用服务器端了.
但应用服务器并没有对数据进行更新.
是不是不支持这项功能呢?
清告知!
 
顶部