我想做一个进销存,有好多单据对吧?都要新建保存。我在客户端只放一个socket,服务器端建一个服务器程序,一个RDataModal对吧?建了一个RdataModal肯定就有了一个接口对吧(比如叫IServer)?接口里写好多函数,不好维护我觉得,而且太多,比如采购单保存、销售单保存什么的,所以我想建再建一个接口叫IBill,有几个函数新建、保存。这样我再在Iserver接口下建一个函数GetInterFaceByID参数是单据类型,返回类型为IBill,这个GetInterFaceByID函数实现功能为:根据不同的单据类型来实例化IBIll接口,这样客户端调用的时候就只用这样作了
var tt:IBill
tt:=socket.appserver.getinterfacebyID(单据类型);
tt.新建;
tt.保存;
不知道我说明白了没?
现在有两个问题是这个的关键第一个怎么实例化IBill;第二个是怎么返回这个接口。
var tt:IBill
tt:=socket.appserver.getinterfacebyID(单据类型);
tt.新建;
tt.保存;
不知道我说明白了没?
现在有两个问题是这个的关键第一个怎么实例化IBill;第二个是怎么返回这个接口。
解决方案 »
- 函数参数使用多维数组作为参数,如果把这个多维数组赋给另一个多维数组?
- 怎样动态画线段
- 请教各路高手:网络上哪里有支持多用户的软件源代码(delphi)例子下载啊??
- 兄弟有难!大家都来谈谈!
- 用注册表控制使用次数的问题。统计次数的整形变量怎么才能累计相加吖,在线,立刻给分
- 有一个delphi写的程序的exe文件,请问如何将它的英文菜单变成中文?
- 高分请教~~开发过超市进销存软件的~~请进~~~up有分
- 关于条形码问题,有分。
- 急救:关于TCustomWinSocket
- Tchart的曲线太恶心,如何显示漂亮点?
- “多步操作产生错误,请检查每一步的状态值”是如何引起的???
- 为什么没有createwindow却可以响应windows的消息呢?
你需要为每个业务模块建立一个RDM,在客户端实现如下的调用机制----
Type
TServerType=(stSale,stBuy,stPay);
TServerInfo=record
ServerAddress:String;
ServerPort:Integer;
ServerGUID:String;
end;
var
ServerArray:array[TServerType] of TServerInfo=((ServerAddress:'192.168.0.1';
ServerPort:221;
ServerGUID:'{44ED6A79-DD3D-475E-ABA5-FD819B05BDF8}'),
(ServerAddress:'192.168.0.1';
ServerPort:221;
ServerGUID:'{C69807DC-6FE1-4C09-946D-6E361852B08B}'),
(ServerAddress:'192.168.0.2';
ServerPort:221;
ServerGUID:'{76345686-1FD7-4E58-A24E-CC75B735A0CA}')
);
function GetServerConnection(ServerType:TServerType):TSocketConnection;
begin
Result:=TSocketConnection.Create(nil);
try
with Result do
begin
Host:=ServerArray[ServerType].ServerAddress;
Port:=ServerArray[ServerType].ServerPort;
ServerGUID:=ServerArray[ServerType].ServerGUID;
Open;
end;
except
on E:Exception do
begin
Result.Free;
Result:=nil;
raise Exception.Create('不能创建“'+ServerArray[ServerType].ServerGUID+'”服务');
end;
end;
end;
///今后每当新建业务模块时只需调用这个函数产生对应服务连接即可,比如现在需要创建销售模块那么下面的调用会完成这个功能:
var
SaleConnection:TSocketConnection;
....
....
...
SaleConnection:=GetServerConnection(stSale);
.....
SaleConnection.AppServer.NewSaleTraffic;
.....
//相信我以上的代码能够给楼主带来一点帮助。