SelectA_Condition:=' Where '+ memo1.Text ;
   SelectA_sql:='exec '+Title+' ''*'','' '+ SelectA_Condition + '''  ' ;
   edit1.text:=SelectA_sql;
    F_Query.Close ;
    Seach.Show;      DM.CDS_SelectA.Close ;
      DM.CDS_SelectA.CommandText :=SelectA_sql;
      DM.CDS_SelectA.Open;      IF DM.CDS_SelectA.RecordCount >0 then
         Seach.Close
       else
      begin
        Application.MessageBox('无记录,请检查条件重新查询','查询',MB_ICONError);
        Seach.close;
      end;

这个执行后,F_Query不会close,seach这个窗体可以显示,结果也能查出来,但是查出来后seach也不close,
如果不要后面经色代码部份,F_Query就会close,Seach窗体也会显示出来
  

解决方案 »

  1.   

    红色代码部分是没问题的
    DM.CDS_SelectA.Close
    和F_Query不是一回事吧,不知道你说的是关闭哪一个
    不知道你说什么
      

  2.   

    感觉在红色代码部分,Seach一定会被Close的。因此我无法给你找出问题所在。顺便说一下,象红色部分那个判断语句,以后尽可能变一下写法,精简一下,比如改成这样是一样的效果:      IF DM.CDS_SelectA.RecordCount >0 then 
            Application.MessageBox('无记录,请检查条件重新查询','查询',MB_ICONError); 
         Seach.close; 
      

  3.   

    设置PacketRecords属性,例如100,少取点数据