小
小甘
Unregistered / Unconfirmed
GUEST, unregistred user!
(这是李维的《ADO/MTS/COM+书的第八章一个例子)
一.在mts对象调用另一个mts对象不成功
情况是这样:MTS数据模块对象mtsBookObj有一个conn,adoquery,dsp
MTS对象TmtsSecurityObj则调用mtsBookObj,利用mtsBookObj的dsp接口来获取数据包
在客户端则有ClientDataSet接收数据包,流程就是这样的
调试时在OleCheck中停下来不继续执行;
客户端出错信息为"invlid data Packet"
按李维的说法,在mts中调用mts 组件效率比直接在客户端中调要高,但是这样为什么不行呢?调试他给的
源码也不行
服务器
procedure TmtsSecurityObj.GetBooks(vCookie: OleVariant;
var vDatas: OleVariant);
var bookObj:ImtsBookObj;
aps:IAppServer;
Options:TGetRecordOptions;
iRecOut:Integer;
OwnerData:OleVariant;
Params:OleVariant;
begin
if VerifyCookie(vCookie)then
begin
try
OleCheck(ObjectContext.CreateInstance(CLASS_mtsBookObj,IID_ImtsBookObj,bookObj));
aps:=bookObj as IAppServer;
Options:=[grMetaData,grReset];
vDatas:=aps.AS_GetRecords('DataSetProvider',-1,iRecOut,Byte(Options),'',Params,OwnerData);
SetComplete;
except
SetAbort;
end;
end;
end;
以下为客户调用源码
LoginObj:ImtsSecurityObj;
procedure TForm1.Button3Click(Sender: TObject);
var vDatas:OleVariant;
begin
LoginObj:=ComtsSecurityObj.CreateRemote('Chinatec-laj');
LoginObj.GetBooks(Edit3.Text,vDatas);
ClientDataSet1.Data:=vDatas;
end;
[
本人初涉mts三层编程,请各们大侠指正
一.在mts对象调用另一个mts对象不成功
情况是这样:MTS数据模块对象mtsBookObj有一个conn,adoquery,dsp
MTS对象TmtsSecurityObj则调用mtsBookObj,利用mtsBookObj的dsp接口来获取数据包
在客户端则有ClientDataSet接收数据包,流程就是这样的
调试时在OleCheck中停下来不继续执行;
客户端出错信息为"invlid data Packet"
按李维的说法,在mts中调用mts 组件效率比直接在客户端中调要高,但是这样为什么不行呢?调试他给的
源码也不行
服务器
procedure TmtsSecurityObj.GetBooks(vCookie: OleVariant;
var vDatas: OleVariant);
var bookObj:ImtsBookObj;
aps:IAppServer;
Options:TGetRecordOptions;
iRecOut:Integer;
OwnerData:OleVariant;
Params:OleVariant;
begin
if VerifyCookie(vCookie)then
begin
try
OleCheck(ObjectContext.CreateInstance(CLASS_mtsBookObj,IID_ImtsBookObj,bookObj));
aps:=bookObj as IAppServer;
Options:=[grMetaData,grReset];
vDatas:=aps.AS_GetRecords('DataSetProvider',-1,iRecOut,Byte(Options),'',Params,OwnerData);
SetComplete;
except
SetAbort;
end;
end;
end;
以下为客户调用源码
LoginObj:ImtsSecurityObj;
procedure TForm1.Button3Click(Sender: TObject);
var vDatas:OleVariant;
begin
LoginObj:=ComtsSecurityObj.CreateRemote('Chinatec-laj');
LoginObj.GetBooks(Edit3.Text,vDatas);
ClientDataSet1.Data:=vDatas;
end;
[
本人初涉mts三层编程,请各们大侠指正