如何对COM+除错及COM+中为何程序改为必需交易便出错的问题。(200分甚至更多)(200分)

  • 主题发起人 主题发起人 zhangkan
  • 开始时间 开始时间
您的问题一定是使用了本地类型数据库,如ACCESS等。此类数据库不支持交易模式!
如果您使用SQL SERVER或者ORACLE等就不会有问题了。
 
好象需要通过Iappserver接口来调用吧,修改如下:
1、增加一个变量,Var Aps : IAppServer ;
2、 OleCheck(ObjectContext.CreateInstance(CLASS_dmDoIt,IID_IdmDoIt,IDo));
Aps := IDo as IAppserver ;
//增加的一行
Aps.DoIt(sSQL);
//修改的一行
另外,李维书中每一个物件都是一个DLL,我想只是为了说明方便吧,应该是将多个相关的
放在一个DLL中。
 
你的问题不是很清楚。[?]
把我的理解写在下面:[:)]
這可能是因為設定為requires a (new) transtion時,
MTS/COM+會啟動一個Transaction, 但是客戶端呼叫ApplyUpdate時,
又會試著再啟動一個Transaction, 這會造成Nested Transaction,
而有的库如Access不支援Nested Transaction, 因此發生錯誤. 這和你使用的資料庫有關,
也需要瞭解Transaction Theory, 可建議你看看Principles Of Transaction一書.
 
Tense,你可以直接给我写信.我的email是kan@freetrend.
com.vn,因为我们的开发环境比较
相近,也许以后有讨论的地方.我设过断点,并不是Update的时候出的问题,而是在生成这个
物件的时候出错的.下面这一句时出错.
try
OleCheck(ObjectContext.CreateInstance(CLASS_dmDoIt,IID_IdmDoIt,IDo));时便出错
完整错误信息:"[ORACLE][ODBC]Failed to enlist global transaction with DTC"
应该不是你说的那个问题吧.
另外,你说的Principles Of Transaction一書.在哪儿找,可有电子书,我这儿买不到.你是在
港资还是台资,用的繁体?我是台资.
 
微软的文章已经说的很清楚了,的确客户端使用Oracle 8.1.5的时候会有上述的问题,
我用Oracle8.0.5的客户端,按照微软提供的解决方案处理以后,就可以了。
 
hzb,请问微软的解决文章在哪儿,你能不能贴出来看看?为什么8.0.5没有问题,而8.1.5却有
问题呢?那么8.1.7有没有问题呢?
 
谁说8.0.5没有问题,8.0.5当然需要补丁,网站地址见上面
 
jiansen已经把地址贴出来了,就是:
http://www.microsoft.com/china/msdn/library/techart/complus_best.asp
你看一下那篇文章吧(我本来想贴出来的,但我不知道怎么保留上面的格式)。
 
用ado連oracle,有點不合適,應該用bde試一下,oracle處理不好ado關於事務處理那套,
bde本身也有事務處理,delphi6有dbexpress連接oracle不錯
我這段時間經常做中間層的dll,也遇到事務處理的問題,
當然我是用ado連sql server2000,原因是我沒有事先建立為mts com+元件,activex libary
導致mts com+的dll文件安裝時一大堆問題
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
很久没上来,这问题都搞忘了。谢谢各位!江兄最近可好?
 
后退
顶部