我的问题是这样的:
   客户端有一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语句返回的结果就不变了.如果把客户端注销,重新启动程序又恢复正常,过一段时间又回出现这种情况!不知道为何?请各位指教!

解决方案 »

  1.   

    这一段程序好象正确,可能是其它地方出了问题,检查一下其它的程序代码,配置等。
    可以单步调试一下,或者在程序中添加一个showmessage(trim(yy));等语句,检查一下
    执行的过程。
      

  2.   

    我这个是用来打印的,就这么一句话!直接从数据库调数据!而且在我本地执行的时候,不会出错!
    就是给车间用的时候,过一段时间会出现这种情况!
    另外再问一下,客户端的ClientDataSet和中间层连接时还需什么配置?
    写的详细点儿,谢谢!
      

  3.   

    sql语句看上去时没有问题的。同意 zhangheaaa(竹) 的看法, 在执行语句前看一下yy 是否正确
      

  4.   

    qryPrint.Close ;
    qryPrint.XMLData := '' ;//否则只要上一句SQL出错,以后返回的结果都是一样的
        qryPrint.Params.ParamByName('sinspfabid').AsString := trim(yy);
        qryPrint.Open ;
      showmessage(qryprint.fieldbyname('sinspfabid').AsString);//
      

  5.   

    To  little_five_gqw(小五) 
     你的意思是我的sql语句调用数据库中的数据可能会出错,一旦出错返回的结果就都是一样的了,对吗? 解决的办法就是在qryPrint.Close 语句之后, 把qryPrint.XMLData赋个空值!
     这样一来就可以了是吗?
     我去试试!
      

  6.   

    赫赫,问题解决了,谢谢各位的支持,尤其是 little_five_gqw(小五)