客户端调用服务器端接口的问题,急!!100分(100分)

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

cypl

Unregistered / Unconfirmed
GUEST, unregistred user!
正在做个三层结构,在应用服务器端加了个方法,有一个输入参数,一个输出参数,
在客户端调用,赋给输入参数,接受输出参数,但是运行后发现第一次输入了参数,
输出的正常,但第二次输入、第三次、第n 次,输出的结果和第一次一样,没变化,
最后发现每次要把连接服务器的 dcomconnection 关闭在打开,然后就正常了!

----服务器端----------------------------------------------
procedure Ttinet.getcl(const cphm: WideString;
out clbh: OleVariant);
var
s:string;
begin
s:='select * from cl where cphm='+''''+cphm+'''';
query.close;
query.sql.add(s);
query.open;
if query.IsEmpty then
clbh:='没有此编号'
else
clbh:=query['clbh'];
end;


-----客户端-------------------------------------------------
var
bh:olevariant;
begin
dm.dcomconnection1.Close;// 用 dcom 连接的关闭
dm.dcomconnection1.Open;// 然后在打开
dm.dcomconnection1.AppServer.getcl(edit1.text,bh);//输入参数
edit2.text:=bh;//取输出参数
---------------------------------------------------------
请教各位为什么要把 dcomconnection 关闭、打开呢?这样正常吗?你们都怎么做的?
 
高手快快帮帮忙!!!
 
----服务器端----------------------------------------------
procedure Ttinet.getcl(const cphm: WideString;
out clbh: OleVariant);
var
s:string;
begin
s:='select * from cl where cphm='+''''+cphm+'''';
query.close;
query.sql.clear();
query.sql.add(s);
query.open;
if query.IsEmpty then
clbh:='没有此编号'
else
clbh:=query['clbh'];
end;


-----客户端-------------------------------------------------
var
bh:olevariant;
begin
dm.dcomconnection1.Close;// 用 dcom 连接的关闭
dm.dcomconnection1.Open;// 然后在打开
dm.dcomconnection1.AppServer.getcl(edit1.text,bh);//输入参数
edit2.text:=bh;//取输出参数

最好使用
ClientData->Close();
ClientData->CommandText = Memo1->Lines->Text;
ClientData->Open();
方式。
 
luhongjun:
你的建议很好,我这是举个例子的,我主要是想知道的是为
什么要把 dcomconnection 关闭、打开呢?这是关键!!请多帮忙!!!
 
可能是因为
query1.sql.add(a);
之前没有clear
 
正常状况应该不需要关闭在打开
 
不需要把DCOMConnection关闭再打开的,你仔细看我给你的回复。在我建议
的前面我对你的程序也做了修改,你改一下,看看是否可以。
 
多人接受答案了。
 
后退
顶部