入门问题,谢谢帮忙!(50分)

  • 主题发起人 主题发起人 lzc1_nuaa
  • 开始时间 开始时间
L

lzc1_nuaa

Unregistered / Unconfirmed
GUEST, unregistred user!
本人正在学习3层结构,我如何才能在客户端对中间层进行访问呢,比如我想输入查询条件,然后中间层返回查询结果,可以用delphi7/Demos/medias/brfcase作例子,在client输入查询条件后,中间层返回。
 
帮忙顶一下
 
正在学习3层结构,帮忙顶一下 !
我是菜鸟,我发言!哈哈哈
MSN:tonsonJ@hotmail.com
 
通过在服务器上写接口,可以完成很复杂的业务
服务器端:
在服务器端新建一个方法,定义输入输出参数(表记录参数用VARIANT类型)。若为输出参数,类型后必须加上星号,并定义为[in,out]
比如下面是一个中间层上的一个接口方法:
procedure TPublicServer.sGetData(const piSql: WideString;
var pvData: OleVariant;
var pvError: WideString);
begin
if AdoQuery1.Active then
AdoQuery1.Close;
try
with AdoQuery1do
begin
Sql.Clear;
Sql.Add(piSql);
Open;
end;
DataSetProvider1.DataSet := AdoQuery1;
   pvData := DataSetProvider1.Data;
DataSetProvider1.DataSet := nil;
except
pvError := '运行SQL语句:' + piSql + '时出错';
end;

end;

客户端:
调用方法:
var
iTmp: ITestServerDisp;
//接口名称,名字一般为:I+<服务器名>+Disp
begin
ITmp := ITestServerDisp (IDispatch(<DCOMConnection名>.GetServer));
ITmp.<接口方法名>(<参数1>,<参数2>……);
end;
客户端调用例子:
var
sError: WideString;
vData: OleVariant;
iTmp: IPublicServerDisp;
begin
ITmp := IPublicServerDisp(IDispatch(DataModule1.DCOMConnection.GetServer));
ITmp.sGetData('select * from dept',vData,sError);
ClientDataSet1.Data := vData;
end;

 
何必那么复杂呢,可以直接让ClientDataset通过连接控件和DatsetProvider控件建立联系。
 
同意楼上的看法,我作的也是这样的.
 
我要学习!关注!
我没有灌水啊?
 

Similar threads

后退
顶部