急!!!基于组件的三层应用程序设计(关于mts和midas结合)(200分)

  • 主题发起人 fangkite
  • 开始时间
F

fangkite

Unregistered / Unconfirmed
GUEST, unregistred user!
三层设计中(表示层,商业逻辑层,数据访问层),中间层采用mts object,
数据访问层采用mts remote datamodule, 两者都是dll,在mts软件包里注册了。
数据访问层一个组件的传出参数返回数据包datapack(数据类型为olevariant),在商业逻辑层采用clientdataset1.data:=datapack形式把数据包赋给clientdataset,以期使用str1:=clientdataset1.fieldvalus[‘pwd’]取得具体field的值。
在调试商业逻辑层dll时,在运行到clientdataset1.data:=datapack一句时程序首先报致命性错误,后来不报错了,以为可以了,追踪后发现此句没执行,不知何故。
请各路好手多多赐教,不知我这样调用对不对。多谢!!

 
你在mts remote datamodule里用TdatasetProvider,然后在MTS Object里用设置TClientDataSet.ProviderName=TDatasetPorvider,就可以啦。
 
listen listen
 
绝对没有问题!
报错的原因与clientdataset1.data:=datapack无关,错误可能出现在上一个获取
datapack的语句行,看一下在OnActive事件触发时干了什么。
至于为什么clientdataset1.data:=datapack没有执行,我实在想不通没法帮你,还
是自己检查一下源代码吧。
 
你用的是正版吗?
在单机还是网络上调试?
 
对不起,出差了一趟
to netyjj:
我用的delphi5不是正版的,正版的老板正在审批。
我在单机上调试。
to apartment:
在这里基于组件的三层设计,就是想在商业逻辑层直接通过数据访问层的
方法调用,从传出参数中获得数据包,而不直接调用provider,具体我是参照
北大出版社的《基于组件的应用程序设计》做的。不过,书里都是vb,vc的例子,
我想用delphi编,因而有了以上问题。
基于组件方式是微软强烈推荐的今后发展方向,这本书很好。
to langer:
真的是到这里报的错,我在怀疑是否与mts对象的运行环境有关。
在整个程序运行中,在NT中看到起了三个mtx.exe进程,有4M,5M,8M大,
一个可能是mts对象运行的大环境,另外两个可能分别是商业层和数据访问层
两个对象的自己起的运行环境。但是这占内存也太大了点,不知那里有错。
请mts高手多多指教!!!

 
找到错误了,dataset要初始化
a:=TClientdataset.create(nil);
最后a.free
 
接受答案了.
 
顶部