三层模式中客户端如何调用服务器端的过程或函数?(200分)

  • 主题发起人 主题发起人 cxcsy
  • 开始时间 开始时间
C

cxcsy

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层模式中服务器端有一个函数,
function Tform1.trans(i: integer):integer;
var
j: integer;
begin
if i=0 then
j:=100
else
j:=0;
result:=j;
end
问题?
1、上述函数在服务器端应该写在何处?(Tform 还是 TRemotedatamodule)
2、客户端如何调用?(我用dcomconnection.appserver.trans(1);提示错误)
系统服务器采用ADOconnection+sqlserver2000,客户端dcomconnection
我看过一些这方面的帖子,但都无法理解,请教各位高手,谢谢!
 
1:TRemotedatamodule
2:客户端和服务器端如果不是同一台机器,则需要配置Windows的分布式 COM 配置属性,
在运行敲入dcomcnfg即可。你的调用方法没有错!
 
1.写在TRemotedatamodule中
2.客户端用dcomconnection.appserver.trans(1)试试
应该可以的吧
 
在同一台机器上,我将函数写入两个地方,均不成功
方法也是dcomconnection.appserver.trans(1)
 
错误提示是:method 'trans' not supported by automation object
 
*_TLB文件中有没有声明该函数?
 
在服务端的工程中, View -> Type Library 添加你的函数声明
然后点Refresh按钮, 在相应的单元中写你的实现代码
客户端调用代码不变。
 
xianjun:
我已打开Type Library ,但不知如何添加函数声明?
 
选中接口 IXXXXX(树中的第二个节点)
点工具栏上的绿色箭头的图标(NEW METHOD)
然后输入名称、参数等信息
 
xianjun:
谢谢!已经成功!
 
你成功了,可我还没成功呀。我也碰到此问题了。烦了2天还没能找出解决办法。

请大侠说详细点好吗?
 
我的目的是想在中间层进行数据验证的。

如: TRemoteDataModule中有此函数
function UserLogin(username, password : string) : integer;
begin
...
result := 1;
end;


在客户层用 TSocketConnection
nn := sckConn.AppServer.UserLogin(edtUser.text, edtPass);

都提示 'Method 'UserLogin' ..................' (就是上面的那句错误)。
 
我怎么砍不了相关信息
 
后退
顶部