有谁成功做过李维的书的(ADO/MTS/COM+ 高级程序设计篇)里的第9章的 更新 的例子吗。 (50分)

  • 主题发起人 主题发起人 sunys
  • 开始时间 开始时间
谢谢,好的把你发给我吧。suny_20000@163.com
 
大家能不能讨论一下,现在做系统用MTS/COM+是不是合适呢。应该怎么来做。
这个技术是不是已经很成熟了,大家给点意见,多谢谢了。给大家加分。
 
FMyDM.dcomcPublishers.AppServer.UpdateDatas(vDatas, iMaxError, iErrorCount)中出现错误
原因就是如提示所说Delta包的数据不合法,检查一下你的代码是否对vDatas变量的赋值是否正确,
如果可能把你的源码给我,我帮你看看.
MTS/DCOM的技术已经相当成熟,但基于mts/docm的多层系统并不容易开发,而且如果设计架构不合理,
效率还不如C/S结构,建议从小的,时间比较宽裕的项目开始实施MTS/DCOM,积累设计和编码经验。
 
好的。谢谢了
这里是MTS OBJECT里的。
procedure Tmtstarrupdate.updatetarrifm(vdatas: OleVariant;
imaxerror: Integer;
var ierrorcount: Integer);
var serverobj:iappserver;
ownerdata:olevariant;
begin
try
fmydm.dcomtarrifm.Connected:=true;
fmydm.dcomtarrifm.AppServer.updatedatas(vdatas,imaxerror, ierrorcount);
setcomplete;
except
setabort;
end;
end;


这里是MTS DATAMODUAL;
procedure Tmtstarrifmz.updatedatas(vdatas: OleVariant;
imaxerrors: Integer;
var ierrorcount: Integer);
begin
try
dsptarrifm.ApplyUpdates(vdatas,imaxerrors,ierrorcount);
setcomplete;
except
setabort;
end;

end;


这里是客户端程序。
procedure TForm1.BitBtn3Click(Sender: TObject);
var ucoor:Imtstarrupdate;
vdatas:olevariant;
imaxerror: Integer;
ierrorcount: Integer;
begin
ucoor:=Comtstarrupdate.CreateRemote('asa-suny');
try
ucoor.updatetarrifm(cdtarrifm.Delta,0,ierrorcount);
except
showmessage(inttostr(ierrorcount));
end;
end;
 
李维的这个例子的确有错误,不过我已经找到了解决的办法,方法如下:
procedure TmtsUpdateObj.UpdateData(vData: OleVariant;
iMaxError: Integer;
var iErrorCount: Integer);
Var
ServerObj: IAppServer;
OwnerData: OleVariant;
begin
try
ServerObj := myDM.DCOMConnection1.GetServer;
ServerObj.AS_ApplyUpdates('dspData', vData, iMaxError,
iErrorCount, OwnerData);
SetComplete;
except
SetAbort;
end;

end;

示例说明:
1、dspData是数据对象中的数据提供者组件(TDataSetProvider)
2、数据对象中不需要做相应的更新过程,如果照李维的例子做会出现"Invalide Data
Package"错误。
3、李维例子中的相应过程中使用FmyDM.dcomcBooks.AppServer as IAppServer获取
IAppServer接口的方法是错误的,无法编译通过。要使用DCOM组件的GetServer方法获取,
示例如下: ServerObj := FmyDM.dcomcBooks.GetServer
 
mickeylan 说的很有道理的。跟我一样的情况。我再去试试你的方法。
能否留下你的QQ和EMAIL地址,以后多多交流。谢谢。
还有删除的方法是否和前面的更新和查询一样呢。接口应该如何写呢。
写这种程序代码时,应该注意什么呢。
 
我的QQ是3283406
 
我想问问,李的例子,是不是很好的架构。如果是,如何扩充?
 
多谢,mickeylan。问题已经解决。再次表示谢谢。
我加你的QQ好象加不进来。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部