三层结构的奇怪问题,请高手帮忙(在线等待)!!(20分)

  • 主题发起人 主题发起人 yutaoku
  • 开始时间 开始时间
Y

yutaoku

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题是这样的:
客户端有一ClientDataSet命名为qryPrint,它所对应的中间层的
DataSetProvider连的是ADOQuery1,ADOQuery1的SQL为
select f.*,case when sdegree='米' then
'M' else
'Y' end as sUnit ,p.sCustPattnname
from inspfabmain f,PlanArrangemainPlan p
where f.sppono=p.sppono and f.sproductno=p.spatternno and sinspfabid=:sinspfabid
在客户端执行我此语句我是这样写的:
qryPrint.Close ;
qryPrint.Params.ParamByName('sinspfabid').AsString := trim(yy);
qryPrint.Open ;
showmessage(qryprint.fieldbyname('sinspfabid').AsString);//此句是为了观察返回结果是否正确.
yy是一变量,每次都不一样的.
可是当客户端执行一段时间之后(时间不定),showmessage语句返回的结果就不变了.如果把客户端注销,重新启动程序又恢复正常,过一段时间又回出现这种情况!不知道为何?请各位指教!
 
其实你可以有中间层建一个过程:
procedure dcom.过程(sinspfabid:variant,var data:variant);
var adoquery:Tadoquery
begin
try
adoquery:=Tadoquery.create(nil);
adoquery.connection:=adoconnection;
dsp.dataset:=adoquery;
with adoquerydo
begin
close;
sql.clear;
sql.add('select * from 表 where sinspbid='+''''+sinspbid+'''');
prepared;
open;
end;

data:=dsp.data;
finally
adoquery.free;
end;
end;

客户端;
var id,data:variant;
dcom.appsver.过程(id,data);
clientdataset1.data:=data;
clientdataset1.refresh
我没有调试过,你可以试一试
 
qryPrint.Close ;
qryPrint.Filter :='';
qryPrint.Filtered :=False;
每次调用时都要作如上处理,问题在于你没有执行该句操作(qryPrint.Params.Clear;)必须必须,试下应该可行。
 
qryPrint.Close ;
qryPrint.Filter :='';
qryPrint.Filtered :=False;
qryPrint.Params.Clear;
每次调用时都要作如上处理,问题在于你没有执行该句操作(qryPrint.Params.Clear;)必须必须,试下应该可行
 
谢谢zhou_an_jun
 
接受答案了.
 
后退
顶部