请教为什么在C++ builder 中,开发MTS三层结构中ClientDataSet中ProviderName 总为空?(200分)

  • 主题发起人 主题发起人 hujq
  • 开始时间 开始时间
H

hujq

Unregistered / Unconfirmed
GUEST, unregistred user!
我已前用delphi5.0 开发MTS三层结构,一切正常。
而现在用C++Builder 5.0开发MTS三层ClientDataSet中ProviderName 总为空
方法:

应用服务器:
1. new一个activeX页面的activeX library
2. new一个multitlerd页面中transactional Data Modula
3. transactional Data Modula中放一个table,DataSetProvider
4. 设置DataSetProvider中的dataset为talbe
5. 选择install com+ object

客户端:
1. 放一个DCOMConnection,ClientDataSet
2. 设置DCOMConnection中servername的属性 (正常)
3. 设置ClientDataSet中romateserver (正常)
4. 设置ClientDataSet中ProviderName时 出现ProviderName 总为空 (error)
5. 往下无法再........

在设置 DCOMConnection的connected为true 时,MTS 运行正常,
而在置 ClientDataSet中ProviderName时,正常的MTS变为停止,事件查看器出COM+ 错误
{
系统调用了一个客户自定义组件,该组件已失败并产生了一个异常错误。这说明自定义组件有问题。请将该失败通知组件的开发者关于并提供他们下列信息。
组件 Prog ID: cccc Object
方法名称: IObjectControl::Activate()服务器应用程序 ID: {31ECD63B-295C-4AB4-B970-854C184A83C4}服务器应用程序名称: hujq
该错误的严重性已导致进程终止。
异常: C0000005
地址: 0x77A8D401
调用堆栈:
ole32!CoGetObjectContext + 0x5
cc!@@Cc_tlb@Finalize + 0x10E
COMSVCS + 0x103916
COMSVCS + 0x10339C
COMSVCS + 0x19B18
COMSVCS!ComSvcsExceptionFilter + 0x1B690
+ 0x5552FFF8
+ 0x68832B71
}
若以上程序用delphi 5 上编写,运行一切正常。我想可能是c++ builder生成的DLL的接口可能不对,
或我在C++ builder 5 中对MTS 生成方法不对,请高手指点。 请给我一个example
email to softhome@public.km.yn.cn
非常感谢! 十万火急!!!!





 
用c++ builder 5 用(EXE)MIDAS时运行正常,而(DLL)MTS...ERROR!
 
你是在win2000平台下吧。安装的时候是选择install com+是吧。
我以前在98下做过一切正常,但同样的代码方在win2000下就不行,出错信息和你的一样,
我怀疑是BCB对于COM+的支持有问题,后来我强迫BCB把我写的组件按照MTS进行处理就好了,
默认情况下BCB会把它当成COM+来处理,不过这样做需要修改BCB中的一个源文件,不知道
是否有更好的办法。
另外在Delphi和win2000下我还发现如果按照运行包的形式编译运行MTS就没有问题,否则
也会出问题,不过我没有打过Delphi的补丁,不只打补丁后是否会好。
 
我是win2000下,MTS安装选择install com+。
如果应用服务器程序和客户端在一台机器上,应用服务器程序如不选择install com+ 或 注册 ACTIIVE X
客户端中ClientDataSet中ProviderName正常,但只在这一台机器上运行。不能发布。

bcb 5.0 打补丁 pack1 也一样。

doggo:
需要修改BCB中的一个源文件,您能不能将修改公开一下,谢谢!!!


 
程序改动不大,也可以公布,不过这几天我在外地,至少要一周后才能返回,回去后再把
程序贴上来。
 
太慢了,贴不上。
 
bcb不会比delphi5还差吧!
 
现在的大富翁太慢了,我改动的程序本想贴上来,但试了几次都贴不上,另外也收不到
邮件通知了。
 
我在用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
 
后退
顶部